news 2026/9/10 12:19:05

MCP Toolbox 的 tools.yaml 分步配置指南:从第一个数据源到可用的工具集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MCP Toolbox 的 tools.yaml 分步配置指南:从第一个数据源到可用的工具集

MCP Toolbox 的 tools.yaml 分步配置指南:从第一个数据源到可用的工具集

【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox

刚装好 MCP Toolbox for Databases(一个面向数据库的 MCP 服务器),第一件事就是写它的配置文件 tools.yaml。最常见的翻车现场是:文件存了,toolbox serve也跑了,但客户端里一个工具都看不到。原因几乎都是下面三种之一:source 的连接参数没给全、tool 的 source 字段没对上名字、环境变量的写法漏了符号。这篇指南按"接数据源 → 挂工具 → 打包工具集"三步走,走完你就能独立配出一份能用的 tools.yaml。

先看全局:source、tool、toolset 各管什么

tools.yaml 用多文档 YAML 书写,三类块用---分隔,靠kind字段区分:

  • kind: source:定义一个数据库连接,给连接取个唯一名字;
  • kind: tool:定义一个可被调用的动作,用source字段指向某个数据源的名字;
  • kind: toolset:把若干工具打包成一个组,方便一次性加载。

启动时工具加载的入口:toolbox serve --config tools.yaml--config指定要加载哪个文件(默认就是 tools.yaml),加载顺序固定为 source → tool → toolset,后面的块引用前面的名字。

第一步:接入一个 MySQL 数据源

先写最小的 source 块,只留必需项。type 填数据库类型(这里是 mysql),其余字段就是标准连接参数:

kind: source name: mysql-source type: mysql host: localhost port: 3306 database: mydb user: toolbox_user password: secret

可选参数按需追加,不必一次写全:

参数作用是否必需
type数据库类型,如 mysql、postgres、sqlite必需
name数据源在配置内的唯一名字,工具靠它被引用必需
host / port / database / user / password标准连接参数通常必需(个别类型例外)
queryTimeout查询超时,如30s可选
queryParams追加的连接串参数,如时区设置可选

仓库里 mysql 的完整预置长这样:host: ${MYSQL_HOST:localhost}queryTimeout: 30s,可以直接对照。

第二步:给数据源挂上工具

执行 SQL 的基础工具

工具块只需四个字段:type 决定工具行为,source 把 source 指向数据源名字,description 写给 Agent 看、说清楚这个工具干什么:

kind: tool name: execute_sql type: mysql-execute-sql source: mysql-source description: Use this tool to execute SQL.

带模板参数的 SQL 工具

固定语句的工具用statement写 SQL,用templateParameters声明 SQL 里的{{.名字}}占位符,占位符会在执行前被替换进语句:

kind: tool name: inspect_table type: mysql-sql source: mysql-source description: 返回指定表的建表语句 statement: SHOW CREATE TABLE {{.tableName}}; templateParameters: - name: tableName type: string description: 要查看的表名

注意 templateParameters 里的name必须和 statement 中{{.xxx}}的 xxx 逐字一致。

带默认值的环境变量写法

敏感信息不要写死在文件里。${变量名}引用环境变量,${变量名:默认值}在变量未设置时兜底:

user: ${MYSQL_USER} password: ${MYSQL_PASSWORD} port: ${MYSQL_PORT:3306}

第三步:把工具打包成工具集并验证加载

toolset 块只声明 name 和 tools 列表,列表里填的是工具的名字

kind: toolset name: mysql_basic tools: - execute_sql - inspect_table

作用是把相关工具归成一组:给不同 Agent 或不同应用暴露不同组合时,按 toolset 名加载即可,不必每次手挑工具。配完启动toolbox serve --config tools.yaml,看日志里工具是否全部注册;再打开 Web UI 的 Tools / Toolsets 页面确认列表齐全,就能接 MCP 客户端了。

一份可以直接跑的最小完整示例

四个块放同一个文件,---分隔。设好MYSQL_PASSWORD后启动,即可得到两个可用工具和一个工具集:

kind: source name: mysql-source type: mysql host: localhost port: 3306 database: mydb user: toolbox_user password: ${MYSQL_PASSWORD} --- kind: tool name: execute_sql type: mysql-execute-sql source: mysql-source description: Use this tool to execute SQL. --- kind: toolset name: mysql_basic tools: - execute_sql

自查清单:五个最容易配错的点

  • 启动报"找不到 source" → 检查每个 tool 的source值是否与 source 块的name逐字一致,包括大小写。
  • 工具一个都没加载 → 检查每块的kind拼写(source / tool / toolset),以及块之间是否都有---分隔行。
  • 连接被数据库拒绝 → 先手动用同样参数连一次库,排除密码、端口和 host 本身的问题,再看配置。
  • 环境变量没生效、连接串里出现字面量${...}→ 确认写法是${NAME:默认值},冒号在右括号内,${ NAME }里带空格或引号都不行。
  • toolset 加载时缺工具或报错 → 对照 tools 列表和已定义的 tool 名字,列表里不能出现没定义过的名字。

配完这三板块,tools.yaml 就算立起来了。想加数据库类型时,参考 internal/prebuiltconfigs/tools/ 下的预置配置(比如 mysql.yaml、postgres.yaml)照抄结构;字段细则见 docs/en/documentation/configuration/。

【免费下载链接】mcp-toolboxMCP Toolbox for Databases is an open source MCP server for databases.项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolbox

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 12:18:24

DuckDB Eager聚合机制解析与性能优化

1. DuckDB的Eager Aggregate Execution机制解析DuckDB作为一款新兴的分析型数据库,其Eager Aggregate Execution特性在OLAP场景下展现出显著性能优势。这个设计理念的核心在于打破传统聚合计算的执行模式,通过提前物化中间结果来减少内存压力和计算延迟。…

作者头像 李华
网站建设 2026/9/10 12:17:08

如何用 fuels-rs 以自定义共识参数与创世币启动本地 Fuel 测试链

如何用 fuels-rs 以自定义共识参数与创世币启动本地 Fuel 测试链 【免费下载链接】fuels-rs Fuel Network Rust SDK 项目地址: https://gitcode.com/GitHub_Trending/fu/fuels-rs 当你为合约或交易编写测试时,默认启动的本地节点使用的是默认共识参数和随机生…

作者头像 李华
网站建设 2026/9/10 12:15:40

Telegram SMS终极指南:在Android设备上搭建智能短信转发机器人

Telegram SMS终极指南:在Android设备上搭建智能短信转发机器人 想要在Android设备上搭建一个智能的短信转发机器人吗?Telegram SMS是一款强大的开源应用,可以将您手机收到的短信自动转发到Telegram聊天中,让您随时随地通过Telegr…

作者头像 李华
网站建设 2026/9/10 12:15:14

高光谱影像分类实战:基于(2D)2PCA与双通道CNN-SVM

简介:这是一份基于Python实现的高光谱遥感影像识别与分类完整项目,面向毕业设计、课程设计及项目开发场景。项目针对高光谱数据维数灾难导致的休斯现象,提出基于波段组合(2D)2PCA的高光谱降维方法,降低数据冗余并提升后续处理效率…

作者头像 李华