H繁中版
<!-- Source: https://hermesbible.com/docs/user-guide/features/mcp -->

Section: Core Features · URL: https://hermesbible.com/docs/user-guide/features/mcp

MCP 讓 Hermes Agent 連接外部工具伺服器,使 agent 可以使用位於 Hermes 本身的工具之外的工具——GitHub、資料庫、檔案系統、瀏覽器工具列、內部 API 等等。

如果你曾經想讓 Hermes 使用已經存在於其他地方的工具,MCP 通常是最乾淨的方式。

MCP 提供的功能

  • 無需先編寫原生 Hermes 工具即可存取外部工具生態系
  • 在同一份設定中同時支援本地 stdio 伺服器和遠端 HTTP MCP 伺服器
  • 啟動時自動發現並註冊工具
  • 當伺服器支援時,提供 MCP 資源和提示的實用工具封裝器
  • 可按伺服器篩選,只暴露你真正想讓 Hermes 看到的 MCP 工具

快速入門

  1. 安裝 MCP 支援(如果你使用標準安裝腳本,已包含在內):
cd ~/.hermes/hermes-agent
uv pip install -e ".[mcp]"
  1. ~/.hermes/config.yaml 中新增 MCP 伺服器:
mcp_servers:
  filesystem:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
  1. 啟動 Hermes:
hermes chat
  1. 請求 Hermes 使用 MCP 支援的功能。

例如:

List the files in /home/user/projects and summarize the repo structure.

Hermes 會發現 MCP 伺服器的工具,並像使用其他任何工具一樣使用它們。

目錄:一鍵安裝經過 Nous 審核的 MCP

Hermes 附帶一個由 Nous 團隊審核並合併的精選 MCP 伺服器目錄。它們預設是停用的——只安裝你真正想要的。

hermes mcp                # 互動式選擇器(預設)
hermes mcp catalog        # 純文字列表,可用於腳本
hermes mcp install n8n    # 依名稱安裝目錄項目

選擇器會顯示每個項目的目前狀態:

n8n          available              Manage and inspect n8n workflows from Hermes
linear       enabled                Linear issue/project management (remote OAuth)
github       installed (disabled)   GitHub repo + PR tools

按下 Enter 即可安裝(並完成所需的憑證設定)、啟用、停用或解除安裝。目錄項目儲存在 hermes-agent 儲存庫的 optional-mcps/ 目錄中——存在於該目錄即代表 Nous 已核准。沒有社群提交機制;項目透過合併 PR 新增。

目錄項目可能需要:

  • API 金鑰 — Hermes 在安裝時提示輸入,並將值寫入 ~/.hermes/.env。非機密值(如基礎 URL)也寫入同一檔案。
  • OAuth(遠端 MCP)— 在設定中寫為 auth: oauth;MCP 客戶端會在首次連線時開啟瀏覽器。
  • OAuth(第三方供應商如 Google/GitHub)— 如果你尚未完成驗證,Hermes 會引導你執行 hermes auth <provider>

安裝時的工具選擇

憑證設定完成後,Hermes 會探測 MCP 伺服器以列出所有暴露的工具,並顯示一個勾選清單:

Select tools for 'linear' (SPACE toggle, ENTER confirm)
  [x] find_issues       Find issues matching a query
  [x] get_issue         Get a single issue
  [x] create_issue      Create a new issue
  [ ] delete_workspace  Delete a Linear workspace
  ...

預先勾選的項目來自:

  1. 你先前的選擇 — 如果你之前安裝過此項目(重新安裝會保留你之前的選擇——manifest 的預設值不會覆蓋它)
  2. manifest 的 tools.default_enabled — 如果該項目有宣告的話(某些目錄項目會預先排除變更性或較少使用的工具)
  3. 所有工具 — 如果以上兩者都不適用

按下 ENTER 提交勾選清單。只有被勾選的工具會寫入 mcp_servers.<name>.tools.include。如果你選擇了所有工具,則不會寫入任何篩選器(最乾淨的設定形狀,行為完全相同)。

如果探測失敗(伺服器無法連線、OAuth 尚未完成、後端服務未運行),安裝仍然會成功:manifest 的 tools.default_enabled 會直接套用(如果已宣告),或者不寫入篩選器(如果未宣告)。等到伺服器可連線後,再執行 hermes mcp configure <name> 以進行調整。

信任模型

