Skip to content

数据库 MCP 工具箱

Supported in ADKPythonTypescriptGo

数据库 MCP 工具箱 是一个用于数据库的开源 MCP 服务器。它在设计时就考虑了企业级和生产质量。 通过处理连接池、身份验证等复杂性,它使你能更轻松、快速和安全地开发工具。

Google 的智能体开发工具包 (ADK) 内置支持工具箱。如需了解有关入门配置工具箱的更多信息,请参见文档

GenAI 工具箱

支持的数据源

MCP 工具箱为以下数据库和数据平台提供开箱即用的工具集:

Google Cloud

关系型和 SQL 数据库

NoSQL 和键值存储

图数据库

  • Neo4j(包含 Cypher 查询和模式检查的工具)
  • Dgraph

数据平台和联合

  • Looker(用于通过 Looker API 运行 Looks、查询和构建仪表板)
  • Trino(用于跨多个源运行联合查询)

其他

配置和部署

工具箱是你自己部署和管理的开源服务器。有关部署和配置的更多说明,请参见官方工具箱文档:

为 ADK 安装客户端 SDK

ADK 依赖 toolbox-adk python 包来使用工具箱。在开始之前安装该包:

pip install google-adk[toolbox]

加载工具箱工具

一旦你的工具箱服务器配置好并开始运行,你可以使用 ADK 从你的服务器加载工具:

from google.adk.agents import Agent
from google.adk.tools.toolbox_toolset import ToolboxToolset

toolset = ToolboxToolset(
    server_url="http://127.0.0.1:5000"
)

root_agent = Agent(
    ...,
    tools=[toolset] # Provide the toolset to the Agent
)

身份验证

ToolboxToolset 支持各种身份验证策略,包括工作负载身份 (ADC)、用户身份 (OAuth2) 和 API 密钥。有关完整文档,请参阅 工具箱 ADK 身份验证指南

示例:工作负载身份 (ADC)

推荐用于 Cloud Run、GKE 或使用 gcloud auth login 的本地开发。

from google.adk.tools.toolbox_toolset import ToolboxToolset
from toolbox_adk import CredentialStrategy

# target_audience: 你的工具箱服务器的 URL
creds = CredentialStrategy.workload_identity(target_audience="<TOOLBOX_URL>")

toolset = ToolboxToolset(
    server_url="<TOOLBOX_URL>",
    credentials=creds
)

高级配置

你可以配置参数绑定、请求钩子和附加标头。有关详细信息,请参阅 工具箱 ADK 文档

参数绑定

全局绑定值到工具参数。这些值对模型隐藏。

toolset = ToolboxToolset(
    server_url="...",
    bound_params={
        "region": "us-central1",
        "api_key": lambda: get_api_key() # 可以是可调用对象
    }
)

使用钩子

附加 pre_hookpost_hook 函数以在工具调用前后执行逻辑。

async def log_start(context, args):
    print(f"Starting tool with args: {args}")

toolset = ToolboxToolset(
    server_url="...",
    pre_hook=log_start
)

ADK 依赖 @toolbox-sdk/adk TS 包来使用工具箱。在开始之前安装 该包:

npm install @toolbox-sdk/adk

加载工具箱工具

一旦你的工具箱服务器配置好并开始运行,你可以使用 ADK 从你的服务器加载工具:

import {InMemoryRunner, LlmAgent} from '@google/adk';
import {Content} from '@google/genai';
import {ToolboxClient} from '@toolbox-sdk/adk'

const toolboxClient = new ToolboxClient("http://127.0.0.1:5000");
const loadedTools = await toolboxClient.loadToolset();

export const rootAgent = new LlmAgent({
  name: 'weather_time_agent',
  model: 'gemini-2.5-flash',
  description:
    '用于回答有关城市时间和天气的智能体。',
  instruction:
    '你是一个有用的智能体,可以回答用户关于城市时间和天气的问题。',
  tools: loadedTools,
});

async function main() {
  const userId = 'test_user';
  const appName = rootAgent.name;
  const runner = new InMemoryRunner({agent: rootAgent, appName});
  const session = await runner.sessionService.createSession({
    appName,
    userId,
  });

  const prompt = '纽约的天气如何?还有时间?';
  const content: Content = {
    role: 'user',
    parts: [{text: prompt}],
  };
  console.log(content);
  for await (const e of runner.runAsync({
    userId,
    sessionId: session.id,
    newMessage: content,
  })) {
    if (e.content?.parts?.[0]?.text) {
      console.log(`${e.author}: ${JSON.stringify(e.content, null, 2)}`);
    }
  }
}

main().catch(console.error);

ADK 依赖 mcp-toolbox-sdk-go go 模块来使用工具箱。在开始之前安装该模块:

go get github.com/googleapis/mcp-toolbox-sdk-go

加载工具箱工具

一旦你的工具箱服务器配置好并开始运行,你就可以使用 ADK 从你的服务器加载工具:

package main

import (
    "context"
    "fmt"

    "github.com/googleapis/mcp-toolbox-sdk-go/tbadk"
    "google.golang.org/adk/agent/llmagent"
)

func main() {

  toolboxClient, err := tbadk.NewToolboxClient("https://127.0.0.1:5000")
    if err != nil {
        log.Fatalf("未能创建 MCP 工具箱客户端: %v", err)
    }

  // 加载一组特定的工具
  toolboxtools, err := toolboxClient.LoadToolset("my-toolset-name", ctx)
  if err != nil {
    return fmt.Sprintln("无法加载工具箱工具集", err)
  }

  toolsList := make([]tool.Tool, len(toolboxtools))
    for i := range toolboxtools {
      toolsList[i] = &toolboxtools[i]
    }

  llmagent, err := llmagent.New(llmagent.Config{
    ...,
    Tools:       toolsList,
  })

  // 加载单个工具
  tool, err := client.LoadTool("my-tool-name", ctx)
  if err != nil {
    return fmt.Sprintln("无法加载工具箱工具", err)
  }

  llmagent, err := llmagent.New(llmagent.Config{
    ...,
    Tools:       []tool.Tool{&toolboxtool},
  })
}

高级工具箱功能

工具箱有各种功能,可使为数据库开发 Gen AI 工具变得更容易。 如需更多信息,请阅读以下功能的更多内容:

  • 认证参数:自动将工具输入绑定到 OIDC 令牌中的值,使运行敏感查询变得更容易而不至于潜在地泄露数据
  • 授权调用:基于用户的认证令牌限制使用工具的访问权限
  • OpenTelemetry:使用 OpenTelemetry 从工具箱获取指标和跟踪