在这里插入图片描述

Google MCP Toolbox for Databases 是一个开源的数据库 MCP 服务器。它能帮助你更轻松、快速且安全地开发工具,因为它处理了诸如连接池、身份验证等复杂问题。

为什么选择 Google MCP Toolbox for Databases?

Google MCP Toolbox for Databases可以帮助你构建生成式 AI 工具,让你的智能体能够访问数据库中的数据。工具箱提供:

  • 简化开发:只需不到 10 行代码就能将工具集成到你的智能体中,在多个智能体或框架之间重用工具,更轻松地部署工具的新版本。
  • 更好的性能:采用连接池、身份验证等最佳实践。
  • 增强的安全性:集成身份验证,使数据访问更安全。
  • 端到端可观测性:内置支持 OpenTelemetry 的指标和追踪功能。

⚡ 借助 AI 数据库助手提升你的工作流程 ⚡

无需在不同场景间切换,让你的 AI 助手成为真正的协开发者。通过使用 MCP 工具箱将你的 IDE 连接到数据库,你可以将复杂且耗时的数据库任务委托出去,从而加快开发速度,专注于重要的事情。这不仅仅是代码补全,而是为你的 AI 提供处理整个开发生命周期所需的上下文。

以下是它能为你节省时间的方式:

  • 用自然语言查询:直接在 IDE 中使用自然语言与数据交互。无需编写任何 SQL,就能提出复杂问题,例如“2024 年有多少订单已送达,其中包含哪些商品?”
  • 自动化数据库管理:只需描述你的数据需求,让 AI 助手为你管理数据库。它可以处理生成查询、创建表、添加索引等操作。
  • 生成上下文感知代码:使你的 AI 助手能够生成应用程序代码和测试,深入理解你的实时数据库架构。通过确保生成的代码可直接使用,加快开发周期。

总体架构

工具箱位于应用程序的编排框架和数据库之间,提供一个用于修改、分发或调用工具的控制平面。它通过提供一个集中的位置来存储和更新工具,简化了工具的管理,使你能够在智能体和应用程序之间共享工具,并且无需重新部署应用程序就能更新这些工具。

在这里插入图片描述

快速入门

安装服务器

二进制文件

要将工具箱安装为二进制文件:

# 查看发布页面获取其他版本
export VERSION=0.8.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
容器镜像 你也可以将工具箱安装为容器:
# 查看发布页面获取其他版本
export VERSION=0.8.0
docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION
从源代码编译

要从源代码安装,请确保你安装了最新版本的Go,然后运行以下命令:

go install github.com/googleapis/genai-toolbox@v0.8.0

运行服务器

配置一个 tools.yaml 来定义你的工具,然后执行 toolbox 启动服务器:

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

[!NOTE]
工具箱默认启用动态重新加载。要禁用,请使用 --disable-reload 标志。

你可以使用 toolbox help 获取完整的标志列表!要停止服务器,请发送终止信号(大多数平台上为 ctrl+c)。

有关在不同环境中部署的更详细文档,请查看操作指南部分中的资源。

集成你的应用程序

服务器启动并运行后,你可以将工具加载到你的应用程序中。以下是使用各种框架的客户端 SDK 列表:

Python( Github
核心
  1. 安装 Toolbox Core 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 Core 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 Core 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 Core SDK 的更详细说明,请参阅项目的 README

LangChain / LangGraph
  1. 安装 Toolbox Core 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 Core 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);
    

配置

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

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

数据源

tools.yamlsources 部分定义了你的工具箱应该有权访问的数据源。大多数工具至少有一个要执行操作的数据源。

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

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

工具

tools.yamltools 部分定义了智能体可以执行的操作:工具类型、它影响的数据源、使用的参数等。

tools:
  search-hotels-by-name:
    kind: 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")
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