安裝目錄項目會執行 manifest 指定的任何操作——git clone、該項目的 bootstrap 指令(pip installnpm install 等),以及最終 MCP 伺服器本身的程式碼。Manifest 透過 PR 審核機制守護在 hermes-agent 儲存庫中,因此 Nous 在每個項目發布前都已審核——但你應該在安裝前閱讀 manifest,特別是 source: 欄位的儲存庫、install.bootstrap: 指令,以及任何 transport.command: 呼叫。

Manifest 位於 GitHub 上的 optional-mcps/<name>/manifest.yaml。選擇器也會在安裝時顯示 manifest 的 source: URL,方便你快速驗證上游儲存庫。

Manifest 版本相容性

Manifest 會鎖定 manifest_version。目錄是向前相容的:如果一個 PR 新增了比你安裝的 Hermes 版本更新的 manifest_version 的項目,選擇器會顯示警告(⚠ '<name>' requires a newer Hermes)而不是靜靜隱藏它。看到這個訊息時,執行 hermes update 以安裝最新版 Hermes。

運行時 ${ENV_VAR} 取代

在項目的 transport.commandtransport.argstransport.urlheaders 中,${VAR} 佔位符會在伺服器連線時從環境變數解析(包括 ~/.hermes/.env 中的所有內容)。這在目錄項目需要引用使用者在其他地方設定的值時很有用——例如 ${HOME}/foo${MY_PROVIDER_TOKEN}

請注意,這與目錄 manifest 中的 ${INSTALL_DIR} 不同,後者是在安裝時取代為目錄 clone 該項目儲存庫的路徑。

之後更新工具選擇

hermes mcp configure linear

重新開啟相同的勾選清單,你目前的選擇已預先勾選。當你想要啟用更多工具,或者伺服器新增了你想要啟用的新工具時,可以使用此指令。

更新目錄 manifest

MCP 永遠不會自動更新。在 Hermes 更新後,如果 manifest 版本發生變化,請重新執行 hermes mcp install <name> 以刷新。

要將 MCP 新增到目錄,請向 optional-mcps/ 提交 PR。

兩種 MCP 伺服器

Stdio 伺服器

Stdio 伺服器作為本地子行程運行,透過 stdin/stdout 通訊。

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "***"

適用 stdio 伺服器的時機:

  • 伺服器安裝在本地
  • 你想要低延遲地存取本地資源
  • 你正在遵循顯示 commandargsenv 的 MCP 伺服器文件

HTTP 伺服器

HTTP MCP 伺服器是 Hermes 直接連線的遠端端點。

mcp_servers:
  remote_api:
    url: "https://mcp.example.com/mcp"
    headers:
      Authorization: "Bearer ***"

適用 HTTP 伺服器的時機:

  • MCP 伺服器託管在其他地方
  • 你的組織暴露了內部 MCP 端點
  • 你不希望 Hermes 為該整合啟動本地子行程

OAuth 驗證的 HTTP 伺服器

大多數託管 MCP 伺服器(Linear、Sentry、Atlassian、Asana、Figma、Stripe……)需要 OAuth 2.1 而非靜態 bearer token。設定 auth: oauth,Hermes 會透過 MCP Python SDK 處理發現、動態客戶端註冊、PKCE、token 交換、重新整理和升級驗證。

mcp_servers:
  linear:
    url: "https://mcp.linear.app/mcp"
    auth: oauth

首次連線時,Hermes 會顯示授權 URL,盡可能開啟你的瀏覽器,並在本地迴圈連接埠等待 OAuth 回呼。Token 以 0o600 權限快取在 ~/.hermes/mcp-tokens/<server>.json;後續執行會靜默重用,直到重新整理失敗。

遠端 / 無頭主機。 當 Hermes 運行在與瀏覽器不同的機器上時,迴圈回呼無法連到你的筆電。有兩種方式完成流程:

  • 貼回(無需設定): 在互動式終端機上,Hermes 會在授權 URL 旁邊顯示「Or paste the redirect URL here…」。在瀏覽器中開啟該 URL,核准後,複製瀏覽器最終到達的完整 URL(重新導向會顯示連線錯誤——這是預期的),貼到提示處。純粹的 ?code=…&state=… 查詢字串也可以。
  • SSH 連接埠轉發: 在另一個終端機中執行 ssh -N -L <port>:127.0.0.1:<port> user@host,然後讓重新導向正常進行。

完整的操作流程請參閱 OAuth over SSH / Remote Hosts,包括無 DCR 的伺服器(如 Slack)、預先註冊的 client_id/client_secret、範圍自訂,以及透過 hermes mcp login <server> 重新驗證。

