掘金 人工智能 07月03日 14:32
谷歌MCP Toolbox for Databases拆解:助你快速构建数据访问智能体的神器
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了谷歌开源的MCP Toolbox for Databases,一个帮助AI客户端(如智能体、IDE)更便捷地访问数据库的工具服务器。它支持多种数据库类型,提供工具集中管控、维护、观察与共享的能力,并与主流Agent开发框架兼容。通过SDK或MCP模式,用户可以快速定义和使用数据库工具,有效解决大型企业应用中工具管理、安全性和并发性能等问题。

💡 **MCP Toolbox for Databases的核心功能:** 作为一个开源的数据库访问工具服务器,它简化了AI客户端访问数据库的流程,支持多种数据库类型,并提供工具的集中管控、维护、观察与共享。

⚙️ **两种主要的使用方式:** 通过传统HTTP(原生SDK)和MCP两种模式。原生SDK模式适用于LangGraph、LlamaIndex、Google ADK等框架开发的Agent,MCP模式则适用于支持MCP的IDE和现有基于MCP的应用。

🛠️ **使用流程与配置:** 首先需要准备模拟数据库,然后安装MCP Toolbox for Databases,接着配置`tools.yaml`文件定义数据库连接信息和工具,最后启动Toolbox Server。配置包括数据源(sources)、工具(tools)和工具集(toolsets)三部分。

✅ **优势与应用场景:** 解决了LLM应用在企业数据库访问中常见的工具分散、安全隐患和Text2SQL的风险等问题。原生SDK模式适用于Agent开发,MCP模式则可用于IDE集成和自定义LLM应用。

在企业Agent的运行过程中,可能会经常需要访问数据库,比如一个AI客服可能需要查询某订单的状态等。实现这样的Agent工具固然并不复杂,但你可能会遇到诸如工具共享、安全管控、连接池等一系列工程问题。本文将详解来自谷歌公司的开源项目:MCP Toolbox for Databases,看它如何帮助我们更轻松便捷的开发与维护数据库访问的工具。

01 了解基本概念

【MCP Toolbox for Databases是什么】

谷歌的MCP Toolbox for Databases是一个开源的数据库访问工具(Tool)服务器。可以让你的AI客户端(比如智能体、IDE等)更简单快速的拥有访问各种数据库的工具。这里的数据库可以是RDBMS、图数据库、缓存,甚至还可以是HTTP访问的数据服务。

尽管名字中带有MCP,但MCP Toolbox for Databases并不依赖于MCP,它诞生在MCP之前,后来添加了对MCP协议访问的兼容性。

借助MCP Toolbox for Databases,你可以:

【它有什么好处】

LLM应用对企业数据库的访问,通常的方案通常是自行开发,比如:

不过在大型企业应用中,这些实现方法存在一些可以预见的问题:

而借助MCP Toolbox for Databases,这些问题可以有效的得到解决或者缓解。当然它也远非万能,一些复杂的数据访问逻辑或许仍然需要传统方案的结合。

【怎么使用它】

MCP Toolbox for Databases目前有两种主要使用方式:

方式1:通过传统HTTP(原生SDK)

使用借助官方提供的客户端集成SDK,可以轻松的在LangGraph、LlamaIndex、Google ADK框架开发的Agent中导入并使用Toolbox Server中的工具。

方式2:通过MCP

使用借助MCP客户端SDK以及开发框架提供的适配器(如langgrap-mcp-adaper),将Toolbox Server作为独立的MCP Server,加载与使用其中的工具。在MCP访问模式下,有少量功能目前存在限制。总的建议是:如果你是基于LangGraph、LlamaIndex、ADK框架开发Agent,直接使用SDK访问;其他情况下(如支持MCP的IDE、现有基于MCP的应用等)则使用MCP模式使用。

02 安装、配置与启动Toolbox Server

我们创建一个Demo演示MCP Toolbox for Databases的能力与用法。这个Demo将实现一个简单的ReAct Agent,使用Toolbox Server中的多个工具来完成一些模拟的CRM客户服务中的常见任务。比如订单查询统计、物流状态查询等。原料如下:

【1. 准备模拟数据库】

创建一个测试用的Postgres数据库,模拟一些客户服务相关的表,并让AI帮我们生成一些模拟数据:

【2. 安装MCP Toolbox for Databases】

直接在github上下载release版本。与一些MCP Server不同, MCP Toolbox for Databases以可执行的介质(go语言编写)发行:

github.com/googleapis/…

下载完成将获得一个toolbox可执行文件,将这个文件拷贝到你的环境下,并增加可执行权限:

chmod u+x toolbox

【3. 配置tools.yaml】

创建一个配置文件tools.yaml,用来定义数据库的连接信息及发布的工具。以下是我们配置文件的一部分:

