Hermes Agent MCP接入详解:连接任意外部工具和API(2026最新)

OpenClaw 企业定制 私人订制工作流 优化运维 openclaw记忆优化 问题咨询解决 请加微信交流

微信: aixbwz

想让Hermes Agent访问你的GitHub仓库、查询数据库、操作文件系统?MCP(Model Context Protocol)就是用来干这个的。它是Hermes Agent连接外部工具的标准协议,让AI可以使用任何已经存在的工具和服务,而不需要自己重新开发。

这篇讲清楚MCP是什么、怎么配置、能接哪些工具、以及实际使用场景。

MCP是什么

MCP是一个开放协议,用来连接AI助手和外部工具服务。它的核心思想很简单:不需要为每个AI工具写专门的代码,只要工具支持MCP协议,就能直接接入。

举例来说:你想让AI帮你操作GitHub,有现成的MCP服务器支持GitHub。你不需要自己写GitHub API集成代码,配置一下就能用。

为什么需要MCP

没有MCP的时候,如果想让AI访问外部工具,你需要:

  • 自己写代码集成API
  • 处理认证、错误、超时
  • 维护一个专门的工具插件

有了MCP:

  • 直接配置,社区现成的工具就能用
  • 启动时自动发现工具
  • 统一协议,不需要每个工具单独集成

两种MCP服务器

Stdio服务器(本地)

本地运行的子进程,通过stdin/stdout通信。低延迟,适合访问本地资源。

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxx"

适用场景:

  • 服务器安装在本地
  • 需要低延迟访问本地资源
  • MCP服务器文档使用command/args/env格式

HTTP服务器(远程)

连接到远程端点,适合组织内部API或托管服务。

mcp_servers:
  company_api:
    url: "https://mcp.internal.example.com"
    headers:
      Authorization: "Bearer ***"

适用场景:

  • MCP服务器托管在别处
  • 组织内部暴露了MCP端点
  • 不想让Hermes在本地启动子进程

快速开始

第一步:安装MCP支持

cd ~/.hermes/hermes-agent
uv pip install -e ".[mcp]"

如果用了标准安装脚本,这步已经自动完成。

第二步:配置服务器

~/.hermes/config.yaml添加:

mcp_servers:
  filesystem:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "你的Token"

第三步:启动并使用

hermes

然后直接说:

列出/home/user/projects目录下的所有文件

Hermes会发现MCP服务器的工具,像内置工具一样调用。整个过程你不需要知道背后用的是MCP。

工具命名规则

MCP工具注册到Hermes时,会加上前缀避免跟内置工具冲突:

filesystem read_file       -> mcp_filesystem_read_file
github create-issue        -> mcp_github_create-issue
my-api query_data         -> mcp_my_api_query_data

实际使用时你不需要记这个名字,Hermes会自动选择合适的工具。

工具过滤

可以精细控制每个服务器暴露哪些工具,避免工具过多干扰AI决策。

只允许特定工具

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "***"
    tools:
      include: [create_issue, list_issues]

排除特定工具

mcp_servers:
  stripe:
    url: "https://mcp.stripe.com"
    tools:
      exclude: [delete_customer]

完全禁用某个服务器

mcp_servers:
  legacy:
    url: "https://mcp.legacy.internal"
    enabled: false

过滤工具类utility

MCP的utility工具也可以过滤:

mcp_servers:
  docs:
    url: "https://mcp.docs.example.com"
    tools:
      prompts: false      # 禁用 list_prompts 和 get_prompt
      resources: false    # 禁用 list_resources 和 read_resource

MCP资源读取

如果服务器支持,Hermes还会注册资源读取工具:

mcp_<服务器>_list_resources
mcp_<服务器>_read_resource
mcp_<服务器>_list_prompts
mcp_<服务器>_get_prompt

比如AI可以读取GitHub仓库的配置文件,或者获取某个prompt模板。

动态工具发现

MCP服务器可以在运行时通知Hermes工具列表变化了:

notifications/tools/list_changed

当Hermes收到这个消息,会自动重新获取服务器的工具列表并更新注册表。这对于能力动态变化的服务器很有用——比如加载了新数据库schema就添加新工具,服务下线就移除工具。

安全模型

Stdio环境变量过滤

对于stdio服务器,Hermes不会盲目传递完整的shell环境变量。

只会传递明确配置的环境变量加上一组安全基础变量。这减少了意外泄露密钥的风险。

配置级暴露控制

工具过滤也是安全控制的一部分。通过include/exclude精确控制哪些工具对AI可见,减少误用风险。

常用MCP服务器推荐

社区维护了很多现成的MCP服务器:

  • @modelcontextprotocol/server-filesystem — 文件系统读写
  • @modelcontextprotocol/server-github — GitHub API集成
  • @modelcontextprotocol/server-sentry — Sentry错误监控
  • @modelcontextprotocol/server-slack — Slack消息发送
  • Browserbase — 云端浏览器控制
  • PostgreSQL — 数据库查询

配置参数参考

参数 类型 说明
command string stdio服务器的可执行文件
args list 传递给服务器的参数
env mapping 环境变量
url string HTTP服务器地址
headers mapping HTTP请求头
timeout number 工具调用超时时间
connect_timeout number 初始连接超时
enabled bool 是否启用该服务器
tools mapping 工具过滤规则

一个真实场景

假设你要做一个代码审查助手,需要:

  1. 读取GitHub上的PR代码
  2. 查询Sentry获取最近的错误
  3. 把审查结果发到Slack

用MCP配置:

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "***"
    tools:
      include: [get_pull_request, get_file_contents]

  sentry:
    url: "https://mcp.sentry.io"
    headers:
      Authorization: "Bearer ***"

  slack:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-slack"]
    env:
      SLACK_BOT_TOKEN: "***"

配置好后,直接说:

帮我审查这个PR:owner/repo#123,然后把审查结果发到#code-review频道

AI自动调用GitHub MCP读取代码,调用Sentry MCP查错误,最后调用Slack MCP发消息。全程你不需要手动操作。

常见问题

所有MCP服务器都需要Token吗?

不一定。文件系统服务器就不需要。但GitHub、数据库这类需要认证的,就需要提供Token。

一个MCP服务器能同时开多个吗?

能。在config.yaml里配置多个不同的服务器,每个用不同的名字。

工具名冲突怎么办?

MCP工具会加前缀区分。如果两个服务器有同名工具,会变成mcp_server1_tool和mcp_server2_tool,不会冲突。

MCP服务器挂了怎么办?

对应的工具会报错,Hermes会告诉你哪个服务器出了问题。用/reload-mcp可以重新加载配置。

如何知道服务器暴露了哪些工具?

启动Hermes时,它会列出所有发现的MCP工具。也可以直接问它:你能用哪些MCP工具?

总结

MCP让Hermes Agent的扩展性大大提升。不需要自己写代码,直接接入社区现成的工具和服务。

核心价值:

  • 一个协议接所有外部工具
  • 本地和远程服务器都支持
  • 工具过滤防止干扰
  • 社区有大量现成服务器可用
  • 安全的环境变量控制

建议先从文件系统服务器开始试试,这是最简单的入门案例。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容

七天热门