常見陷阱——不支援自動註冊的供應商(Google Drive、Atlassian)。 某些伺服器會拒絕 auth: oauth 依賴的動態客戶端註冊步驟(RFC 7591)——Google 官方的 Drive 伺服器(https://drivemcp.googleapis.com/mcp/v1)會回傳 400 Bad Request,因此不會建立 OAuth 客戶端也不會取得 token。症狀很微妙:這些伺服器也會在不需驗證的情況下提供 tools/list,所以 hermes mcp login 可以列出工具並看似成功,但之後每個實際工具呼叫都會逾時。hermes mcp login 現在可以偵測到這種情況(它會檢查 token 是否實際寫入磁碟),並提示你提供自己的 OAuth 客戶端。在供應商控制台建立一個,然後加入設定:

mcp_servers:
  googledrive:
    url: "https://drivemcp.googleapis.com/mcp/v1"
    auth: oauth
    oauth:
      client_id: "<your-oauth-client-id>"
      client_secret: "<your-oauth-client-secret>"

然後執行 hermes mcp login googledrive——使用預先註冊的客戶端後,Hermes 會跳過註冊並執行正常的瀏覽器授權流程。

常見陷阱——設定自動重新載入競態。 當你在運行中的 Hermes session 內編輯 ~/.hermes/config.yaml 時,CLI 會以 30 秒逾時自動重新載入 MCP 連線。這對互動式 OAuth 流程來說不夠長。先新增項目,然後從全新終端機執行 hermes mcp login <server>——它會等待完整的 5 分鐘讓你完成驗證。

mTLS / 客戶端憑證

需要雙向 TLS(客戶端憑證驗證)的遠端 HTTP MCP 伺服器透過 client_cert / client_key 支援。Hermes 會將解析後的憑證傳遞給底層 HTTP 客戶端進行 TLS 握手。

client_cert 接受三種格式:

  • 單一合併 PEM 路徑 — 一個檔案同時包含憑證和私鑰:
mcp_servers:
  internal_api:
    url: "https://mcp.internal.example.com/mcp"
    client_cert: "~/.certs/mcp-client.pem"
  • [cert, key] 二元組 — 憑證和私鑰分開儲存(等同於設定 client_cert + client_key):
mcp_servers:
  internal_api:
    url: "https://mcp.internal.example.com/mcp"
    client_cert: ["~/.certs/mcp-client.crt", "~/.certs/mcp-client.key"]
  • [cert, key, password] 三元組 — 當私鑰有加密時,第三個元素是金鑰密碼:
mcp_servers:
  internal_api:
    url: "https://mcp.internal.example.com/mcp"
    client_cert: ["~/.certs/mcp-client.crt", "~/.certs/mcp-client.key", "${MCP_KEY_PASSWORD}"]

你也可以透過 client_cert(合併 PEM)加上明確的 client_key 來分開儲存憑證和私鑰。路徑支援 ~ 展開;缺少檔案時會發出明確的、限定於該伺服器範圍的錯誤訊息,而非不透明的 TLS 握手失敗。

基本設定參考

Hermes 從 ~/.hermes/config.yaml 中的 mcp_servers 讀取 MCP 設定。

常用欄位

欄位類型說明
commandstringstdio MCP 伺服器的執行檔
argsliststdio 伺服器的引數
envmapping傳遞給 stdio 伺服器的環境變數
urlstringHTTP MCP 端點
headersmapping遠端伺服器的 HTTP 標頭
client_certstring | listmTLS 的客戶端憑證——合併 PEM 路徑,或 [cert, key] / [cert, key, password]
client_keystring客戶端私鑰 PEM 路徑(與 client_cert 分開時使用)
timeoutnumber工具呼叫逾時
connect_timeoutnumber初始連線逾時
enabledbool設為 false 時,Hermes 會完全跳過該伺服器
supports_parallel_tool_callsbool設為 true 時,來自此伺服器的工具可以並行執行
toolsmapping按伺服器的工具篩選和實用工具策略

最小 stdio 範例

mcp_servers:
  filesystem:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]

最小 HTTP 範例

mcp_servers:
  company_api:
    url: "https://mcp.internal.example.com"
    headers:
      Authorization: "Bearer ***"

內建預設值

對於知名的 MCP 伺服器,hermes mcp add 接受 --preset 參數,自動填入傳輸細節,免去你查詢指令和引數的麻煩。預設值只提供預設值——在同一指令行上傳遞的任何其他內容(環境變數、標頭、篩選)仍然會優先使用。

