Skip to content

第三章 MCP 集成

MCP(Model Context Protocol)是 AI 工具接入的标准协议。通过 MCP,Hermes Agent 可以连接数百种外部工具服务器——数据库、文件系统、API 网关——无需写一行代码。

MCP 是什么?

MCP 是一个开放协议,定义了 AI Agent 如何发现和调用外部工具。类比 USB-C——一个标准接口,接什么设备都行。

┌──────────────┐     MCP 协议     ┌──────────────┐
│  Hermes Agent │ ◄──────────────► │  MCP Server  │
│  (Client)     │   JSON-RPC      │  (工具提供方)  │
└──────────────┘                  └──────────────┘

核心概念:

  • MCP Server:提供工具的服务端(如文件系统、数据库、API)
  • MCP Client:连接 Server 并调用工具的客户端(Hermes 就是 Client)
  • Transport:通信方式(stdio 或 HTTP)

两种接入方式

Hermes 提供两种 MCP 接入方式:

方式一:Native MCP(推荐)

直接在 config.yaml 中配置,MCP 工具自动注册为 Hermes 原生工具。

方式二:mcporter CLI

通过 mcporter 技能临时连接和调试 MCP 服务器。

Native MCPmcporter
配置方式config.yaml对话中临时调用
持久化✅ 永久生效❌ 仅当次会话
自动发现✅ 启动时自动❌ 手动指定
适合场景日常使用调试、探索

配置 Native MCP

stdio 传输(本地命令)

yaml
# ~/.hermes/config.yaml
mcp_servers:
  filesystem:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
    env:
      NODE_OPTIONS: "--max-old-space-size=4096"

  sqlite:
    command: uvx
    args: ["mcp-server-sqlite", "--db-path", "/path/to/my.db"]

HTTP 传输(远程服务)

yaml
mcp_servers:
  my-api:
    url: https://my-mcp-server.example.com/mcp
    headers:
      Authorization: "Bearer ${MY_API_TOKEN}"

环境变量替换

支持 ${VAR} 语法引用环境变量:

yaml
mcp_servers:
  database:
    command: uvx
    args: ["mcp-server-postgres"]
    env:
      DATABASE_URL: "postgresql://${DB_USER}:${DB_PASS}@localhost/mydb"

管理 MCP 服务器

查看已配置的服务器

bash
hermes mcp list

查看服务器工具

bash
hermes mcp tools <server-name>

调试连接

bash
hermes mcp inspect <server-name>

交互式配置

bash
hermes mcp setup

常用 MCP Server

Server安装功能
filesystemnpx @modelcontextprotocol/server-filesystem文件读写
sqliteuvx mcp-server-sqliteSQLite 数据库
postgresuvx mcp-server-postgresPostgreSQL
githubnpx @modelcontextprotocol/server-githubGitHub API
brave-searchnpx @modelcontextprotocol/server-brave-searchBrave 搜索
puppeteernpx @modelcontextprotocol/server-puppeteer浏览器自动化
slacknpx @modelcontextprotocol/server-slackSlack API

TIP

MCP 生态正在快速增长。查看 MCP Server 目录 获取完整列表。


安全机制

工具过滤

Hermes 会自动过滤 MCP 工具中的危险操作:

yaml
mcp_servers:
  my-server:
    command: npx
    args: ["my-mcp-server"]
    # 可选:只允许特定工具
    allowed_tools:
      - read_file
      - search
    # 可选:禁止特定工具
    blocked_tools:
      - delete_all

自动重连

Native MCP 支持自动重连。如果 MCP Server 进程崩溃,Hermes 会自动重启它。

沙箱隔离

MCP Server 进程在独立的环境中运行,不会直接影响 Hermes 主进程。


实战:连接 SQLite 数据库

步骤 1:安装 MCP Server

bash
# 需要 uvx(uv 工具的一部分)
pip install uv

步骤 2:配置

yaml
# ~/.hermes/config.yaml
mcp_servers:
  my-db:
    command: uvx
    args: ["mcp-server-sqlite", "--db-path", "~/data/myapp.db"]

步骤 3:测试

你:连接 my-db 数据库,列出所有表
Hermes:[发现 MCP 工具...] [调用 list_tables...]
        数据库中有 3 个表:
        - users
        - orders
        - products
你:查询最近 10 条订单
Hermes:[调用 execute_sql...]
        | id | user | product | amount | date |
        |----|------|---------|--------|------|
        | 1  | 张三 | iPhone  | 6999   | 04-12|
        | ... |

步骤 4:自然语言查询

MCP 工具注册后,你可以用自然语言操作数据库:

你:帮我查一下哪些用户的订单总额超过 10000
Hermes:[自动生成 SQL 并执行...]

mcporter 技能

mcporter 技能提供交互式 MCP 管理:

你:用 mcporter 列出所有已配置的 MCP 服务器
Hermes:[调用 mcporter CLI...]
        已配置 2 个服务器:
        1. filesystem (stdio) - 5 tools
        2. my-db (stdio) - 3 tools

临时连接一个新的 MCP Server:

你:用 mcporter 临时连接 npx @my-org/my-mcp-server
Hermes:[启动临时 MCP Server...] [发现工具...]
        找到 4 个工具:...

深入阅读


基于 CC BY-NC-SA 4.0 发布 | GitHub