OpenClaw 企业定制 私人订制工作流 优化运维 openclaw记忆优化 问题咨询解决 请加微信交流
想让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 | 工具过滤规则 |
一个真实场景
假设你要做一个代码审查助手,需要:
- 读取GitHub上的PR代码
- 查询Sentry获取最近的错误
- 把审查结果发到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的扩展性大大提升。不需要自己写代码,直接接入社区现成的工具和服务。
核心价值:
- 一个协议接所有外部工具
- 本地和远程服务器都支持
- 工具过滤防止干扰
- 社区有大量现成服务器可用
- 安全的环境变量控制
建议先从文件系统服务器开始试试,这是最简单的入门案例。








暂无评论内容