使用MCP Toolbox for Databases访问数据库

本文介绍如何使用开源的 MCP Toolbox for Databases,通过 YAML 配置将其集成到 VSCode Copilot。这使得用户能用自然语言查询数据库,或自定义工具执行精确 SQL,从而简化数据库访问。

使用自然语言访问数据库已经有了许多成功的案例,AI很擅长完成这种自然语言与机器语言的转换工作。随着 MCP 的发展,肯定有不少这样的数据库 MCP Server。

MCP Toolbox for Databases 是一个用于数据库的开源 MCP 服务器。它通过处理连接池、身份验证等复杂性,使您能够更轻松、更快速、更安全地开发工具。

下面是一个简单的试用。

下载页面直接下载 Toolbox 的二进制包,然后将其路径添加到系统 PATH 环境变量中。

然后,在你的项目根目录下新建一个 mysql.yaml 文件,内容为:

yaml 复制代码
sources:
  my-mysql-source:
    kind: mysql
    host: your-mysql-host
    port: 3306
    database: mysql
    user: root
    password: your-mysql-password
tools:
  execute_sql_tool:
    kind: mysql-execute-sql
    source: my-mysql-source
    description: Use this tool to execute sql statement.

下面我会为我的 VSCode Copilot 中添加一个 MCP Server,即在项目的目录中保存 .vscode/mcp.json 为:

json 复制代码
{
    "servers": {
    "mysql-mcp-server": {
      "type": "stdio",
      "command": "toolbox",
      "args": [
              "--tools-file",
              "D:\\learns\\ai\\toolbox-mcp\\mysql.yaml",
              "--stdio"
          ]
    }
   }
}

然后在 Copilot 的 Chat 界面,选择 Agent 模式,看看有没有加载 mysql-mcp-server,如果没有,可以点击重启,应该可以看到增加了这个 MCP Server。

在 Agent 模式下,我提问:

复制代码
我的数据库实例中哪个数据库的表最少?

Copilot 问我是否执行 execute_sql_tool,输入为:

json 复制代码
{
  "sql": "SELECT table_schema, COUNT(*) AS table_count FROM information_schema.tables WHERE table_type = 'BASE TABLE' GROUP BY table_schema ORDER BY table_count ASC LIMIT 1;"
}

我确认执行后结果为:

json 复制代码
{"TABLE_SCHEMA":"sys","table_count":1}

Copilot 告诉我:

复制代码
你的数据库实例中,表最少的数据库是 sys,只有 1 个表。

通过 Toolbox 还可以自定义 Tool, 下面就是官方的一个例子:

yaml 复制代码
sources:
  my-pg-source:
    kind: postgres
    host: 127.0.0.1
    port: 5432
    database: toolbox_db
    user: ${USER_NAME}
    password: ${PASSWORD}
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 || '%';

这样可以精确控制一些查询。

相关推荐
编程一生4 分钟前
DevOps从持续开发到持续部署
人工智能
隔窗听雨眠5 分钟前
KingbaseES性能优化实战指南:从操作系统调优到SQL等价改写的完整方法论
数据库·kingbasees
byte轻骑兵6 分钟前
【LE Audio】PBP精讲[5]: 广播音频的身份标识与元数据交互法则
人工智能·音视频·le audio·低功耗蓝牙音频
NineData1 小时前
NineData 与统信服务器操作系统完成兼容认证
数据库·oracle·操作系统·软件·数据库管理工具·ninedata·统信
智慧物业老杨2 小时前
物业日常巡查的数智化重构:从“打卡式巡检“到“闭环式风控“
android·java·人工智能·系统架构·rxjava
吴佳浩5 小时前
Skill 为什么不同于 Tool?Agent 技能库的自演进与动态加载机制
人工智能·agent·ai编程
吴佳浩5 小时前
Tool 的安全性与执行沙箱:从 Docker 到 gVisor 的防御架构
agent·ai编程·mcp
大模型任我行8 小时前
谷歌:“课程学习”融入扩散模型强化学习
人工智能·语言模型·自然语言处理·论文笔记
AIGCmagic社区8 小时前
具身智能专题:机器人也有Scaling Law?智元GE-Act 2.0用3万小时真机数据给出答案
人工智能·aigc·具身智能
Rosanci9 小时前
谷歌浏览器插件开发实战指南:从 Hello World 到上架发布
大数据·人工智能·chrome·程序人生