使用 MCP 与 Hermes
本指南展示了如何在日常工作流中实际使用 MCP 与 Hermes Agent。
如果功能页面解释了什么是 MCP,那么本指南将重点介绍如何快速、安全地从 MCP 中获取价值。
何时使用 MCP?
当满足以下条件时,请使用 MCP:
- 工具已存在于 MCP 形式中,而您不希望构建原生的 Hermes 工具
- 您希望 Hermes 通过干净的 RPC 层与本地或远程系统进行交互
- 您需要对每个服务器进行精细的暴露控制
- 您希望连接 Hermes 到内部 API、数据库或公司系统,而无需修改 Hermes 核心
不应在以下情况下使用 MCP:
- 内置的 Hermes 工具已经很好地解决了问题
- 服务器暴露了庞大且危险的工具表面,而您尚未准备好进行过滤
- 您只需要一个非常狭窄的集成,原生工具会更简单、更安全
心智模型
将 MCP 视为一个适配器层:
- Hermes 保持作为智能体 (agent) 的角色
- MCP 服务器贡献工具
- Hermes 在启动或重新加载时发现这些工具
- 模型可以像使用普通工具一样使用它们
- 您控制每个服务器可见的程度
最后一点非常重要。良好的 MCP 使用不仅仅是“连接所有东西”。它是“连接正确的、具有最小有用表面的东西”。
步骤 1:安装 MCP 支持
如果您使用标准安装脚本安装了 Hermes,MCP 支持已包含在内(安装程序运行 uv pip install -e ".[all]")。
如果您没有使用 extras 进行安装,需要单独添加 MCP:
cd ~/.hermes/hermes-agent
uv pip install -e ".[mcp]"
对于基于 npm 的服务器,请确保已安装 Node.js 和 npx。
对于许多 Python MCP 服务器,uvx 是一个不错的默认选择。
步骤 2:首先添加一个服务器
从一个单一、安全的服务器开始。
示例:仅对一个项目目录的文件系统访问。
mcp_servers:
project_fs:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/my-project"]
然后启动 Hermes:
hermes chat
现在提出一个具体的请求:
检查此项目并总结仓库的布局。
步骤 3:验证 MCP 已加载
您可以通过几种方式验证 MCP:
- 配置后,Hermes 徽章/状态应显示 MCP 集成
- 询问 Hermes 它有哪些可用的工具
- 配置更改后使用
/reload-mcp - 如果服务器连接失败,请检查日志
一个实用的测试提示:
告诉我当前有哪些 MCP 支持的工具可用。
步骤 4:立即开始过滤
如果服务器暴露了大量工具,请不要等到以后再进行过滤。
示例:仅白名单您想要的
mcp_servers:
github:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "***"
tools:
include: [list_issues, create_issue, search_code]
对于敏感系统,这通常是最好的默认设置。
示例:黑名单危险操作
mcp_servers:
stripe:
url: "https://mcp.stripe.com"
headers:
Authorization: "Bearer ***"
tools:
exclude: [delete_customer, refund_payment]
示例:禁用实用封装器
mcp_servers:
docs:
url: "https://mcp.docs.example.com"
tools:
prompts: false
resources: false
过滤实际影响了什么?
在 Hermes 中,MCP 暴露的功能分为两类:
- 服务器原生的 MCP 工具
- 使用
tools.include - 使用
tools.exclude
- Hermes 添加的实用封装器
- 使用
tools.resources - 使用
tools.prompts
您可能看到的实用封装器
资源 (Resources):
list_resourcesread_resource
提示 (Prompts):
list_promptsget_prompt
只有在满足以下条件时,这些封装器才会出现:
- 您的配置允许它们,并且
- MCP 服务器会实际支持这些功能
因此,如果服务器不支持资源/提示,Hermes 也不会假装它拥有它们。
常见模式
模式 1:本地项目助手
当您希望 Hermes 基于一个有界的工作区进行推理时,请使用 MCP 来处理仓库本地的文件系统或 Git 服务器。
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 状态,并总结最近发生的变化。
模式 2:GitHub 故障排除助手
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 的开放问题,按主题聚类,并为最常见的错误起草高质量的问题。
搜索仓库中对 _discover_and_register_server 的使用,并解释 MCP 工具是如何注册的。
模式 3:内部 API 助手
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
好的提示:
查找客户 ACME Corp,并总结最近的发票活动。
对于这类场景,严格的白名单远优于排除列表。
模式 4:文档/知识服务器
某些 MCP 服务器暴露的提示或资源更像是共享知识资产,而不是直接的操作。
mcp_servers:
docs:
url: "https://mcp.docs.example.com"
tools:
prompts: true
resources: true
好的提示:
列出文档服务器可用的 MCP 资源,然后阅读入职指南并进行总结。
列出文档服务器暴露的提示,并告诉我哪些提示有助于事件响应。
教程:带过滤的端到端设置
这是一个实用的进阶过程。
阶段 1:使用严格白名单添加 GitHub MCP
mcp_servers:
github:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "***"
tools:
include: [list_issues, create_issue, search_code]
prompts: false
resources: false
启动 Hermes 并询问:
搜索代码库中关于 MCP 的引用,并总结主要的集成点。
阶段 2:仅在需要时扩展
如果您以后还需要问题更新功能:
tools:
include: [list_issues, create_issue, update_issue, search_code]
然后重新加载:
/reload-mcp
阶段 3:添加具有不同策略的第二个服务器
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
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/project"]
现在 Hermes 可以将它们结合起来:
检查本地项目文件,然后创建一个总结您发现的 bug 的 GitHub 问题。
这就是 MCP 强大的地方:在不更改 Hermes 核心的情况下实现多系统工作流。
安全使用建议
优先为危险系统使用白名单
对于任何涉及财务、客户或具有破坏性的操作:
- 使用
tools.include - 从最小的集合开始
禁用未使用的实用工具
如果您不希望模型浏览服务器提供的资源/提示,请将其关闭:
tools:
resources: false
prompts: false
保持服务器范围狭窄
示例:
- 文件系统服务器根目录限制在一个项目目录,而不是整个主目录
- Git 服务器指向一个仓库
- 内部 API 服务器默认具有只读的工具暴露
更改配置后重新加载
/reload-mcp
在更改以下内容后执行此操作:
- include/exclude 列表
- 启用标志
- resources/prompts 开关
- 认证头/环境变量
按症状进行故障排除
“服务器连接了,但我预期的工具丢失了”
可能的原因:
- 被
tools.include过滤了 - 被
tools.exclude排除了 - 通过
resources: false或prompts: false禁用了实用封装器 - 服务器实际上不支持资源/提示
“服务器已配置,但什么都没有加载”
检查:
- 配置中是否留下了
enabled: false - 命令/运行时是否存在 (
npx,uvx等) - HTTP 端点是否可达
- 认证环境变量或头是否正确
“为什么我看到的工具比 MCP 服务器声称的要少?”
因为 Hermes 现在尊重您针对每个服务器的策略和能力感知注册。这是预期的,通常也是可取的。
“如何移除 MCP 服务器而又不删除配置?”
使用:
enabled: false
这保留了配置,但阻止了连接和注册。
推荐的初始 MCP 设置
大多数用户的好初始服务器:
- 文件系统
- Git
- GitHub
- 抓取 / 文档 MCP 服务器
- 一个狭窄的内部 API
不推荐的初始服务器:
- 具有大量破坏性操作且没有过滤的大型业务系统
- 任何您不够了解而无法约束的系统