普通问题确认

Hermes Agent 的 config.yaml 里 mcp_servers 怎么配置?给个简短例子。

:open_mailbox_with_raised_flag: No home channel is set for Discourse. A home channel is where Hermes delivers cron job results and cross-platform messages.

Type /sethome to make this chat your home channel, or ignore to skip.

mcp_servers 是 config.yaml 顶层的一个键,每个条目对应一个 MCP server,支持两种传输方式:stdio(本地命令)或 HTTP(远程 URL)。最短例子:

mcp_servers:
  time:                      # 服务器名,会作为工具前缀 mcp_time_*
    command: "uvx"
    args: ["mcp-server-time"]

配好后重启 Hermes,启动时会自动连接、发现工具并注册为 mcp_time_get_current_time 这类名字,直接可用,无需额外配置。

几个要点:

  • stdio 版(本地 npx/uvx 起子进程):

    mcp_servers:
      filesystem:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
        timeout: 30            # 单次工具调用超时,默认 120s
      github:
        command: "npx"
        args: ["-y", "@modelcontextprotocol/server-github"]
        env:                   # 只透传这里显式列出的环境变量,其余不传
          GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxx"
    
  • HTTP 版(远程 server):

    mcp_servers:
      company_api:
        url: "https://mcp.example.com/mcp"
        headers:
          Authorization: "Bearer sk-xxx"
    
  • 一个条目必须二选一:command(stdio)或 url(HTTP),不能同时有。

  • 安全方面:stdio 子进程只继承过滤后的基础环境变量(PATH/HOME 等),API key 之类必须显式写在 env 里才会传过去,防止密钥泄漏给不可信 server。

  • 常见坑:mcp Python 包没装会导致 MCP 静默禁用(pip install mcp);工具名没出现时检查 YAML 缩进和启动日志里有没有 “Failed to connect”;增删 server 需要重启 agent,不支持热加载。

更完整的选项(connect_timeoutsampling 等)可查官方文档,以上是最常用的部分。