MCP Toolbox for Databases
官方专注于为数据库提供简单、快速且安全的工具的开源MCP服务器。
你可以用 Toolbox For Databases MCP 做什么?
- 探索数据库架构 — 让 AI 助手使用
list_tables等预置工具列出表并检查架构详情。 - 用自然语言运行 SQL 查询 — 通过
execute_sql以对话方式查询数据,无需编写样板连接代码。 - 即时连接受支持的数据库 — 通过
mcp.json或claude_desktop_config.json将 MCP 客户端指向 PostgreSQL、BigQuery、MySQL、Spanner 或 AlloyDB 等数据库。 - 定义自定义工具 — 在
tools.yaml文件中为生产代理配置结构化查询、语义搜索和 NL2SQL 工具。 - 将工具分组为工具集 — 使用配置中的
toolsets部分,为每个代理或应用加载特定的工具组。
文档
MCP Toolbox for Databases 是一个开源的模型上下文协议(MCP)服务器,可将你的 AI 智能体、IDE 和应用程序直接连接到企业数据库。
它具有双重用途:
- 开箱即用的 MCP 服务器(构建时): 使用我们预构建的通用工具,即可将 Gemini CLI、Google Antigravity、Claude Code、Codex 或其他 MCP 客户端即时连接到你的数据库。无需编写样板代码,即可与数据对话、探索 schema 并生成代码。
- 自定义工具框架(运行时): 一个健壮的框架,可为你的生产智能体构建专用且高度安全的 AI 工具。安全、轻松地定义结构化查询、语义搜索和 NL2SQL 能力。
本 README 提供了简要概述。如需全面了解详细信息,请参阅完整文档。
[!IMPORTANT]
仓库名称更新:genai-toolbox仓库已正式更名为mcp-toolbox。为确保你的本地环境反映新名称,你可以更新远程仓库:git remote set-url origin https://github.com/googleapis/mcp-toolbox.git
[!NOTE] 此解决方案最初命名为“Gen AI Toolbox for Databases”(github.com/googleapis/genai-toolbox),因为其初始开发早于 MCP,但后来为与 MCP 兼容性保持一致而更名。
目录
为什么选择 MCP Toolbox?
- 开箱即用的数据库访问: 预构建的通用工具可直接从你的 IDE 或 CLI 进行即时数据探索(例如
list_tables、execute_sql)。 - 自定义工具框架: 使用你自己的预定义逻辑构建生产就绪的工具,通过受限访问、结构化查询和语义搜索确保安全性。
- 简化开发: 在不到 10 行代码内将工具集成到你的智能体开发工具包(ADK)、LangChain、LlamaIndex 或自定义智能体中。
- 更佳性能: 开箱即用地处理连接池、集成认证(IAM)和端到端可观测性(OpenTelemetry)。
- 增强安全性:集成认证,更安全地访问你的数据。
- 端到端可观测性:开箱即用的指标和追踪,内置对 OpenTelemetry 的支持。
快速开始:预构建工具
告别上下文切换,让你的 AI 助手成为真正的共同开发者。通过 MCP Toolbox 将你的 IDE 连接到数据库,你可以用自然语言查询数据、自动化 schema 发现和管理,并生成感知数据库的代码。
你可以通过配置 MCP 服务器,在任何兼容 MCP 的 IDE 或客户端(例如 Gemini CLI、Google Antigravity、Claude Code、Codex 等)中使用 Toolbox。
预构建工具也可通过 Google Antigravity MCP Store 便捷获取,只需简单点击即可安装。
-
将以下内容添加到客户端的 MCP 配置文件中(通常为
mcp.json或claude_desktop_config.json):{ "mcpServers": { "toolbox-postgres": { "command": "npx", "args": [ "-y", "@toolbox-sdk/server", "--prebuilt=postgres", "--stdio" ] } } } -
设置适当的环境变量以进行连接,请参阅预构建工具参考。
当你使用 --prebuilt=<database> 标志运行 Toolbox 时,即可立即获得与该数据库交互的标准工具。你还可以使用 --prebuilt=<database>/<toolset> 语法指定特定的工具集(例如,--prebuilt=postgres/data 仅加载 SQL 工具)。
目前支持的数据库包括:
- Google Cloud: AlloyDB、BigQuery、Cloud SQL(PostgreSQL、MySQL、SQL Server)、Spanner、Firestore、Knowledge Catalog(原名为 Dataplex)。
- 其他数据库: PostgreSQL、MySQL、MariaDB、SQL Server、Oracle、MongoDB、Redis、Elasticsearch、CockroachDB、ClickHouse、Couchbase、Neo4j、Snowflake、Trino 等。
如需了解所有受支持数据库中可用工具的完整列表及其功能,请参阅预构建工具参考。
有关 Docker 或二进制文件等不同执行方式,请参阅安装并运行 Toolbox 服务器部分。
[!TIP] 对于寻求托管解决方案的用户,Google Cloud MCP Servers 提供带有预构建工具的托管 MCP 体验;你可以在此了解相关差异。
快速开始:自定义工具
Toolbox 也可用作自定义工具的框架。
配置 Toolbox 的主要方式是通过 tools.yaml 文件。如果你
有多个文件,可以使用 --config tools.yaml 标志告诉 Toolbox 加载哪个文件。
你可以在资源中找到所有资源类型的更详细参考文档。
数据源
tools.yaml 中的 sources 部分定义了你的
Toolbox 应有权访问哪些数据源。大多数工具至少会有一个
用于执行的数据源。
kind: source
name: my-pg-source
type: postgres
host: 127.0.0.1
port: 5432
database: toolbox_db
user: toolbox_user
password: my-password
有关配置不同类型数据源的更多详细信息,请参阅 数据源。
工具
tools.yaml 中的 tools 部分定义了智能体可以执行的操作:它
是什么类型的工具、影响哪些数据源、使用什么参数等。
kind: tool
name: search-hotels-by-name
type: postgres-sql
source: my-pg-source
description: Search for hotels based on name.
parameters:
- name: name
type: string
description: The name of the hotel.
statement: SELECT * FROM hotels WHERE name ILIKE '%' || $1 || '%';
有关配置不同类型工具的更多详细信息,请参阅 工具。
工具集
tools.yaml 中的 toolsets 部分允许你定义希望
能够一起加载的工具组。这对于根据智能体或应用程序
定义不同的组非常有用。
kind: toolset
name: my_first_toolset
tools:
- my_first_tool
- my_second_tool
---
kind: toolset
name: my_second_toolset
tools:
- my_second_tool
- my_third_tool
提示词
tools.yaml 中的 prompts 部分定义了可用于
与 LLM 交互的提示词。
kind: prompt
name: code_review
description: "Asks the LLM to analyze code quality and suggest improvements."
messages:
- content: >
Please review the following code for quality, correctness,
and potential improvements: \n\n{{.code}}
arguments:
- name: "code"
description: "The code to review"
有关配置提示词的更多详细信息,请参阅 提示词。
资源
tools.yaml 中的 resources 和 resourceTemplates 部分定义了只读
内容、文件或参数化目录树,MCP 客户端可以发现并检索它们:
kind: resource
name: database_schema_ddl
type: text
description: "Core table definitions and constraints."
mimeType: text/x-sql
text: |
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL
);
---
kind: resource
name: database_schema
type: file
description: "PostgreSQL schema definition."
path: "./schema.sql"
---
kind: resourceTemplate
name: server_logs
type: file
description: "Application log files."
uriTemplate: "file:///var/log/{path}"
allowedPaths:
- "/var/log"
有关配置资源和资源模板的更多详细信息,请参阅 资源。
安装并运行 Toolbox 服务器
你可以直接使用配置文件运行 Toolbox:
npx @toolbox-sdk/server --config tools.yaml
这会使用你的配置文件运行最新版本的 Toolbox 服务器。
[!NOTE] 此方法针对便利性而非性能进行了优化。 如需更标准、更可靠的安装方式,请使用二进制文件 或容器镜像,如安装并运行 Toolbox 服务器中所述。
安装 Toolbox
如需获取最新版本,请查看发布页面,并按照 以下适用于你的操作系统和 CPU 架构的说明操作。
二进制文件
要将 Toolbox 安装为二进制文件:
Linux(AMD64)
要在 Linux(AMD64)上将 Toolbox 安装为二进制文件:
# see releases page for other versions export VERSION=1.15.0 curl -L -o toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/linux/amd64/toolbox chmod +x toolboxmacOS(Apple Silicon)
要在 macOS(Apple Silicon)上将 Toolbox 安装为二进制文件:
# see releases page for other versions export VERSION=1.15.0 curl -L -o toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/darwin/arm64/toolbox chmod +x toolboxmacOS(Intel)
要在 macOS(Intel)上将 Toolbox 安装为二进制文件:
# see releases page for other versions export VERSION=1.15.0 curl -L -o toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/darwin/amd64/toolbox chmod +x toolboxWindows(命令提示符)
要在 Windows(命令提示符)上将 Toolbox 安装为二进制文件:
:: see releases page for other versions set VERSION=1.15.0 curl -o toolbox.exe "https://storage.googleapis.com/mcp-toolbox-for-databases/v%VERSION%/windows/amd64/toolbox.exe"Windows(PowerShell)
要在 Windows(PowerShell)上将 Toolbox 安装为二进制文件:
# see releases page for other versions $VERSION = "1.15.0" curl.exe -o toolbox.exe "https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/windows/amd64/toolbox.exe"Windows ARM64(命令提示符)
要在 Windows ARM64(命令提示符)上将 Toolbox 安装为二进制文件:
:: see releases page for other versions set VERSION=1.15.0 curl -o toolbox.exe "https://storage.googleapis.com/mcp-toolbox-for-databases/v%VERSION%/windows/arm64/toolbox.exe"Windows ARM64(PowerShell)
要在 Windows ARM64(PowerShell)上将 Toolbox 安装为二进制文件:
# see releases page for other versions $VERSION = "1.15.0" curl.exe -o toolbox.exe "https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/windows/arm64/toolbox.exe"
容器镜像
你也可以将 Toolbox 安装为容器:# see releases page for other versions
export VERSION=1.15.0
docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION
Homebrew
要在 macOS 或 Linux 上使用 Homebrew 安装 Toolbox:
brew install mcp-toolbox
Gemini CLI
查看 [Gemini CLI 扩展](https://geminicli.com/extensions/),将适用于 AlloyDB、BigQuery 和 Cloud SQL 等特定数据库的预构建工具直接安装到 Gemini CLI 中。# Install Gemini CLI
npm install -g @google/gemini-cli
# Install the extension
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgres
# Run Gemini CLI
gemini
通过 Gemini CLI 使用自然语言与你的自定义工具交互。
# Install the extension
gemini extensions install https://github.com/gemini-cli-extensions/mcp-toolbox
运行 Toolbox
配置一个 tools.yaml 来定义你的工具,然后
执行 toolbox 以启动服务器:
二进制文件
要从二进制文件运行 Toolbox:
./toolbox --config "tools.yaml"
ⓘ 注意 Toolbox 默认启用动态重载。要禁用,请使用
--disable-reload标志。
容器镜像
要在拉取容器镜像后运行服务器:
export VERSION=0.24.0 # Use the version you pulled
docker run -p 5000:5000 \
-v $(pwd)/tools.yaml:/app/tools.yaml \
us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION \
--config "/app/tools.yaml"
ⓘ 注意
-v标志会将你本地的tools.yaml挂载到容器中,而-p会将 容器的端口5000映射到宿主机的端口5000。
源码
要直接从源码运行服务器,请导航到项目根目录 并运行:
go run .
ⓘ 注意 此命令从源码运行项目,更适合开发和 测试。它不会将二进制文件编译到你的
$GOPATH中。如果你想 改为编译二进制文件,请参阅开发者 文档。
Homebrew
如果你使用 Homebrew 安装了 Toolbox,那么 toolbox
二进制文件已在你的系统路径中可用。你可以使用相同的命令启动服务器:
toolbox --config "tools.yaml"
NPM
要直接运行 Toolbox 而无需手动下载二进制文件(需要 Node.js):
npx @toolbox-sdk/server --config tools.yaml
Gemini CLI
安装 [Gemini CLI 扩展](https://geminicli.com/extensions/)后,预构建的工具将在使用期间可用。# Run Gemini CLI
gemini
# List extensions
/extensions list
# List MCP servers
/mcp list
你可以使用 toolbox help 查看完整的标志列表!要停止服务器,请发送
终止信号(在大多数平台上为 ctrl+c)。
有关部署到不同环境的更详细文档,请查看 部署 Toolbox 部分中的资源
连接到 Toolbox
一旦你的 Toolbox 服务器启动并运行,你就可以将工具加载到你的 MCP 兼容客户端或 应用程序中。
MCP 客户端
将以下配置添加到你的 MCP 客户端配置中:
{
"mcpServers": {
"toolbox": {
"type": "http",
"url": "http://127.0.0.1:5000/mcp",
}
}
}
如果你想连接到特定的工具集,请将 url 替换为 "http://127.0.0.1:5000/mcp/{toolset_name}"。
Toolbox SDK:与你的应用程序集成
Toolbox 客户端 SDK 提供了易于使用的构建块和高级功能,用于将你的自定义应用程序连接到 MCP Toolbox 服务器。以下是用于各种框架的客户端 SDK 列表:
Python(Github)
核心
安装 Toolbox Core SDK:
pip install toolbox-core加载工具:
from toolbox_core import ToolboxClient # update the url to point to your server async with ToolboxClient("http://127.0.0.1:5000") as client: # these tools can be passed to your application! tools = await client.load_toolset("toolset_name")有关使用 Toolbox Core SDK 的更详细说明,请参阅 项目的 README。
LangChain / LangGraph
pip install toolbox-langchain加载工具:
from toolbox_langchain import ToolboxClient # update the url to point to your server async with ToolboxClient("http://127.0.0.1:5000") as client: # these tools can be passed to your application! tools = client.load_toolset()有关使用 Toolbox LangChain SDK 的更详细说明,请参阅 项目的 README。
LlamaIndex
pip install toolbox-llamaindex加载工具:
from toolbox_llamaindex import ToolboxClient # update the url to point to your server async with ToolboxClient("http://127.0.0.1:5000") as client: # these tools can be passed to your application! tools = client.load_toolset()有关使用 Toolbox Llamaindex SDK 的更详细说明,请参阅 项目的 README。
Javascript/Typescript(Github)
核心
安装 Toolbox Core SDK:
npm install @toolbox-sdk/core加载工具:
import { ToolboxClient } from '@toolbox-sdk/core'; // update the url to point to your server const URL = 'http://127.0.0.1:5000'; let client = new ToolboxClient(URL); // these tools can be passed to your application! const tools = await client.loadToolset('toolsetName');有关使用 Toolbox Core SDK 的更详细说明,请参阅 项目的 README。
LangChain / LangGraph
安装 Toolbox Core SDK:
npm install @toolbox-sdk/core加载工具:
import { ToolboxClient } from '@toolbox-sdk/core'; // update the url to point to your server const URL = 'http://127.0.0.1:5000'; let client = new ToolboxClient(URL); // these tools can be passed to your application! const toolboxTools = await client.loadToolset('toolsetName'); // Define the basics of the tool: name, description, schema and core logic const getTool = (toolboxTool) => tool(currTool, { name: toolboxTool.getName(), description: toolboxTool.getDescription(), schema: toolboxTool.getParamSchema() }); // Use these tools in your Langchain/Langraph applications const tools = toolboxTools.map(getTool);Genkit
安装 Toolbox Core SDK:
npm install @toolbox-sdk/core加载工具:
import { ToolboxClient } from '@toolbox-sdk/core'; import { genkit } from 'genkit'; // Initialise genkit const ai = genkit({ plugins: [ googleAI({ apiKey: process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY }) ], model: googleAI.model('gemini-2.0-flash'), }); // update the url to point to your server const URL = 'http://127.0.0.1:5000'; let client = new ToolboxClient(URL); // these tools can be passed to your application! const toolboxTools = await client.loadToolset('toolsetName'); // Define the basics of the tool: name, description, schema and core logic const getTool = (toolboxTool) => ai.defineTool({ name: toolboxTool.getName(), description: toolboxTool.getDescription(), schema: toolboxTool.getParamSchema() }, toolboxTool) // Use these tools in your Genkit applications const tools = toolboxTools.map(getTool);ADK
安装 Toolbox ADK SDK:
npm install @toolbox-sdk/adk加载工具:
import { ToolboxClient } from '@toolbox-sdk/adk'; // update the url to point to your server const URL = 'http://127.0.0.1:5000'; let client = new ToolboxClient(URL); // these tools can be passed to your application! const tools = await client.loadToolset('toolsetName');有关使用 Toolbox ADK SDK 的更详细说明,请参阅 项目的 README。
Go(Github)
核心
安装 Toolbox Go SDK:
go get github.com/googleapis/mcp-toolbox-sdk-go加载工具:
package main import ( "github.com/googleapis/mcp-toolbox-sdk-go/core" "context" ) func main() { // Make sure to add the error checks // update the url to point to your server URL := "http://127.0.0.1:5000"; ctx := context.Background() client, err := core.NewToolboxClient(URL) // Framework agnostic tools tools, err := client.LoadToolset("toolsetName", ctx) }有关使用 Toolbox Go SDK 的更详细说明,请参阅 项目的 README。
LangChain Go
安装 Toolbox Go SDK:
go get github.com/googleapis/mcp-toolbox-sdk-go加载工具:
package main import ( "context" "encoding/json" "github.com/googleapis/mcp-toolbox-sdk-go/core" "github.com/tmc/langchaingo/llms" ) func main() { // Make sure to add the error checks // update the url to point to your server URL := "http://127.0.0.1:5000" ctx := context.Background() client, err := core.NewToolboxClient(URL) // Framework agnostic tool tool, err := client.LoadTool("toolName", ctx) // Fetch the tool's input schema inputschema, err := tool.InputSchema() var paramsSchema map[string]any _ = json.Unmarshal(inputschema, ¶msSchema) // Use this tool with LangChainGo langChainTool := llms.Tool{ Type: "function", Function: &llms.FunctionDefinition{ Name: tool.Name(), Description: tool.Description(), Parameters: paramsSchema, }, } }Genkit
安装 Toolbox Go SDK:
go get github.com/googleapis/mcp-toolbox-sdk-go加载工具:
package main import ( "context" "log" "github.com/firebase/genkit/go/genkit" "github.com/googleapis/mcp-toolbox-sdk-go/core" "github.com/googleapis/mcp-toolbox-sdk-go/tbgenkit" ) func main() { // Make sure to add the error checks // Update the url to point to your server URL := "http://127.0.0.1:5000" ctx := context.Background() g := genkit.Init(ctx) client, err := core.NewToolboxClient(URL) // Framework agnostic tool tool, err := client.LoadTool("toolName", ctx) // Convert the tool using the tbgenkit package // Use this tool with Genkit Go genkitTool, err := tbgenkit.ToGenkitTool(tool, g) if err != nil { log.Fatalf("Failed to convert tool: %v\n", err) } log.Printf("Successfully converted tool: %s", genkitTool.Name()) }Go GenAI
安装 Toolbox Go SDK:
go get github.com/googleapis/mcp-toolbox-sdk-go加载工具:
package main import ( "context" "encoding/json" "github.com/googleapis/mcp-toolbox-sdk-go/core" "google.golang.org/genai" ) func main() { // Make sure to add the error checks // Update the url to point to your server URL := "http://127.0.0.1:5000" ctx := context.Background() client, err := core.NewToolboxClient(URL) // Framework agnostic tool tool, err := client.LoadTool("toolName", ctx) // Fetch the tool's input schema inputschema, err := tool.InputSchema() var schema *genai.Schema _ = json.Unmarshal(inputschema, &schema) funcDeclaration := &genai.FunctionDeclaration{ Name: tool.Name(), Description: tool.Description(), Parameters: schema, } // Use this tool with Go GenAI genAITool := &genai.Tool{ FunctionDeclarations: []*genai.FunctionDeclaration{funcDeclaration}, } }OpenAI Go
安装 Toolbox Go SDK:
go get github.com/googleapis/mcp-toolbox-sdk-go加载工具:
package main import ( "context" "encoding/json" "github.com/googleapis/mcp-toolbox-sdk-go/core" openai "github.com/openai/openai-go" ) func main() { // Make sure to add the error checks // Update the url to point to your server URL := "http://127.0.0.1:5000" ctx := context.Background() client, err := core.NewToolboxClient(URL) // Framework agnostic tool tool, err := client.LoadTool("toolName", ctx) // Fetch the tool's input schema inputschema, err := tool.InputSchema() var paramsSchema openai.FunctionParameters _ = json.Unmarshal(inputschema, ¶msSchema) // Use this tool with OpenAI Go openAITool := openai.ChatCompletionToolParam{ Function: openai.FunctionDefinitionParam{ Name: tool.Name(), Description: openai.String(tool.Description()), Parameters: paramsSchema, }, } }ADK Go
安装 Toolbox Go SDK:
go get github.com/googleapis/mcp-toolbox-sdk-go加载工具:
package main import ( "github.com/googleapis/mcp-toolbox-sdk-go/tbadk" "context" ) func main() { // Make sure to add the error checks // Update the url to point to your server URL := "http://127.0.0.1:5000" ctx := context.Background() client, err := tbadk.NewToolboxClient(URL) if err != nil { return fmt.Sprintln("Could not start Toolbox Client", err) } // Use this tool with ADK Go tool, err := client.LoadTool("toolName", ctx) if err != nil { return fmt.Sprintln("Could not load Toolbox Tool", err) } }有关使用 Toolbox Go SDK 的更详细说明,请参阅 项目的 README。
附加功能
使用 Toolbox UI 测试工具
要启动 Toolbox 的交互式 UI,请使用 --ui 标志。这允许你使用
授权参数等功能来测试工具和工具集。要了解更多信息,
请访问 Toolbox UI。
./toolbox --ui
遥测
Toolbox 通过 OpenTelemetry 发出跟踪和指标。使用 --telemetry-otlp=<endpoint>
导出到任何兼容 OTLP 的后端,例如 Google Cloud Monitoring、Agnost AI 或
其他。有关详细信息,请参阅遥测文档。
生成 Agent Skills
skills-generate 命令允许你将 工具集 转换为与 Agent Skill 规范兼容的 Agent Skill。这对于将工具作为可移植的技能包分发非常有用。
toolbox --config tools.yaml skills-generate \
--name "my-skill" \
--toolset "my_toolset" \
--description "A skill containing multiple tools"
生成后,你可以将该技能安装到 Gemini CLI 中:
gemini skills install ./skills/my-skill
有关更多详细信息,请参阅生成技能指南。要通过 MCP 提供你已有的技能,请参阅通过 MCP 提供技能。
该仓库还提供了即用型 Agent Skills(例如维护者工作流)。有关目录和安装说明,请参阅 skills/。
版本管理
MCP Toolbox for Databases 遵循语义化版本控制。
公共 API 包括 Toolbox 服务器(CLI、配置清单和预构建工具集)以及客户端 SDK。
- 主版本号 在发生破坏性变更时递增,例如不兼容的 CLI 或清单变更。
- 次版本号 在添加新功能时递增,包括对预构建工具集或测试版功能的修改。
- 补丁版本号 在向后兼容的错误修复时递增。
有关更多详细信息,包括我们的容器标记策略,请参阅我们的完整版本管理策略。
贡献
欢迎贡献。请参阅 CONTRIBUTING 指南以开始。
有关为 Toolbox 本身开发设置环境的技术细节,请参阅 DEVELOPER 指南。
请注意,本项目发布时附带贡献者行为准则。通过参与本项目,你同意遵守其条款。有关更多信息,请参阅贡献者行为准则。
社区
加入我们的 Discord 社区与我们的开发者交流!
