用了 Hermes 这么久,有一个问题我一直没绕开:它能做的事,永远受限于 Nous 团队写了什么工具。

你想让 Hermes 查 GitHub Issue?得等官方支持。想让它操作 Linear 看板?得等。想让它连公司内网 API?别想了,自己写插件吧。每次有新的需求,唯一的路径就是“等官方”或者“自己造”。

直到 MCP 内置进来,这件事彻底变了。

MCP 不是新概念,但 Hermes 把它做到了“能用”的程度

MCP(Model Context Protocol)是 Anthropic 推的开放协议,简单说就是定义了一套标准,让 AI Agent 能像调内置函数一样调用外部工具。这个协议本身不新鲜——Claude Code、Cursor、Aider 都支持。

但 Hermes 做了一件让这件事从“能用”变成“好用”的事:Catalog(目录)。

它不是让你去 GitHub 上翻几十个 MCP 服务器的 README、抄命令、猜配置,而是直接内置了一个交互式面板。

使用前记得先升级一下 Hermes:

hermes update

然后执行命令开启:

hermes mcp

回车之后弹出来的列表长这样:

n8n          available              管理和检查 n8n 工作流
linear       enabled                Linear Issue/项目管理 (远程 OAuth)
github       installed (disabled)   GitHub Repo + PR 工具

每一行告诉你当前状态:还没装的、已装但关了的、正在用的。光标移到哪行敲回车,安装流程自动启动。配 API Key、做 OAuth 授权、选你要用哪些工具——全部在终端里交互式完成,不需要手动改 YAML。

从零到跑通:完整的安装教程

前置条件

如果你用标准安装脚本装的 Hermes,MCP 依赖已经自带了。不确定的话跑一下:

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

如果有 MCP 服务器是 npm 包的(比如 GitHub、文件系统),确保本地装了 Node.js 和 npx:

node --version   # 需要 >= 18
npx --version

方式一:用 Catalog 一键安装(推荐)

这是最省事的路径。拿 GitHub 为例:

第一步,打开 Catalog:

hermes mcp

第二步,在列表里找到 github,回车。