預設值配置的內容
codexCodex CLI 的 MCP 伺服器(透過 stdio 的 codex mcp-server)。需要 codex CLI 在 PATH 中。
# Add Codex CLI as an MCP server in one line
hermes mcp add codex --preset codex

這會寫入等同於:

mcp_servers:
  codex:
    command: "codex"
    args: ["mcp-server"]

你可以使用任何本地名稱(hermes mcp add my-codex --preset codex 也可以);預設值只提供 command/args 預設值。

Hermes 如何註冊 MCP 工具

Hermes 為 MCP 工具加上前綴,以避免與內建名稱衝突:

mcp_<server_name>_<tool_name>

範例:

伺服器MCP 工具註冊名稱
filesystemread_filemcp_filesystem_read_file
githubcreate-issuemcp_github_create_issue
my-apiquery.datamcp_my_api_query_data

實際上,你通常不需要手動呼叫帶前綴的名稱——Hermes 會在正常推理過程中看到工具並選擇使用它。

MCP 實用工具

在支援的情況下,Hermes 也會為 MCP 資源和提示註冊實用工具:

  • list_resources
  • read_resource
  • list_prompts
  • get_prompt

這些工具以相同的前綴模式按伺服器註冊,例如:

  • mcp_github_list_resources
  • mcp_github_get_prompt

重要

這些實用工具現在具備能力感知:

  • 只有在 MCP session 實際支援資源操作時,Hermes 才會註冊資源實用工具
  • 只有在 MCP session 實際支援提示操作時,Hermes 才會註冊提示實用工具

因此,暴露可呼叫工具但不提供資源/提示的伺服器不會獲得這些額外的封裝器。

按伺服器篩選

你可以控制每個 MCP 伺服器貢獻給 Hermes 的工具,實現工具命名空間的精細管理。

完全停用伺服器

mcp_servers:
  legacy:
    url: "https://mcp.legacy.internal"
    enabled: false

如果 enabled: false,Hermes 會完全跳過該伺服器,甚至不會嘗試連線。

白名單伺服器工具

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "***"
    tools:
      include: [create_issue, list_issues]

只註冊這些 MCP 伺服器工具。

黑名單伺服器工具

mcp_servers:
  stripe:
    url: "https://mcp.stripe.com"
    tools:
      exclude: [delete_customer]

除了被排除的工具外,所有伺服器工具都會註冊。

優先順序規則

如果兩者同時存在:

tools:
  include: [create_issue]
  exclude: [create_issue, delete_issue]

include 優先。

也篩選實用工具

你也可以單獨停用 Hermes 新增的實用工具封裝器:

mcp_servers:
  docs:
    url: "https://mcp.docs.example.com"
    tools:
      prompts: false
      resources: false

這表示:

  • tools.resources: false 停用 list_resourcesread_resource
  • tools.prompts: false 停用 list_promptsget_prompt

完整範例

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "***"
    tools:
      include: [create_issue, list_issues, search_code]
      prompts: false

  stripe:
    url: "https://mcp.stripe.com"
    headers:
      Authorization: "Bearer ***"
    tools:
      exclude: [delete_customer]
      resources: false

  legacy:
    url: "https://mcp.legacy.internal"
    enabled: false

如果所有工具都被篩選掉了會怎樣?

如果你的設定篩選掉了所有可呼叫的工具,並停用或省略了所有支援的實用工具,Hermes 不會為該伺服器建立空的運行時 MCP 工具集。

這能保持工具列表的整潔。

運行時行為

發現時機

Hermes 在啟動時發現 MCP 伺服器,並將它們的工具註冊到正常的工具登錄中。

動態工具發現

MCP 伺服器可以在運行時透過發送 notifications/tools/list_changed 通知來告知 Hermes 其可用工具發生了變化。當 Hermes 收到此通知時,會自動重新取得伺服器的工具列表並更新登錄——無需手動執行 /reload-mcp

這對於功能動態變化的 MCP 伺服器很有用(例如,載入新資料庫 schema 時新增工具,或服務離線時移除工具的伺服器)。

重新整理受到鎖定保護,因此來自同一伺服器的快速連續通知不會導致重疊的重新整理。提示和資源變更通知(prompts/list_changedresources/list_changed)會被接收但尚未被處理。

重新載入

如果你修改了 MCP 設定,請使用:

/reload-mcp

這會從設定重新載入 MCP 伺服器並刷新可用工具列表。關於伺服器本身推送的運行時工具變更,請參閱上方的動態工具發現

