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 工具
快速入門
- 安裝 MCP 支援(如果你使用標準安裝腳本,已包含在內):
cd ~/.hermes/hermes-agent
uv pip install -e ".[mcp]"
- 在
~/.hermes/config.yaml中新增 MCP 伺服器:
mcp_servers:
filesystem:
command: "npx"
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
- 啟動 Hermes:
hermes chat
- 請求 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
...
預先勾選的項目來自:
- 你先前的選擇 — 如果你之前安裝過此項目(重新安裝會保留你之前的選擇——manifest 的預設值不會覆蓋它)
- manifest 的
tools.default_enabled— 如果該項目有宣告的話(某些目錄項目會預先排除變更性或較少使用的工具) - 所有工具 — 如果以上兩者都不適用
按下 ENTER 提交勾選清單。只有被勾選的工具會寫入 mcp_servers.<name>.tools.include。如果你選擇了所有工具,則不會寫入任何篩選器(最乾淨的設定形狀,行為完全相同)。
如果探測失敗(伺服器無法連線、OAuth 尚未完成、後端服務未運行),安裝仍然會成功:manifest 的 tools.default_enabled 會直接套用(如果已宣告),或者不寫入篩選器(如果未宣告)。等到伺服器可連線後,再執行 hermes mcp configure <name> 以進行調整。
信任模型
安裝目錄項目會執行 manifest 指定的任何操作——git clone、該項目的 bootstrap 指令(pip install、npm 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.command、transport.args、transport.url 和 headers 中,${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 伺服器的時機:
- 伺服器安裝在本地
- 你想要低延遲地存取本地資源
- 你正在遵循顯示
command、args和env的 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 設定。
常用欄位
| 欄位 | 類型 | 說明 |
|---|---|---|
command | string | stdio MCP 伺服器的執行檔 |
args | list | stdio 伺服器的引數 |
env | mapping | 傳遞給 stdio 伺服器的環境變數 |
url | string | HTTP MCP 端點 |
headers | mapping | 遠端伺服器的 HTTP 標頭 |
client_cert | string | list | mTLS 的客戶端憑證——合併 PEM 路徑,或 [cert, key] / [cert, key, password] |
client_key | string | 客戶端私鑰 PEM 路徑(與 client_cert 分開時使用) |
timeout | number | 工具呼叫逾時 |
connect_timeout | number | 初始連線逾時 |
enabled | bool | 設為 false 時,Hermes 會完全跳過該伺服器 |
supports_parallel_tool_calls | bool | 設為 true 時,來自此伺服器的工具可以並行執行 |
tools | mapping | 按伺服器的工具篩選和實用工具策略 |
最小 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 參數,自動填入傳輸細節,免去你查詢指令和引數的麻煩。預設值只提供預設值——在同一指令行上傳遞的任何其他內容(環境變數、標頭、篩選)仍然會優先使用。
| 預設值 | 配置的內容 |
|---|---|
codex | Codex 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 工具 | 註冊名稱 |
|---|---|---|
filesystem | read_file | mcp_filesystem_read_file |
github | create-issue | mcp_github_create_issue |
my-api | query.data | mcp_my_api_query_data |
實際上,你通常不需要手動呼叫帶前綴的名稱——Hermes 會在正常推理過程中看到工具並選擇使用它。
MCP 實用工具
在支援的情況下,Hermes 也會為 MCP 資源和提示註冊實用工具:
list_resourcesread_resourcelist_promptsget_prompt
這些工具以相同的前綴模式按伺服器註冊,例如:
mcp_github_list_resourcesmcp_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_resources和read_resourcetools.prompts: false停用list_prompts和get_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_changed、resources/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 現在只在以下兩個條件都成立時才註冊這些封裝器:
- 你的設定允許它們
- 伺服器 session 實際支援該能力
這是故意設計的,目的是保持工具列表的真實性。
並行工具呼叫
預設情況下,MCP 工具按順序執行——一次一個。如果你的 MCP 伺服器暴露的工具可以安全地並行執行(例如唯讀查詢、獨立的 API 呼叫),你可以選擇啟用並行執行:
mcp_servers:
docs:
command: "docs-server"
supports_parallel_tool_calls: true
當 supports_parallel_tool_calls 為 true 時,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:123456、discord:#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)
事件類型:message、approval_requested、approval_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傳送媒體/附件)