首页
学习
活动
专区
圈层
工具
发布
MCP广场 >详情页
数据库MCP工具箱2026-06-21296分享添加福利群:解决AI开发者的「MCP实战痛点」
数据库的MCP工具箱是一个开源的MCP服务器,旨在简化数据库相关工具的开发和集成。它通过处理连接池、身份验证等复杂性,帮助开发者更轻松、快速且安全地构建工具。工具箱支持多种框架,提供简化开发、增强性能和安全性、端到端可观察性等功能。它允许开发者通过自然语言查询数据库、自动化数据库管理、生成上下文感知的代码,并减少开发开销。工具箱目前处于测试阶段,支持通过二进制文件、容器镜像或源码安装,并提供了详细的配置和集成指南。
By googleapis
2026-06-21296
github
详情内容

logo

数据库MCP工具箱

googleapis%2Fgenai-toolbox | Trendshift

文档 Discord Medium Go报告卡

[!注意] 数据库MCP工具箱目前处于测试阶段,在首个稳定版本(v1.0)发布前可能会有重大变更。

数据库MCP工具箱是一个开源的数据库MCP服务器。它通过处理连接池、认证等复杂问题,让您能更轻松、快速且安全地开发工具。

本README提供简要概述。完整细节请参阅完整文档。

[!注意] 该解决方案最初名为"Gen AI数据库工具箱",因其开发早于MCP,后为与新添加的MCP兼容性保持一致而更名。

目录

为何选择工具箱?

工具箱帮助您构建让代理访问数据库数据的Gen AI工具。工具箱提供:

  • 简化开发:用不到10行代码将工具集成到代理,在多个代理或框架间复用工具,更轻松部署新版本工具
  • 更佳性能:连接池、认证等最佳实践
  • 增强安全:集成认证实现更安全的数据访问
  • 端到端可观测性:开箱即用的指标和追踪,内置OpenTelemetry支持

⚡ 用AI数据库助手提升工作流效率 ⚡

停止上下文切换,让AI助手成为真正的开发伙伴。通过用MCP工具箱连接IDE和数据库,您可以委托复杂耗时的数据库任务,从而更快构建并专注重要事务。这不仅是代码补全,更是让AI掌握处理完整开发生命周期所需的上下文。

节省时间的体现:

  • 自然语言查询:直接从IDE用自然语言交互数据。询问复杂问题如"2024年交付了多少订单,包含哪些商品?"而无需编写SQL
  • 自动化数据库管理:简单描述数据需求,让AI助手管理数据库。它能处理查询生成、表创建、索引添加等
  • 生成上下文感知代码:使AI助手能基于实时数据库架构生成应用代码和测试,确保生成的代码可直接使用
  • 大幅降低开发开销:显著减少手动设置和样板代码时间。MCP工具箱帮助简化冗长的数据库配置、重复代码和易错的模式迁移

了解如何使用MCP将AI工具(IDE)连接到工具箱

总体架构

工具箱位于应用编排框架和数据库之间,提供用于修改、分发或调用工具的控制平面。它通过集中存储和更新工具简化管理,让您能在代理和应用间共享工具,且无需重新部署应用即可更新工具。

架构

快速开始

快速入门:使用NPX运行工具箱

您可以直接用配置文件运行工具箱:

npx @toolbox-sdk/server --tools-file tools.yaml

这会用您的配置文件运行最新版工具箱服务器。

[!注意] 此方法仅适用于实验等非生产场景。任何生产环境请考虑安装服务器运行

安装服务器

最新版本请查看发布页面,根据您的操作系统和CPU架构选择以下说明。

二进制

安装工具箱二进制文件:

Linux (AMD64)

在Linux(AMD64)安装二进制:

# 其他版本见发布页
export VERSION=0.26.0
curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
macOS (Apple芯片)

在macOS(Apple芯片)安装二进制:

# 其他版本见发布页
export VERSION=0.26.0
curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/darwin/arm64/toolbox
chmod +x toolbox
macOS (Intel)

在macOS(Intel)安装二进制:

# 其他版本见发布页
export VERSION=0.26.0
curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/darwin/amd64/toolbox
chmod +x toolbox
Windows (命令提示符)

在Windows(命令提示符)安装二进制:

