小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
Apache License 2.0
657
最近更新:12天前

MCP Toolbox for Databases 是一个开源的 MCP 数据库服务器,专为具备企业级质量和生产级别的使用场景设计和构建。

logo

MCP Toolbox for Databases

[!NOTE]
MCP Toolbox for Databases 目前处于测试阶段,在首次稳定版本发布(v1.0)之前可能会有破坏性变更。

MCP Toolbox for Databases 是一个开源的 MCP 数据库服务器。它在设计时考虑了企业级和生产质量的需求。通过处理诸如连接池、身份验证等复杂问题,它可以让你更轻松、更快捷且更安全地开发工具。

此 README 提供了一个简要概述。如需更详细的说明,请参阅完整文档

[!NOTE]
该产品最初名为“Gen AI Toolbox for Databases”,其初始开发早于 MCP,但为了与最近添加的 MCP 兼容性对齐,已更名为 MCP Toolbox for Databases。

目录

Why Toolbox?

Toolbox 帮助你构建 Gen AI 工具,使你的代理能够访问数据库中的数据。Toolbox 提供以下功能:

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

General Architecture

Toolbox 位于应用的编排框架和数据库之间,提供一个用于修改、分发或调用工具的控制平面。它通过为您提供集中存储和更新工具的位置,简化了工具管理,使您能够在不重新部署应用程序的情况下共享工具并在代理和应用程序之间更新工具。

architecture

Getting Started

Installing the server

要获取最新版本,请查看发布页面并根据您的操作系统和 CPU 架构使用以下安装说明。

Binary

要以二进制方式安装 Toolbox:

sh 复制代码
# 查看发布页面以获取其他版本  
export VERSION=0.3.0  
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox  
chmod +x toolbox  
Container image 您还可以将 Toolbox 安装为容器:
sh 复制代码
# 查看发布页面以获取其他版本  
export VERSION=0.3.0  
docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION  
Compile from source

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

sh 复制代码
go install github.com/googleapis/genai-toolbox@v0.3.0  

Running the server

配置 tools.yaml 文件以定义您的工具,然后执行 toolbox 启动服务器:

sh 复制代码
./toolbox --tools_file "tools.yaml"  

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

有关在不同环境中部署的更详细文档,请参阅如何操作部分中的资源。

Integrating your application

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

Core
  1. 安装 Toolbox Core SDK
    bash 复制代码
    pip install toolbox-core  
  2. 加载工具:
    python 复制代码
    from toolbox_core import ToolboxClient  
    
    # 更新 URL 以指向您的服务器  
    client = ToolboxClient("http://127.0.0.1:5000")  
    
    # 这些工具可以传递给您的应用!  
    tools = await client.load_toolset("toolset_name")  

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

LangChain / LangGraph
  1. 安装 Toolbox LangChain SDK
    bash 复制代码
    pip install toolbox-langchain  
  2. 加载工具:
    python 复制代码
    from toolbox_langchain import ToolboxClient  
    
    # 更新 URL 以指向您的服务器  
    client = ToolboxClient("http://127.0.0.1:5000")  
    
    # 这些工具可以传递给您的应用!  
    tools = client.load_toolset()  

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

LlamaIndex
  1. 安装 Toolbox Llamaindex SDK
    bash 复制代码
    pip install toolbox-llamaindex  
  2. 加载工具:
    python 复制代码
    from toolbox_llamaindex import ToolboxClient  
    
    # 更新 URL 以指向您的服务器  
    client = ToolboxClient("http://127.0.0.1:5000")  
    
    # 这些工具可以传递给您的应用!  
    tools = client.load_toolset()  

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

Configuration

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

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

Sources

tools.yaml 文件的 sources 部分定义了 Toolbox 应该访问哪些数据源。大多数工具至少需要一个源来执行操作。

yaml 复制代码
sources:  
  my-pg-source:  
    kind: postgres  
    host: 127.0.0.1  
    port: 5432  
    database: toolbox_db  
    user: toolbox_user  
    password: my-password  

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

Tools

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

yaml 复制代码
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 || '%';  

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

Toolsets

tools.yaml 文件的 toolsets 部分允许您定义希望一起加载的工具组。这对于根据代理或应用程序定义不同的组非常有用。

yaml 复制代码
toolsets:  
    my_first_toolset:  
        - my_first_tool  
        - my_second_tool  
    my_second_toolset:  
        - my_second_tool  
        - my_third_tool  

可以通过名称加载工具集:

python 复制代码
# 这将加载所有工具  
all_tools = client.load_toolset()  

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

Versioning

此项目使用语义化版本控制,包括 MAJOR.MINOR.PATCH 版本号,随着以下情况递增:

  • 当我们进行不兼容的 API 更改时增加 MAJOR 版本。
  • 当我们以向后兼容的方式添加功能时增加 MINOR 版本。
  • 当我们进行向后兼容的错误修复时增加 PATCH 版本。

适用此规则的公共 API 包括与 Toolbox 关联的 CLI、与官方 SDK 的交互以及 tools.yaml 文件中的定义。

Contributing

欢迎贡献。请参阅CONTRIBUTING以开始贡献。

请注意,本项目附带贡献者行为准则发布。通过参与本项目,您同意遵守其条款。有关更多信息,请参阅贡献者行为准则