sources:  # 数据库信息  crm-database:      kind: postgres      host: 127.0.0.1      port: 5432      database: crm      user: postgres      password: yourpasswordtools:  # 通用SQL执行工具  execute_sql_tool:    kind: postgres-execute-sql    source: crm-database    description: 在CRM数据库上执行自定义SQL语句。  # 客户管理工具  search-customer-by-phone:    kind: postgres-sql    source: crm-database    description: 根据电话号码搜索客户。    parameters:      - name: phone        type: string        description: 要搜索的电话号码。    statement: SELECT customer_id, name, phone, email, address, vip_level, registration_date FROM customers WHERE phone ILIKE '%' || $1 || '%';    #....其他自定义工具....toolsets:  crm-customer-management:    - search-customer-by-email    - search-customer-by-phone    - get-customer-stats......

配置信息很好理解:

sources部分:

用来定义数据源。这些源将用作下面工具的访问对象。可以是:

tools部分:

用来定义多个数据访问的工具。每个工具包括它的类型(kind)、数据源(source)、描述(description)、参数(parameters)、以及具体的数据访问方法。访问方法根据不同的数据源而有所不同:

注意这里kind为postgres-execute-sql的工具无需定义任何SQL,这是一个预置的用来执行任意SQL的工具,但不要在生产环境中开放。

toolsets部分:

用来将大量的工具进行分组管理,形成多个工具集。你可以把不同的工具集交给不同的Agent使用或者做不同的安全控制等;

【4.启动Toolbox Server】

在配置完成tools.yaml后,就可以启动Toolbox Server:

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

当你看到如下的加载信息后,代表Server启动成功,现在你就可以使用这个Server中的各种工具了!

03 使用Tools:原生SDK模式

Toolbox Server本质上就是一个HTTP Server,用来暴露你定义的工具并提供端点调用。事实上你可以用浏览器查看到工具信息。比如查看以下地址:

http://127.0.0.1:5000/api/tool/execute_sql_tool

你可以直接看到这样的信息:

所以,原生SDK就是通过标准HTTP方法来发现与调用Server中的各种工具。这里我们使用LangChain框架适配的SDK:

pip install toolbox-langchain

接着就可以在LangGraph Agent中来加载使用Toolbox Server中的工具/工具集。核心方法如下:

通过简单的aload_toolset就可以加载Toolbox Server中你定义的数据访问工具,然后将它交给Agent使用。

对这个Agent做简单测试,以验证工具的可用性(使用流式调用跟踪中间步骤):

可以看到,Agent调用了两个工具来回答用户的输入问题,并且完美的回答了问题。相对于使用Text2SQL,这种预定义工具牺牲了一定的灵活性,但提供了生产环境下绝对的确定性与准确性。而对于分析环境,常面临较复杂的SQL,也可以把它们固化下来作为工具:

04 使用Tools:MCP模式

通过MCP使用MCP Toolbox for Databases有两种常见场景:

【在IDE(比如Cursor、VSCode)中使用】

这种场景下通常不需要定义tools.yaml,直接使用预构建的工具即可,通常包括list_tables(列出所有表)或者execute_sql(执行任何SQL)工具。所以只需配置MCP Server的启动参数即可,比如:

{  "mcpServers": {    "postgres": {      "command": "./PATH/TO/toolbox",      "args": ["--prebuilt","postgres","--stdio"],      "env": {        "POSTGRES_HOST": "",        "POSTGRES_PORT": "",        "POSTGRES_DATABASE": "",        "POSTGRES_USER": "",        "POSTGRES_PASSWORD": ""      }    }  }}

【在自定义LLM应用中使用】

只需借助MCP官方的Client SDK或langgraph-mcp-adapter这样的框架适配器,就可用标准的方式访问Toolbox Server中的工具。目前支持stdio与sse两种模式。

这里不再做编程展示,我们用MCP官方的调试工具MCP Inspector简单验证Toolbox Server中的工具。首先启动Inspector:

npx @modelcontextprotocol/inspector

然后进入MCP Inspector的Web界面,使用SSE方式连接,并确保URL正确(通常为http://xxxxx:5000/mcp/sse),然后连接。如果连接成功,你可以在右边的Tools页面看到所有Toolbox Server中的工具,然后对其测试:

05 安全、可观测性、小结

以上展示了Google的一个实用开源项目MCP Toolbox for Databases的用法。它可以帮助我们快速构建生成式AI应用所需要的工具,以访问企业中各种数据源中的数据,并提供了良好的性能、兼容性与可管理性。

作为面向企业环境的工具服务器,MCP Toolbox for Databases还提供了一定的安全管控与可观测能力。

期待随着版本的持续迭代,MCP Toolbox for Databases会变得越来越强大易用。

**END**

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

MCP Toolbox 数据库访问 AI工具 谷歌开源
相关文章