:: 其他版本见发布页
set VERSION=0.26.0
curl -o toolbox.exe "https://storage.googleapis.com/genai-toolbox/v%VERSION%/windows/amd64/toolbox.exe"
Windows (PowerShell)

在Windows(PowerShell)安装二进制:

# 其他版本见发布页
$VERSION = "0.26.0"
curl.exe -o toolbox.exe "https://storage.googleapis.com/genai-toolbox/v$VERSION/windows/amd64/toolbox.exe"
容器镜像 也可安装容器版:
# 其他版本见发布页
export VERSION=0.26.0
docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION
Homebrew

在macOS或Linux用Homebrew安装:

brew install mcp-toolbox
源码编译

从源码安装需确保已安装最新版Go,然后运行:

go install github.com/googleapis/genai-toolbox@v0.26.0
Gemini CLI扩展

安装MCP工具箱的Gemini CLI扩展:

gemini extensions install https://github.com/gemini-cli-extensions/mcp-toolbox

运行服务器

配置tools.yaml定义工具后,执行toolbox启动服务器:

二进制

运行二进制:

./toolbox --tools-file "tools.yaml"

ⓘ 注意
工具箱默认启用动态重载。禁用请用--disable-reload标志。

容器镜像

拉取容器镜像后运行:

export VERSION=0.24.0 # 使用您拉取的版本
docker run -p 5000:5000 \
-v $(pwd)/tools.yaml:/app/tools.yaml \
us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION \
--tools-file "/app/tools.yaml"

ⓘ 注意
-v将本地tools.yaml挂载到容器,-p将容器端口5000映射到主机端口5000

源码

从源码直接运行,导航到项目根目录后执行:

go run .

ⓘ 注意
此命令从源码运行项目,更适合开发和测试。它不会编译二进制到$GOPATH。如需编译二进制请参阅开发者文档

Homebrew

如通过Homebrew安装,toolbox二进制已在系统路径中。可用相同命令启动:

toolbox --tools-file "tools.yaml"
toolbox --tools-file "tools.yaml"
NPM

无需手动下载二进制文件即可直接运行Toolbox(需要Node.js环境):

npx @toolbox-sdk/server --tools-file tools.yaml
Gemini CLI

使用自然语言与您的自定义工具交互。查看 gemini-cli-extensions/mcp-toolbox 获取更多信息。

您可以使用toolbox help查看完整参数列表!要停止服务器,发送终止信号(大多数平台使用ctrl+c)。

关于部署到不同环境的详细文档,请查阅操作指南中的资源。

应用集成

当您的服务器启动运行后,可以将工具加载到应用程序中。以下是支持不同框架的客户端SDK列表:

Python (Github)
核心功能
  1. 安装Toolbox核心SDK

    pip install toolbox-core
    
  2. 加载工具:

    from toolbox_core import ToolboxClient
    
    # 将url更新为您的服务器地址
    async with ToolboxClient("http://127.0.0.1:5000") as client:
    
        # 这些工具可以传递给您的应用程序!
        tools = await client.load_toolset("toolset_name")
    

关于Toolbox核心SDK的详细使用说明,请参阅项目README

LangChain / LangGraph
  1. 安装Toolbox LangChain SDK

    pip install toolbox-langchain
    
  2. 加载工具:

    from toolbox_langchain import ToolboxClient
    
    # 将url更新为您的服务器地址
    async with ToolboxClient("http://127.0.0.1:5000") as client:
    
        # 这些工具可以传递给您的应用程序!
        tools = client.load_toolset()
    

    关于Toolbox LangChain SDK的详细使用说明,请参阅项目README

LlamaIndex
  1. 安装Toolbox Llamaindex SDK

    pip install toolbox-llamaindex
    
  2. 加载工具:

    from toolbox_llamaindex import ToolboxClient
    
    # 将url更新为您的服务器地址
    async with ToolboxClient("http://127.0.0.1:5000") as client:
    
        # 这些工具可以传递给您的应用程序!
        tools = client.load_toolset()
    

    关于Toolbox Llamaindex SDK的详细使用说明,请参阅项目README