工具集

每個設定的 MCP 伺服器在貢獻至少一個已註冊工具時,也會建立一個運行時工具集:

mcp-<server>

這使 MCP 伺服器更容易在工具集層級進行管理。

安全模型

Stdio 環境變數篩選

對於 stdio 伺服器,Hermes 不會盲目傳遞你的完整 shell 環境。

只有明確設定的 env 加上安全基線才會被傳遞。這能減少意外的機密洩漏。

設定層級的暴露控制

新的篩選功能也是一種安全控制:

  • 停用你不希望模型看到的危險工具
  • 對敏感伺服器只暴露最小的白名單
  • 當你不希望暴露該介面時,停用資源/提示封裝器

使用案例範例

具有最小問題管理介面的 GitHub 伺服器

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "***"
    tools:
      include: [list_issues, create_issue, update_issue]
      prompts: false
      resources: false

使用方式:

Show me open issues labeled bug, then draft a new issue for the flaky MCP reconnection behavior.

移除危險操作的 Stripe 伺服器

mcp_servers:
  stripe:
    url: "https://mcp.stripe.com"
    headers:
      Authorization: "Bearer ***"
    tools:
      exclude: [delete_customer, refund_payment]

使用方式:

Look up the last 10 failed payments and summarize common failure reasons.

針對單一專案根目錄的檔案系統伺服器

mcp_servers:
  project_fs:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/my-project"]

使用方式:

Inspect the project root and explain the directory layout.

疑難排解

MCP 伺服器無法連線

請檢查:

# Verify MCP deps are installed (already included in standard install)
cd ~/.hermes/hermes-agent && uv pip install -e ".[mcp]"

node --version
npx --version

然後驗證你的設定並重新啟動 Hermes。

工具未出現

可能的原因:

  • 伺服器連線失敗
  • 發現失敗
  • 你的篩選設定排除了這些工具
  • 該伺服器不支援該實用工具能力
  • 伺服器已透過 enabled: false 停用

如果你是故意篩選的,這是預期行為。

為什麼資源或提示實用工具沒有出現?

因為 Hermes 現在只在以下兩個條件都成立時才註冊這些封裝器:

  1. 你的設定允許它們
  2. 伺服器 session 實際支援該能力

這是故意設計的,目的是保持工具列表的真實性。

並行工具呼叫

預設情況下,MCP 工具按順序執行——一次一個。如果你的 MCP 伺服器暴露的工具可以安全地並行執行(例如唯讀查詢、獨立的 API 呼叫),你可以選擇啟用並行執行:

mcp_servers:
  docs:
    command: "docs-server"
    supports_parallel_tool_calls: true

supports_parallel_tool_callstrue 時,Hermes 可以在單一工具呼叫批次中同時執行來自該伺服器的多個工具,就像它對內建唯讀工具(web_search、read_file 等)所做的那樣。

注意

只有在伺服器的工具可以安全同時執行時,才啟用並行呼叫。如果工具會讀寫共用狀態、檔案、資料庫或外部資源,請在啟用此設定前檢視讀寫競態條件。

MCP 取樣支援

MCP 伺服器可以透過 sampling/createMessage 協定向 Hermes 請求 LLM 推論。這允許 MCP 伺服器代表自己要求 Hermes 生成文字——對於需要 LLM 能力但沒有自己的模型存取權限的伺服器很有用。

取樣對所有 MCP 伺服器預設啟用(當 MCP SDK 支援時)。可在 sampling 欄位下按伺服器配置:

mcp_servers:
  my_server:
    command: "my-mcp-server"
    sampling:
      enabled: true            # 啟用取樣(預設:true)
      model: "openai/gpt-4o"  # 覆寫取樣請求的模型(選用)
      max_tokens_cap: 4096     # 每次取樣回應的最大 token 數(預設:4096)
      timeout: 30              # 每個請求的逾時秒數(預設:30)
      max_rpm: 10              # 速率限制:每分鐘最大請求數(預設:10)
      max_tool_rounds: 5       # 取樣迴圈中最大工具使用輪數(預設:5)
      allowed_models: []       # 伺服器可請求的模型名稱白名單(空 = 任意)
      log_level: "info"        # 稽核日誌等級:debug、info 或 warning(預設:info)

取樣處理器包含滑動視窗速率限制器、每個請求的逾時,以及工具迴圈深度限制以防止失控使用。每個伺服器實例都會追蹤指標(請求數、錯誤數、已使用 token 數)。

