数据库 MCP 工具箱¶
数据库 MCP 工具箱 是一个用于数据库的开源 MCP 服务器。它在设计时就考虑了企业级和生产质量。 通过处理连接池、身份验证等复杂性,它使你能更轻松、快速和安全地开发工具。
Google 的智能体开发工具包 (ADK) 内置支持工具箱。如需了解有关入门 或配置工具箱的更多信息,请参见文档。

支持的数据源¶
MCP 工具箱为以下数据库和数据平台提供开箱即用的工具集:
Google Cloud¶
- BigQuery(包括用于 SQL 执行、模式发现和 AI 驱动的时间序列预测的工具)
- AlloyDB(与 PostgreSQL 兼容,包含标准查询和自然语言查询的工具)
- AlloyDB Admin
- Spanner(支持 GoogleSQL 和 PostgreSQL 方言)
- Cloud SQL(专门支持 适用于 PostgreSQL 的 Cloud SQL、适用于 MySQL 的 Cloud SQL 和 适用于 SQL Server 的 Cloud SQL)
- Cloud SQL Admin
- Firestore
- Bigtable
- Dataplex(用于数据发现和元数据搜索)
- Cloud Monitoring
关系型和 SQL 数据库¶
- PostgreSQL(通用)
- MySQL(通用)
- Microsoft SQL Server(通用)
- ClickHouse
- TiDB
- OceanBase
- Firebird
- SQLite
- YugabyteDB
NoSQL 和键值存储¶
图数据库¶
数据平台和联合¶
其他¶
配置和部署¶
工具箱是你自己部署和管理的开源服务器。有关部署和配置的更多说明,请参见官方工具箱文档:
为 ADK 安装客户端 SDK¶
ADK 依赖 toolbox-adk python 包来使用工具箱。在开始之前安装该包:
加载工具箱工具¶
一旦你的工具箱服务器配置好并开始运行,你可以使用 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_hook 和 post_hook 函数以在工具调用前后执行逻辑。
ADK 依赖 @toolbox-sdk/adk TS 包来使用工具箱。在开始之前安装
该包:
加载工具箱工具¶
一旦你的工具箱服务器配置好并开始运行,你可以使用 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 模块来使用工具箱。在开始之前安装该模块:
加载工具箱工具¶
一旦你的工具箱服务器配置好并开始运行,你就可以使用 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 从工具箱获取指标和跟踪