Javascript/Typescript (Github)
核心功能
  1. 安装Toolbox核心SDK

    npm install @toolbox-sdk/core
    
  2. 加载工具:

    import { ToolboxClient } from '@toolbox-sdk/core';
    
    // 将url更新为您的服务器地址
    const URL = 'http://127.0.0.1:5000';
    let client = new ToolboxClient(URL);
    
    // 这些工具可以传递给您的应用程序!
    const tools = await client.loadToolset('toolsetName');
    

    关于Toolbox核心SDK的详细使用说明,请参阅项目README

LangChain / LangGraph
  1. 安装Toolbox核心SDK

    npm install @toolbox-sdk/core
    
  2. 加载工具:

    import { ToolboxClient } from '@toolbox-sdk/core';
    
    // 将url更新为您的服务器地址
    const URL = 'http://127.0.0.1:5000';
    let client = new ToolboxClient(URL);
    
    // 这些工具可以传递给您的应用程序!
    const toolboxTools = await client.loadToolset('toolsetName');
    
    // 定义工具基础信息:名称、描述、参数模式和核心逻辑
    const getTool = (toolboxTool) => tool(currTool, {
        name: toolboxTool.getName(),
        description: toolboxTool.getDescription(),
        schema: toolboxTool.getParamSchema()
    });
    
    // 在Langchain/Langraph应用中使用这些工具
    const tools = toolboxTools.map(getTool);
    
Genkit
  1. 安装Toolbox核心SDK

    npm install @toolbox-sdk/core
    
  2. 加载工具:

    import { ToolboxClient } from '@toolbox-sdk/core';
    import { genkit } from 'genkit';
    
    // 初始化genkit
    const ai = genkit({
        plugins: [
            googleAI({
                apiKey: process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY
            })
        ],
        model: googleAI.model('gemini-2.0-flash'),
    });
    
    // 将url更新为您的服务器地址
    const URL = 'http://127.0.0.1:5000';
    let client = new ToolboxClient(URL);
    
    // 这些工具可以传递给您的应用程序!
    const toolboxTools = await client.loadToolset('toolsetName');
    
    // 定义工具基础信息:名称、描述、参数模式和核心逻辑
    const getTool = (toolboxTool) => ai.defineTool({
        name: toolboxTool.getName(),
        description: toolboxTool.getDescription(),
        schema: toolboxTool.getParamSchema()
    }, toolboxTool)
    
    // 在Genkit应用中使用这些工具
    const tools = toolboxTools.map(getTool);
    
ADK
  1. 安装Toolbox ADK SDK

    npm install @toolbox-sdk/adk
    
  2. 加载工具:

    import { ToolboxClient } from '@toolbox-sdk/adk';
    
    // 将url更新为您的服务器地址
    const URL = 'http://127.0.0.1:5000';
    let client = new ToolboxClient(URL);
    
    // 这些工具可以传递给您的应用程序!
    const tools = await client.loadToolset('toolsetName');
    

    关于Toolbox ADK SDK的详细使用说明,请参阅项目README

Go (Github)
核心功能
  1. 安装Toolbox Go SDK

    go get github.com/googleapis/mcp-toolbox-sdk-go
    
  2. 加载工具:

    package main
    
    import (
      "github.com/googleapis/mcp-toolbox-sdk-go/core"
      "context"
    )
    
    func main() {
      // 请确保添加错误检查
      // 将url更新为您的服务器地址
      URL := "http://127.0.0.1:5000";
      ctx := context.Background()
    
      client, err := core.NewToolboxClient(URL)
    
      // 框架无关的工具
      tools, err := client.LoadToolset("toolsetName", ctx)
    }
    

    关于Toolbox Go SDK的详细使用说明,请参阅项目README

LangChain Go
  1. 安装Toolbox Go SDK

    go get github.com/googleapis/mcp-toolbox-sdk-go
    
  2. 加载工具:

    package main
    
    import (
      "context"
      "encoding/json"
    
      "github.com/googleapis/mcp-toolbox-sdk-go/core"
      "github.com/tmc/langchaingo/llms"
    )
    
    func main() {
      // 请确保添加错误检查
      // 将url更新为您的服务器地址
      URL := "http://127.0.0.1:5000"
      ctx := context.Background()
    
      client, err := core.NewToolboxClient(URL)
    
      // 框架无关的工具
      tool, err := client.LoadTool("toolName", ctx)
    
      // 获取工具的输入模式
      inputschema, err := tool.InputSchema()
    
      var paramsSchema map[string]any
      _ = json.Unmarshal(inputschema, &paramsSchema)
    
      // 在LangChainGo中使用此工具
      langChainTool := llms.Tool{
        Type: "function",
        Function: &llms.FunctionDefinition{
          Name:        tool.Name(),
          Description: tool.Description(),
          Parameters:  paramsSchema,
        },
      }
    }
    
    