第三步,Hermes 会提示输入 GitHub Personal Access Token(去 https://github.com/settings/tokens 生成一个,权限勾上 repo 和 issues 就够了)。输完之后 token 存在 ~/.hermes/.env 里,不用每次重输。

第四步,Hermes 会自动连接 GitHub MCP 服务器,探测它暴露了哪些工具,弹一个勾选清单:

Select tools for 'github' (SPACE 切换, ENTER 确认)
  [x] list_issues       列出 Issues
  [x] create_issue      创建 Issue
  [x] search_code       搜索代码
  [ ] delete_repo       删除仓库
  ...

空格键勾选/取消,回车确认。注意:危险的默认不勾(比如 delete_repo),你手动开才算数。这个细节挺好的——不是全开,是你来决定。

第五步,重启 Hermes 或敲 /reload-mcp,然后直接跟它说“列出我 GitHub 上标记为 bug 的 open issues”。Hermes 会自动调用 mcp_github_list_issues

如果安装时连接失败了怎么办?

不慌。服务不可达的时候安装照样能完成——Hermes 会用 manifest 预设的默认勾选(如果有),或者不写过滤规则。等服务器能连了,再跑一次 hermes mcp configure github 重新打开勾选清单。

方式二:手动写配置

不想用 Catalog 的,直接在 ~/.hermes/config.yaml 里加:

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxxxxxxxxxxx"
    tools:
      include: [list_issues, create_issue, search_code]
      prompts: false
      resources: false

tools.include 是白名单,只开这几项;prompts: falseresources: false 是关闭服务器自带的提示词和资源浏览,减少不必要的暴露面。改完配置之后会话里敲 /reload-mcp 即时生效。

方式三:远程 HTTP 服务器(OAuth 认证)

很多 SaaS 服务的 MCP 端点是 HTTP 的,而且需要 OAuth 授权(Linear、Sentry、Atlassian、Figma 等等)。配置简单到离谱:

mcp_servers:
  linear:
    url: "https://mcp.linear.app/mcp"
    auth: oauth

就三行。Hermes 自动处理整个 OAuth 2.1 流程:动态客户端注册、PKCE、token 交换、自动刷新。第一次连接时弹浏览器让你点授权,之后 token 存在 ~/.hermes/mcp-tokens/linear.json,后续自动复用。

如果你的 Hermes 跑在远程服务器上怎么办? 浏览器不在同一台机器,没法弹窗。Hermes 给了两个办法:一是在终端手动粘贴回调 URL(提示里会同时打印 authorize URL 和“或者粘贴重定向 URL”),二是开个 SSH 端口转发 ssh -N -L <port>:127.0.0.1:<port> user@host

工具命名规则

所有 MCP 工具注册到 Hermes 时名称会自动加前缀:mcp_<服务器名>_<工具名>。比如 GitHub 的 create-issue 变成 mcp_github_create_issue。你平时不需要手动叫这个前缀名——Hermes 推理时会自己选——但知道这个规则有助于你在调试时理解它到底调了什么。

学会过滤,比学会安装更重要

MCP 最大的坑不是装不上,而是装太多。

很多 MCP 服务器暴露几十个工具,财务类、数据库类还有删除、退款这种危险操作。全开给 Agent 等于给陌生人你的银行卡密码。

Hermes 提供三层控制:

第一层:服务器级别开关。 直接 enabled: false,整个服务器不和 Hermes 建立连接。适合暂时不用但不想删配置的情况。

第二层:工具级白名单/黑名单。 tools.include 只开指定的几个,tools.exclude 只关危险的那几个。如果有冲突(同一个工具同时出现在 include 和 exclude 里),include 说了算。

第三层:关闭辅助功能。 有些 MCP 服务器支持“资源”和“提示词”浏览——本质上就是让 Agent 能看到服务器里的结构化数据和预设提示模板。如果你不需要这些能力,tools.resources: falsetools.prompts: false 关掉就行,干净。

举个例子:Stripe 的 MCP 服务器有 delete_customerrefund_payment 这种真要命的功能。合理配置:

mcp_servers:
  stripe:
    url: "https://mcp.stripe.com"
    headers:
      Authorization: "Bearer ***"
    tools:
      exclude: [delete_customer, refund_payment]

四种实战模式,从入门到日常

官方指南推荐了四种典型场景,我翻了一遍,整理成更实用的版本:

模式一:本地项目助手。 接文件系统和 Git MCP 服务器,让 Hermes 在限定目录里做代码审查。

mcp_servers:
  fs:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/project"]
  git:
    command: "uvx"
    args: ["mcp-server-git", "--repository", "/home/user/project"]

然后直接问“检查项目结构,告诉我配置都放在哪”“看看本地 git 状态,最近改了什么”。注意文件系统只绑了一个项目目录,不是你整个 home 目录——这就是“限定范围”的意义。

模式二:GitHub 问题管家。 接 GitHub MCP,只开 Issue 管理和代码搜索,不开任何危险操作。

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

典型用法:“把 MCP 相关的 open issues 按主题归类,然后给最常见的那个 bug 写一个高质量的 issue 描述”“搜索代码仓库里 _discover_and_register_server 的用法,解释 MCP 工具是怎么注册的”。

模式三:企业内部 API 助手。 接公司的 HTTP MCP 端点,开只读权限为主的白名单。

mcp_servers:
  internal_api:
    url: "https://mcp.internal.example.com"
    headers:
      Authorization: "Bearer ***"
    tools:
      include: [list_customers, get_customer, list_invoices]
      resources: false
      prompts: false

这种场景下白名单远比黑名单重要——你不知道 API 未来会不会加危险操作,白名单只开你现在需要的几项,新工具不会自动暴露。

模式四:WSL2 远程浏览器控制。 这是一个很实用的特殊场景:Hermes 跑在 WSL2 里,Chrome 跑在 Windows 上,原生 /browser connect 不好使。通过 MCP 桥接:

hermes mcp add chrome-devtools-win \
  --command cmd.exe \
  --args /c npx -y chrome-devtools-mcp@latest --autoConnect --no-usage-statistics

启动 Hermes 之后,直接用 mcp_chrome_devtools_win_list_pages 列出浏览器标签页。前提是你的 Windows Chrome 开过远程调试(chrome://inspect/#remote-debugging)。

可以分阶段来,不用一次吃成胖子

官方指南给了个 Phase 1→2→3 的渐进路径,我觉得很实用:

Phase 1:先接一个,白名单紧一点。 比如 GitHub,只开 list_issuescreate_issuesearch_code 三项。跑几天感觉没问题了再说。

Phase 2:自然扩展。 用着用着发现:“哦,我还需要 update_issue 来改标签”。那就加到 include 里,敲 /reload-mcp,完事。

Phase 3:多服务联合作战。 同时挂 GitHub 和文件系统,然后问一句“检查本地代码,找到 bug 之后在 GitHub 上开 issue”——这种跨系统的任务在 MCP 之前是不可能一句话完成的事。

Hermes 自己也能当 MCP 服务器

最让我意外的功能:Hermes 不仅能 MCP 服务器,它自己也能 MCP 服务器。

hermes mcp serve

然后其他支持 MCP 的 Agent——比如 Claude Code——就可以把 Hermes 当成“消息中间件”。在 Claude Code 的配置里加:

{
  "mcpServers": {
    "hermes": {
      "command": "hermes",
      "args": ["mcp", "serve"]
    }
  }
}

Claude Code 就能调用 10 个工具:列出你在所有平台上的对话、读取消息历史、发送消息、轮询新消息事件。你代码写到一半,直接让 Claude Code 通过 Hermes 往飞书群发一条“部署完成”,不需要切窗口。

这意味着 Hermes 从“自己的 Agent”变成了“所有 Agent 的消息总线”。不是自己被替代,而是成了基础设施。

MCP 到底改变了什么

我装 Hermes 的初衷是实现“用一个界面跟多个 Agent 聊天”。那时候它的工具能力全部靠内置——能做文件操作、能做终端命令、能管记忆,但边界很明确。

MCP 把这层天花板拆了。

不是因为多了一个功能,是因为它把 Hermes 的能力模型从“内置能力集”变成了“内置核心 + 外部无限延展”。内置管好本地文件、终端、记忆、技能这些刚需;外面的一切——GitHub、Linear、数据库、浏览器、企业 API——通过 MCP 接入,而且装一个新服务就是一条命令的事。

这个转变的本质是:Hermes 从“一个功能完善的应用”,变成了“一个 Agent 的操作系统”。

操作系统自己只有内核和基础能力,真正的生产力来自上面跑的第三方应用。Hermes 现在就是这个思路:自己管调度、管记忆、管消息路由,第三方工具以 MCP 的形式接进来。

所以如果你之前觉得“Hermes 不支持 XXX 所以我不想用”,现在这个理由基本不成立了——只要有 XXX 的 MCP 服务器,一条命令就接上了。如果 XXX 还没人写 MCP 服务器,那就去 https://github.com/NousResearch/hermes-agent/tree/main/optional-mcps 提个 PR,让所有人一起用。

最后几个实用提示

  • MCP 不会自动更新。 想刷新某个服务,重跑一次 hermes mcp install <名称>
  • 改工具选择随时可以。 hermes mcp configure linear 重新打开那个勾选清单。
  • 想知道 Hermes 到底注册了哪些 MCP 工具? 聊天里直接问:“告诉我你现在有哪些 MCP 工具可用。”
  • 配置完不确定有没有生效? /reload-mcp,然后看 Hermes 的启动 banner,配置了的 MCP 服务器会显示出来。
  • OAuth 配置不要在 Hermes 运行期间做。 config.yaml 的热重载超时只有 30 秒,不够走完 OAuth 授权。在另一个终端里跑 hermes mcp login <服务器名>,它给你 5 分钟。

功能文档https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp 使用指南https://hermes-agent.nousresearch.com/docs/guides/use-mcp-with-hermes Catalog 仓库https://github.com/NousResearch/hermes-agent/tree/main/optional-mcps

123