这是我的第479篇原创文章。
『数据杂坛』以Python语言为核心,垂直于数据科学领域,专注于(可戳👉)Python程序设计|数据分析|特征工程|机器学习分类|机器学习回归|深度学习分类|深度学习回归|单变量时序预测|多变量时序预测|语音识别|图像识别|自然语音处理|大语言模型|软件设计开发等技术栈交流学习,涵盖数据挖掘、计算机视觉、自然语言处理等应用领域。(文末有惊喜福利)

一、引言
1、MCP 要解决的问题
如果每接入一个系统,都要在 Hermes 本体里重新写一个原生 tool,那么开发成本会非常高。更麻烦的是,不同 Agent 框架可能都要重复写一遍同样的集成。
这就是 MCP 要解决的问题。
MCP 的核心思想是:不要让每个 Agent 都为每个工具单独写一套适配代码,而是用一种标准协议,把外部工具以统一方式暴露给 Agent。
没有 MCP:每个 Agent 单独适配每个工具。有了 MCP:工具以 MCP server 形式暴露,Agent 作为 MCP client 接入。
这让工具生态从“各接各的”变成“按标准连接”。
2、Hermes Agent 的几个核心模块
Tools:Hermes 能做什么;MCP:Hermes 能连接哪些外部工具;Skills:Hermes 应该如何使用这些工具;Cron:Hermes 什么时候使用这些工具;Gateway:用户从哪里触发和接收结果;Memory:Hermes 如何结合长期背景理解工具结果。
假设我希望 Hermes 每天总结一个项目的 issue 状态,可以这样设计:
目标:每天上午 9 点检查 GitHub 仓库中的 open issues 和 pull requests,生成项目状态日报。MCP:GitHub MCP server。工具过滤:只开放 list_issues、search_code、create_issue、update_issue。不开放 delete、merge、release、repo admin 等工具。Cron:每天上午 9 点触发。Skill:绑定 project-status-report skill,规定日报格式。Gateway:结果发送到 Telegram home channel。
3、Hermes 使用 MCP 的基本流程可以拆成几步
1. 用户在 Hermes 配置文件中添加 MCP server;2. Hermes 启动时连接这些 server;3. MCP server 返回自己支持的工具、资源或 prompts;4. Hermes 自动发现并注册这些能力;5. 模型在对话中看到这些工具;6. 当任务需要时,模型选择合适的 MCP 工具;7. Hermes 把调用请求发送给对应 MCP server;8. MCP server 执行工具并返回结果;9. Hermes 把结果交给模型继续推理。
这个流程和内置工具调用很像。区别在于,内置工具的执行逻辑在 Hermes 内部,而 MCP 工具的执行逻辑在外部 server 中。
4、何时应该使用 MCP?
5、在以下情况下不要使用 MCP
二、实现MCP SERVER
server.py











这个MCP Server下面有get_weather、get_weather_forcast、list_citys三个tool。
Hermes 支持两类常见 MCP server:
本地 stdio server;远程 HTTP server。
本地 stdio server:本地 stdio server 是通过本地命令启动的 MCP server。
mcp_servers:filesystem:command: "npx"args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
这个配置的意思是:Hermes 启动时通过 npx 运行一个 filesystem MCP server,并把 /home/user/projects 暴露给这个 server。
这种方式适合本地工具,例如:
文件系统;本地数据库;本地浏览器工具;本地脚本封装;开发环境工具。
优点是简单、直接、适合个人开发环境。缺点是它依赖本机环境,如果 Node、Python、依赖包或路径有问题,就可能启动失败。
fastmcp run server.py远程 HTTP MCP server:远程 HTTP server 是通过 URL 连接的 MCP server。URL是MCP Server的key。internal_api是给MCP Server起的名字。
mcp_servers:internal_api:url: "https://mcp.example.com/mcp"headers:Authorization: "Bearer ***"
这种方式适合企业内部服务、云端工具、远程 API、托管型 MCP 服务等。优点是服务可以集中部署、统一维护,也更适合团队共享。缺点是需要处理认证、网络、TLS、超时和权限问题。
mcp.run(transport="http", host="0.0.0.0", port=8080)启动mcp server(远程 HTTP server):

MCP Server的地址:http://.../mcp
三、在Hermes实现外部自定义技能
1、在~/.hermes/目录下创建技能目录结构(外部技能):
mkdir -p smb-skills/weather-querycd smb-skills/weather-query
2、进入weather-query编写技能配置文件SKILL.md

SKILL.md内容如下:



name是给技能起的名字。
3、在 ~/.hermes/config.yaml 的 skills 部分添加 external_dirs:

4、启动Hermes:

5、测试:

连接上MCP Server的工具:

MCP 工具命名:为什么会出现 mcp_xxx_xxx?
Hermes 会把 MCP server 中暴露的工具注册成模型可见工具。为了避免和内置工具重名,通常会加上前缀。例如,一个名为 github 的 MCP server 暴露了 create_issue 工具,注册到 Hermes 后可能会变成:
mcp_github_create_issue作者简介:
读研期间发表6篇SCI数据算法相关论文,目前在某研究院从事数据算法相关研究工作,结合自身科研实践经历不定期持续分享关于Python、数据分析、特征工程、机器学习、深度学习、人工智能系列基础知识与案例。
致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。
1、关注下方公众号,点击“领资料”即可免费领取电子资料书籍。
2、文章底部点击喜欢作者即可联系作者获取相关数据集和源码。
3、数据算法方向论文指导或就业指导,点击“联系我”添加作者微信直接交流。
4、有商务合作相关意向,点击“联系我”添加作者微信直接交流。