Genkit
  1. 安装Toolbox Go SDK

    go get github.com/googleapis/mcp-toolbox-sdk-go
    
  2. 加载工具:

    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() {
  // 请确保添加错误检查
  // 将url更新为指向您的服务器
  URL := "http://127.0.0.1:5000"
  ctx := context.Background()
  g := genkit.Init(ctx)

  client, err := core.NewToolboxClient(URL)

  // 框架无关的工具
  tool, err := client.LoadTool("toolName", ctx)

  // 使用tbgenkit包转换工具
  // 将此工具与Genkit Go一起使用
  genkitTool, err := tbgenkit.ToGenkitTool(tool, g)
  if err != nil {
    log.Fatalf("工具转换失败: %v\n", err)
  }
  log.Printf("工具转换成功: %s", genkitTool.Name())
}
Go GenAI
  1. 安装Toolbox Go SDK:

    go get github.com/googleapis/mcp-toolbox-sdk-go
    
  2. 加载工具:

    package main
    
    import (
      "context"
      "encoding/json"
    
      "github.com/googleapis/mcp-toolbox-sdk-go/core"
      "google.golang.org/genai"
    )
    
    func main() {
      // 请确保添加错误检查
      // 将url更新为指向您的服务器
      URL := "http://127.0.0.1:5000"
      ctx := context.Background()
    
      client, err := core.NewToolboxClient(URL)
    
      // 框架无关的工具
      tool, err := client.LoadTool("toolName", ctx)
    
      // 获取工具的输入模式
      inputschema, err := tool.InputSchema()
    
      var schema *genai.Schema
      _ = json.Unmarshal(inputschema, &schema)
    
      funcDeclaration := &genai.FunctionDeclaration{
        Name:        tool.Name(),
        Description: tool.Description(),
        Parameters:  schema,
      }
    
      // 将此工具与Go GenAI一起使用
      genAITool := &genai.Tool{
        FunctionDeclarations: []*genai.FunctionDeclaration{funcDeclaration},
      }
    }
    
OpenAI Go
  1. 安装Toolbox Go SDK:

    go get github.com/googleapis/mcp-toolbox-sdk-go
    
  2. 加载工具:

    package main
    
    import (
      "context"
      "encoding/json"
    
      "github.com/googleapis/mcp-toolbox-sdk-go/core"
      openai "github.com/openai/openai-go"
    )
    
    func main() {
      // 请确保添加错误检查
      // 将url更新为指向您的服务器
      URL := "http://127.0.0.1:5000"
      ctx := context.Background()
    
      client, err := core.NewToolboxClient(URL)
    
      // 框架无关的工具
      tool, err := client.LoadTool("toolName", ctx)
    
      // 获取工具的输入模式
      inputschema, err := tool.InputSchema()
    
      var paramsSchema openai.FunctionParameters
      _ = json.Unmarshal(inputschema, &paramsSchema)
    
      // 将此工具与OpenAI Go一起使用
      openAITool := openai.ChatCompletionToolParam{
        Function: openai.FunctionDefinitionParam{
          Name:        tool.Name(),
          Description: openai.String(tool.Description()),
          Parameters:  paramsSchema,
        },
      }
    
    }
    
ADK Go
  1. 安装Toolbox Go SDK:

    go get github.com/googleapis/mcp-toolbox-sdk-go
    
  2. 加载工具:

    package main
    
    import (
      "github.com/googleapis/mcp-toolbox-sdk-go/tbadk"
      "context"
    )
    
    func main() {
      // 请确保添加错误检查
      // 将url更新为指向您的服务器
      URL := "http://127.0.0.1:5000"
      ctx := context.Background()
      client, err := tbadk.NewToolboxClient(URL)
      if err != nil {
        return fmt.Sprintln("无法启动Toolbox客户端", err)
      }
    
      // 将此工具与ADK Go一起使用
      tool, err := client.LoadTool("toolName", ctx)
      if err != nil {
        return fmt.Sprintln("无法加载Toolbox工具", err)
      }
    }
    

    有关使用Toolbox Go SDK的更详细说明,请参阅 项目README

