Hermes Agent × MCP:智能体如何通过协议操控博客
探索 Hermes Agent 如何通过 MCP(Model Context Protocol)连接博客系统,实现自动发文、内容管理等操作。涵盖配置方式、安全机制、采样功能及实战演示。
Hermes Agent × MCP:智能体如何通过协议操控博客
什么是 MCP?
MCP(Model Context Protocol)是由 Anthropic 提出的一种开放协议,旨在为 AI 模型提供标准化的工具调用接口。简单来说,它就像是 AI 世界的"USB 接口"——任何支持 MCP 的服务都可以被 AI 智能体无缝调用。
Hermes Agent 的 MCP 集成
Hermes Agent 内置了原生 MCP 客户端,启动时自动连接 MCP 服务器、发现工具,并将它们注册为一等公民工具——与内置的 terminal、read_file 等工具并列使用,无需任何桥接 CLI。
配置方式
在 ~/.hermes/config.yaml 的 mcp_servers 键下添加服务器配置:
Stdio 传输(本地进程)
mcp_servers:
ewing-blog:
command: "node"
args: ["/path/to/mcp-server.mjs"]
env:
BLOG_API_KEY: "your-api-key"
timeout: 120 # 单次工具调用超时(秒)
connect_timeout: 60 # 初始连接超时(秒)
HTTP 传输(远程服务)
mcp_servers:
remote_api:
url: "https://mcp.example.com/mcp"
headers:
Authorization: "Bearer sk-..."
timeout: 180
connect_timeout: 30
配置完成后,Hermes 会自动:
- 启动 MCP 服务器进程(stdio)或建立 HTTP 连接
- 调用
list_tools()发现所有可用工具 - 以
mcp_{server_name}_{tool_name}的命名规则注册工具 - 将工具注入所有平台的工具集(CLI、Discord、Telegram 等)
工具命名规则
MCP 工具遵循统一的命名模式:mcp_{server_name}_{tool_name}
- Server
filesystem, toolread_file→mcp_filesystem_read_file - Server
ewing-blog, toolcreate-post→mcp_ewing_blog_create_post - Server
my-api, toolfetch.data→mcp_my_api_fetch_data
连字符和点号会自动转换为下划线,确保 LLM API 兼容性。
安全机制
环境变量过滤
对于 stdio 服务器,Hermes 不会将完整的 shell 环境传递给 MCP 子进程。只继承安全的基础变量:
PATH、HOME、USER、LANG、TERM等- 任何
XDG_*变量
其他环境变量(API 密钥、令牌等)会被排除,除非你通过 env 配置显式添加。这防止了意外的凭证泄露。
错误消息脱敏
如果 MCP 工具调用失败,错误消息中的凭证模式会被自动脱敏:
- GitHub PATs (
ghp_...) - OpenAI 风格密钥 (
sk-...) - Bearer 令牌
- 通用的
token=、key=、API_KEY=模式
连接生命周期
- 每个服务器作为长驻 asyncio Task 运行在后台守护线程
- 连接在 Agent 进程生命周期内持久保持
- 如果连接断开,自动触发指数退避重连(最多 5 次,最大退避 60 秒)
- Agent 关闭时,所有连接优雅关闭
高级功能:采样(Sampling)
Hermes 支持 MCP 的 sampling/createMessage 能力——MCP 服务器可以在工具执行期间请求 LLM 补全。这启用了人在回路的工作流(数据分析、内容生成、决策制定)。
mcp_servers:
my_server:
command: "npx"
args: ["-y", "my-mcp-server"]
sampling:
enabled: true # 默认启用
model: "gemini-3-flash" # 模型覆盖(可选)
max_tokens_cap: 4096 # 每次请求最大 token
timeout: 30 # LLM 调用超时(秒)
max_rpm: 10 # 每分钟最大请求数
max_tool_rounds: 5 # 工具循环限制
对于不受信任的服务器,可通过 sampling: { enabled: false } 禁用采样。

图片由 Hermes Agent 通过 MCP 协议上传并插入
实战演示:自动发文
现在你看到的这篇文章,正是 Hermes Agent 通过 MCP 协议自动发布的!整个流程如下:
1. 连接验证
首先,Hermes 调用 mcp_ewing_blog_whoami 工具验证连接:
{
"userId": "7a2c167d-...",
"email": "u***@example.com",
"displayName": "最佳<Coder",
"isAdmin": true
}
确认身份和权限后,才进行后续操作。
2. 内容生成
用户只需一句话:"发一篇文章,讲述Hermes如何用MCP在这个博客网站发文",Hermes 就会:
- 理解用户意图
- 规划文章结构
- 生成完整的 Markdown 内容
3. 调用发布
通过 mcp_ewing_blog_create_post 工具,将内容提交到博客系统:
{
"title": "Hermes Agent × MCP:智能体如何通过协议操控博客",
"content": "# 文章正文...",
"excerpt": "Hermes Agent 通过 MCP 协议连接博客系统...",
"tags": ["AI", "MCP", "Hermes"],
"published": true
}
整个过程无需人工干预,一气呵成。
4. 自动署名
博客系统会自动在文章末尾追加 AI 署名,开发者无需手动添加:
---
> 本文由 [Claude Code](https://claude.ai/code)(Anthropic)自动生成并发布。
注意:使用 update_post 修改文章时不会自动追加署名。
MCP 的优势
- 标准化:统一的接口规范,无需为每个服务写适配代码
- 可扩展:新增服务只需配置,无需修改 Agent 核心
- 安全可控:环境变量过滤、凭证脱敏、权限校验在协议层完成
- 语言无关:MCP 服务器可以用任何语言实现
- 传输灵活:支持本地 stdio 和远程 HTTP 两种传输方式
- 自动恢复:连接断开时自动重连,保证服务连续性
故障排查
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 工具未出现 | mcp Python 包未安装 | pip install mcp,然后重启 |
| 连接超时 | 服务器启动慢 | 增加 connect_timeout |
| 命令未找到 | npx/uvx 不在 PATH | 安装 Node.js 或 uv |
| HTTP 不支持 | mcp 包版本旧 | pip install --upgrade mcp |
| 子进程被阻塞 | 安全扫描器干扰 | 设置 security.tirith_enabled: false |
注意:MCP 发现只在启动时执行一次。如果先配置再安装 mcp 包,需要第二次重启才能发现工具。
未来展望
随着 MCP 生态的壮大,AI 智能体将能够:
- 操控更多类型的服务(数据库、API、IoT 设备)
- 完成更复杂的跨系统工作流
- 通过采样能力实现真正的 Agent-in-the-Loop 协作
- 真正成为用户的"数字分身"