Skip to content

ADK 的数据库 MCP 工具箱工具

Supported in ADKPythonTypescriptGo

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

Google 的智能体开发套件 (ADK) 内置了对 MCP 工具箱的支持。有关入门指南配置 MCP 工具箱的更多信息,请参阅文档

MCP Toolbox for Databases

支持的数据源

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

Google Cloud

关系型和 SQL 数据库

NoSQL 和键值存储

图数据库

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

数据平台和联合

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

其他

配置和部署

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

为 ADK 安装客户端 SDK

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

pip install google-adk[toolbox]

加载 MCP 工具箱工具

一旦你的 MCP 工具箱服务器配置完毕并正常运行,你就可以使用 ADK 从你的服务器加载工具:

from google.adk 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] # 向智能体提供工具集
)

身份验证

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

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

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

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

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

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

高级配置

你可以配置参数绑定和额外的标头。有关详细信息,请参阅 MCP 工具箱 ADK 文档。例如,你可以将值绑定到工具参数。

Note

These values are hidden from the model.

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

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

npm install @toolbox-sdk/adk

加载 MCP 工具箱工具

一旦你的 MCP 工具箱服务器配置完毕并正常运行,你就可以使用 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 模块来使用 MCP 工具箱。在开始之前请先安装该模块:

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

加载 MCP 工具箱工具

一旦你的 MCP 工具箱服务器配置完毕并正常运行,你就可以使用 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("无法加载 MCP 工具箱工具集", 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("无法加载 MCP 工具箱工具", err)
  }

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

高级 MCP 工具箱功能

MCP 工具箱具有多种功能,可简化为数据库开发生成式 AI 工具的过程。要了解更多信息,请阅读以下功能的相关内容:

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