将Toolbox与Gemini CLI扩展一起使用

Gemini CLI扩展提供了直接从命令行与数据源交互的工具。以下是基于Toolbox构建的Gemini CLI扩展列表。它们允许您通过预定义或自定义工具使用自然语言与数据源交互。点击链接查看详细的使用说明。

要将自定义工具与Gemini CLI一起使用:

要将预构建工具与Gemini CLI一起使用:

配置

配置Toolbox的主要方式是通过tools.yaml文件。如果有多个文件,可以使用--tools-file tools.yaml标志告诉toolbox加载哪个文件。

您可以在资源中找到所有资源类型的详细参考文档。

数据源

tools.yamlsources部分定义了Toolbox应有权访问的数据源。大多数工具至少需要一个数据源来执行。

kind: sources
name: my-pg-source
type: postgres
host: 127.0.0.1
port: 5432
database: toolbox_db
user: toolbox_user
password: my-password

有关配置不同类型数据源的更多详细信息,请参阅数据源。

工具

tools.yamltools部分定义了代理可以采取的操作:工具的类型、影响的源、使用的参数等。

kind: tools
name: search-hotels-by-name
type: postgres-sql
source: my-pg-source
description: 根据名称搜索酒店。
parameters:
  - name: name
    type: string
    description: 酒店名称。
statement: SELECT * FROM hotels WHERE name ILIKE '%' || $1 || '%';

有关配置不同类型工具的更多详细信息,请参阅工具。

工具集

tools.yamltoolsets部分允许您定义要一起加载的工具组。这对于基于代理或应用程序定义不同的组非常有用。

toolsets:
    my_first_toolset:
        - my_first_tool
        - my_second_tool
    my_second_toolset:
        - my_second_tool
        - my_third_tool

可以按名称加载工具集:

# 这将加载所有工具
all_tools = client.load_toolset()

# 这将仅加载'my_second_toolset'中列出的工具
my_second_toolset = client.load_toolset("my_second_toolset")

提示

tools.yamlprompts部分定义了可用于与LLM交互的提示。

prompts:
  code_review:
    description: "要求LLM分析代码质量并提出改进建议。"
    messages:
      - content: "请审查以下代码的质量、正确性和潜在改进:\n\n{{.code}}"
    arguments:
      - name: "code"
        description: "要审查的代码"

有关配置提示的更多详细信息,请参阅提示。

版本控制

本项目使用语义化版本控制主版本号.次版本号.修订号)。由于项目处于预发布阶段(版本0.x.y),我们遵循初始开发的标准约定:

1.0.0之前的版本控制

当主版本号为0时,公共API应视为不稳定。版本将按以下方式递增:

  • 0.次版本号.修订号:当我们添加新功能或进行破坏性、不兼容的API更改时,次版本号递增。
  • 0.次版本号.修订号:对于向后兼容的错误修复,修订号递增。

1.0.0之后的版本控制

项目达到稳定的1.0.0版本后,版本号**主版本号.次版本号.修订号**将遵循更常见的约定:

  • 主版本号:不兼容的API更改时递增。
  • 次版本号:新增向后兼容的功能时递增。
  • 修订号:向后兼容的错误修复时递增。

这适用于与Toolbox相关的CLI、与官方SDK的交互以及tools.yaml文件中的定义。

贡献

欢迎贡献代码。请先阅读贡献指南了解如何参与。

请注意,本项目采用贡献者行为准则。参与本项目即表示您同意遵守相关条款。详见 贡献者行为准则获取更多信息。

社区

加入我们的Discord社区,与开发者们直接交流!

(注:根据中文阅读习惯调整了部分表述,如将"get started"译为"了解如何参与"更符合技术文档语境;"discord community"采用官方中文译名"Discord社区";保留所有超链接和专有名词的原文格式)

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档