接上外部"器官":用 MCP 协议打通你的工具生态
前面我们攒出了一支 Agent 团队,每人自带 83 个内置工具(terminal/file/browser/code_execution…)。但现实是:你公司的真功夫不在这些通用工具里,而在 GitHub 仓库、生产数据库、内部 API、还有你已经跑顺的 n8n 工作流。
让 Agent 学会调用每一个外部系统,过去得写一堆原生工具胶水代码。现在不用了——MCP(Model Context Protocol) 就是干这个的。本节把它接上。
一、MCP 是什么
▲ Hermes 中文桌面版工作台(暗色模式)
MCP 是 Anthropic 提出的开放协议,让 LLM Agent 连接外部”工具服务器”。对 Hermes 而言:
- 不用为每个外部系统写原生工具,连上 MCP server 就自动获得它的能力(GitHub 操作、查库、调内部 API…)。
- 两种传输:stdio(本地子进程)和远程 HTTP。
- 启动时自动发现、注册工具,支持按服务器过滤。
- 关键彩蛋:Hermes 也能反向当 MCP server——
hermes mcp serve,把你的 Hermes 数字员工暴露给 Claude Code 之类的客户端调用。
Hermes Agent
├─ 内置 83 工具(terminal/file/browser…)
└─ MCP 客户端
├─ stdio: npx @modelcontextprotocol/server-github
├─ remote: https://mcp.example.com/mcp (HTTP)
└─ remote: https://mcp.linear.app/mcp (OAuth)
│
▼
外部工具服务器(GitHub / DB / 内部API / n8n)二、配置示例
写入 ~/.hermes/config.yaml 的 mcp_servers 段:
mcp_servers:
github:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "***"
remote_api:
url: "https://mcp.example.com/mcp"
headers:
Authorization: "Bearer ***"
linear: # OAuth 托管 MCP
url: "https://mcp.linear.app/mcp"
auth: oauthOAuth 令牌会缓存到 ~/.hermes/mcp-tokens/<server>.json(权限 0o600),别手贱改权限。
三、工具过滤:别给 Agent 太多枪
不是每个 MCP 工具都该暴露。三种过滤:
mcp_servers:
legacy:
url: "https://mcp.legacy.internal"
enabled: false # 完全跳过,不加载
github:
tools:
include: [create_issue, list_issues] # 白名单:只用这两个
stripe:
tools:
exclude: [delete_customer] # 黑名单:禁用危险操作
cloudflare:
tools:
exclude: ["*_radar_*", "*_accounts_dlp_*"] # glob 通配规则:include 与 exclude 同存时 include 胜出(白名单优先)。还能单独关资源/提示包装:tools: { prompts: false, resources: false }。
四、安全要点(这块最容易翻车)
- stdio 环境不过度透传:只显式
env+ 安全基线,防密钥随子进程泄露。 - 工具结果净化:Hermes 会剥离 U+E0000–U+E007F 这段不可见 Unicode TAG,防止有人用隐藏字符做提示注入走私。
- mTLS:远程 server 支持
client_cert/client_key(支持~展开)。 - 令牌权限:OAuth 缓存文件权限 0o600,目录隔离。
五、命令全集
hermes mcp catalog # 浏览可用 MCP 目录
hermes mcp install # 安装
hermes mcp add # 添加
hermes mcp remove # 移除
hermes mcp list # 列出已接
hermes mcp test # 测试连通
hermes mcp configure # 交互配置
hermes mcp login # OAuth 登录
hermes mcp serve # 反向:把 Hermes 当 MCP server 暴露出去
hermes mcp picker # 选择器改完配置记得 /reload-mcp 热重载(也可 hermes mcp configure)。
六、避坑提示
⚠️ stdio 的 env 别图省事透传整个环境。 只给 MCP server 真正需要的变量,否则你 .env 里的全部密钥可能被子进程看到。
⚠️ enabled: false 才是彻底关停。 只想临时藏起来用这个,别留着一堆用不上的 server 拖慢启动。
⚠️ 危险 MCP 工具务必 exclude。 像 delete_*、push --force 这类,能禁就禁,留个白名单更稳。
⚠️ 远程 HTTP 必须走 mTLS 或鉴权头。 裸 http:// 内网也别裸奔,OAuth/Bearer 至少加上。
⚠️ MCP 工具不参与内置工具审批链。 它走自己的过滤规则,安全边界要单独在 tools: 段设好。
本节能造出什么数字员工
- GitHub 协管员:接
server-github,自动建 issue、查 PR、写 release note。 - 数据库问答员:接一个 DB 的 MCP server,用自然语言查生产数据、生成报表。
- n8n 调度员:把你已有的 n8n 工作流通过 MCP 暴露,让 Agent 一句话触发整条自动化流水线(这点跟作者自己的 n8n 工作流强相关——别重造轮子,把现有自动化接进 Agent 才是正路)。
- 可被调用的”员工即服务”:
hermes mcp serve把某个专精 Bot 暴露给 Claude Code,让它也能叫你的数字员工干活。
下篇预告
工具接得越多,风险面越大——一个能删数据库的 Agent 要是被乱调用,后果比”回答不准”严重一万倍。第 12 节《别把家门钥匙交出去:八层安全防护与企业级加固》——纠正流传的”六层”说法,官方实际是八层防御,外加 Bitwarden 凭据管理和 iron-proxy 出口防火墙。
延伸阅读
- 官方文档(MCP):https://hermes-agent.nousresearch.com/docs
- 中文社区:https://hermesagent.org.cn/docs
- MCP 协议规范与 server 列表以官方文档最新说明为准