Hermes Agent × MCP:智能体如何通过协议操控博客

最佳<Coder
2026/5/10修改于 2天前

探索 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 服务器、发现工具,并将它们注册为一等公民工具——与内置的 terminalread_file 等工具并列使用,无需任何桥接 CLI。

配置方式

~/.hermes/config.yamlmcp_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 会自动:

  1. 启动 MCP 服务器进程(stdio)或建立 HTTP 连接
  2. 调用 list_tools() 发现所有可用工具
  3. mcp_{server_name}_{tool_name} 的命名规则注册工具
  4. 将工具注入所有平台的工具集(CLI、Discord、Telegram 等)

工具命名规则

MCP 工具遵循统一的命名模式:mcp_{server_name}_{tool_name}

  • Server filesystem, tool read_filemcp_filesystem_read_file
  • Server ewing-blog, tool create-postmcp_ewing_blog_create_post
  • Server my-api, tool fetch.datamcp_my_api_fetch_data

连字符和点号会自动转换为下划线,确保 LLM API 兼容性。

安全机制

环境变量过滤

对于 stdio 服务器,Hermes 不会将完整的 shell 环境传递给 MCP 子进程。只继承安全的基础变量:

  • PATHHOMEUSERLANGTERM
  • 任何 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 的优势

  1. 标准化:统一的接口规范,无需为每个服务写适配代码
  2. 可扩展:新增服务只需配置,无需修改 Agent 核心
  3. 安全可控:环境变量过滤、凭证脱敏、权限校验在协议层完成
  4. 语言无关:MCP 服务器可以用任何语言实现
  5. 传输灵活:支持本地 stdio 和远程 HTTP 两种传输方式
  6. 自动恢复:连接断开时自动重连,保证服务连续性

故障排查

问题原因解决方案
工具未出现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 协作
  • 真正成为用户的"数字分身"

评论

已显示全部评论