要為特定伺服器停用取樣:

mcp_servers:
  untrusted_server:
    url: "https://mcp.example.com"
    sampling:
      enabled: false

將 Hermes 作為 MCP 伺服器運行

除了連線 MCP 伺服器之外,Hermes 也可以成為 MCP 伺服器。這讓其他支援 MCP 的 agent(Claude Code、Cursor、Codex 或任何 MCP 客戶端)可以使用 Hermes 的訊息傳遞能力——列出對話、讀取訊息歷史記錄,以及跨你所有已連線的平台傳送訊息。

適用時機

  • 你想要 Claude Code、Cursor 或其他程式碼 agent 透過 Hermes 傳送和讀取 Telegram/Discord/Slack 訊息
  • 你想要一個 MCP 伺服器,一次橋接到 Hermes 所有已連線的訊息平台
  • 你已經有一個運行中的 Hermes 閘道器,且已連線平台

快速入門

hermes mcp serve

這會啟動一個 stdio MCP 伺服器。MCP 客戶端(不是你)管理程式的生命週期。

MCP 客戶端設定

將 Hermes 加入你的 MCP 客戶端設定。例如,在 Claude Code 的 ~/.claude/claude_desktop_config.json 中:

{
  "mcpServers": {
    "hermes": {
      "command": "hermes",
      "args": ["mcp", "serve"]
    }
  }
}

或者如果你將 Hermes 安裝在特定位置:

{
  "mcpServers": {
    "hermes": {
      "command": "/home/user/.hermes/hermes-agent/venv/bin/hermes",
      "args": ["mcp", "serve"]
    }
  }
}

可用工具

MCP 伺服器暴露 10 個工具,對應 OpenClaw 的通道橋接介面加上一個 Hermes 特有的通道瀏覽器:

工具說明
conversations_list列出活躍的訊息對話。可按平台篩選或按名稱搜尋。
conversation_get透過 session key 取得某個對話的詳細資訊。
messages_read讀取對話的近期訊息歷史記錄。
attachments_fetch從特定訊息中提取非文字附件(圖片、媒體)。
events_poll從游標位置之後輪詢新的對話事件。
events_wait長輪詢 / 阻塞直到下一個事件到達(近乎即時)。
messages_send透過平台傳送訊息(例如 telegram:123456discord:#general)。
channels_list跨所有平台列出可用的訊息目標。
permissions_list_open列出在此橋接 session 中觀察到的待核准請求。
permissions_respond允許或拒絕待核准的請求。

事件系統

MCP 伺服器包含一個即時事件橋接器,輪詢 Hermes 的 session 資料庫以取得新訊息。這讓 MCP 客戶端能夠近乎即時地感知傳入的對話:

# Poll for new events (non-blocking)
events_poll(after_cursor=0)

# Wait for next event (blocks up to timeout)
events_wait(after_cursor=42, timeout_ms=30000)

事件類型:messageapproval_requestedapproval_resolved

事件佇列位於記憶體中,在橋接器連線時啟動。較舊的訊息可透過 messages_read 取得。

選項

hermes mcp serve              # 正常模式
hermes mcp serve --verbose    # 在 stderr 上輸出偵錯日誌

運作原理

MCP 伺服器直接從 Hermes 的 session 儲存(~/.hermes/sessions/sessions.json 和 SQLite 資料庫)讀取對話資料。背景執行緒輪詢資料庫以取得新訊息,並維護一個記憶體中的事件佇列。對於傳送訊息,它使用與 Hermes agent 本身相同的 send_message 基礎設施。

讀取操作(列出對話、讀取歷史記錄、輪詢事件)不需要閘道器正在運行。傳送操作需要閘道器正在運行,因為平台適配器需要活躍的連線。

目前限制

  • 嵌入式 hermes mcp serve 目前只暴露 stdio MCP 伺服器。如果你需要 HTTP MCP 伺服器,請運行單獨的適配器——或者更常見地,使用 Hermes 的 MCP 客戶端側,它已同時支援 stdio 和 HTTP(mcp_servers.yaml / config.yaml 中的 url + headers;參閱上方的 HTTP 伺服器)。
  • 透過 mtime 優化的資料庫輪詢,以約 200ms 間隔進行事件輪詢(檔案未變更時跳過工作)
  • 尚無 claude/channel 推送通知協定
  • 僅限文字傳送(無法透過 messages_send 傳送媒體/附件)

相關文件



ACP 編輯器整合