Skip to content

ADK 的数据库 MCP 工具箱工具

Supported in ADKPythonTypescriptGo

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

Google 的 Agent Development Kit (ADK) 内置了对 MCP 工具箱的支持。有关 开始使用配置 MCP 工具箱的更多信息,请参阅文档

MCP Toolbox for Databases

支持的数据源

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

Google Cloud

关系型和 SQL 数据库

NoSQL 和键值存储

图数据库

  • Neo4j (with tools for Cypher queries and schema inspection)
  • Dgraph

数据平台和联合

  • Looker (for running Looks, queries, and building dashboards via the Looker API)
  • Trino (for running federated queries across multiple sources)
  • Snowflake
  • MindsDB

其他

配置和部署

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 文档。例如,你可以将值绑定到工具参数。

注意

这些值对模型是隐藏的。

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-flash-latest',
  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 工具的过程。要了解更多信息,请阅读以下功能的相关内容:

  • Authenticated Parameters: bind tool inputs to values from OIDC tokens automatically, making it easy to run sensitive queries without potentially leaking data
  • Authorized Invocations: restrict access to use a tool based on the users Auth token
  • OpenTelemetry: get metrics and tracing from Toolbox with OpenTelemetry