Genai Toolbox

Genai Toolbox

开源的 MCP 服务器,专注于为数据库提供简单、快速且安全的工具。

googleapis

开发者工具
访问服务器

README

logo

数据库 MCP 工具箱

[!NOTE] 数据库 MCP 工具箱目前处于 Beta 阶段,在第一个稳定版本 (v1.0) 发布之前可能会有重大更改。

数据库 MCP 工具箱是一个用于数据库的开源 MCP 服务器。它的设计考虑了企业级和生产质量。它通过处理连接池、身份验证等复杂性,使您能够更轻松、更快速、更安全地开发工具。

本 README 提供了一个简要概述。有关详细信息,请参阅完整文档

[!NOTE] 本产品最初名为“Gen AI 数据库工具箱”,因为它的初始开发早于 MCP,但为了与最近添加的 MCP 兼容性保持一致,已更名为 MCP 工具箱。

<!-- TOC ignore:true -->

目录

<!-- TOC -->

<!-- /TOC -->

为什么选择工具箱?

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

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

通用架构

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

architecture

快速开始

安装服务器

对于最新版本,请查看发布页面,并使用以下适用于您的操作系统和 CPU 架构的说明。

<details open> <summary>二进制文件</summary>

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

<!-- {x-release-please-start-version} -->

# 有关其他版本,请参阅发布页面
export VERSION=0.3.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox

</details>

<details> <summary>容器镜像</summary> 您还可以将工具箱安装为容器:

# 有关其他版本,请参阅发布页面
export VERSION=0.3.0
docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION

</details>

<details> <summary>从源代码编译</summary>

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

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

<!-- {x-release-please-end} -->

</details>

运行服务器

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

./toolbox --tools_file "tools.yaml"

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

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

集成您的应用程序

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

<details open> <summary>核心</summary>

  1. 安装 Toolbox Core SDK:
    pip install toolbox-core
    
  2. 加载工具:
    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

</details> <details> <summary>LangChain / LangGraph</summary>

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

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

</details>

<details> <summary>LlamaIndex</summary>

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

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

</details>

配置

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

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

数据源

tools.yaml 文件的 sources 部分定义了您的工具箱应该有权访问哪些数据源。大多数工具将至少有一个要执行的数据源。

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

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

工具

tools.yaml 文件的 tools 部分定义了代理可以采取的操作:它是什么类型的工具,它影响哪些数据源,它使用什么参数等等。

tools:
  search-hotels-by-name:
    kind: 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 部分允许您定义要一起加载的工具组。这对于根据代理或应用程序定义不同的组非常有用。

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")

版本控制

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

  • 当我们进行不兼容的 API 更改时,主版本 (MAJOR)
  • 当我们以向后兼容的方式添加功能时,次版本 (MINOR)
  • 当我们进行向后兼容的错误修复时,补丁版本 (PATCH)

这适用于的公共 API 是与工具箱关联的 CLI、与官方 SDK 的交互以及 tools.yaml 文件中的定义。

贡献

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

请注意,本项目是根据贡献者行为准则发布的。参与本项目即表示您同意遵守其条款。有关更多信息,请参阅 贡献者行为准则

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript