用了 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: false 和 resources: 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: false 和 tools.prompts: false 关掉就行,干净。
举个例子:Stripe 的 MCP 服务器有 delete_customer、refund_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_issues、create_issue、search_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