MCP Hub
本機自架的 MCP 聚合器,附 macOS 與 Windows 原生 app。Claude 只連一個 Hub,下游十幾台 MCP server 的工具由 Hub 合併出來,開關、分類、加密的金鑰和每一次呼叫的紀錄都在 app 裡。
- 現況
- 維護中
- 平台
- macOS 14(Apple Silicon)、Windows 10 1809+
- 技術
- Python、FastAPI、MCP Python SDK、anyio、SQLite、SwiftUI、WPF
- 授權
- MIT
MCP(Model Context Protocol)是 Claude 這類 AI 接外部工具的協定。每多接一個 MCP server,Claude 的設定檔就多一段,金鑰散在各處,也很難一眼看出接了哪些。MCP Hub 讓 Claude 只連它一個,下游的開關、分類、金鑰和呼叫紀錄都在 app 裡管。每個人跑自己的 Hub,資料只留在自己的機器上。
架構
Hub 有兩個角色:對 Claude 是 MCP server,對下游是 MCP client,連上下游就自動抓工具清單。兩台下游可能有同名的工具,所以合併時一律加上命名空間,變成 下游__工具名。
後端 python -m gateway.web 是給原生 app 用的 JSON API,順便在背景定時檢查下游。聚合器 python -m gateway.hub_server 由 Claude 用 stdio 啟動,讀資料庫、握著下游的連線、轉發呼叫、記紀錄。兩個程序沒有直接溝通,靠 actions.db 交換狀態。
這個設計有個坑。Claude 啟動聚合器的指令要帶 PYTHONPATH、MCP_HUB_DB、MCP_HUB_KEY 三個環境變數,少一個,聚合器就去讀另一份空的資料庫。app 裡設定的東西一個都不會出現,也不會有任何錯誤訊息。所以 app 的「接上」按鈕直接幫你寫 Claude Desktop、Claude Code、Codex CLI 的設定檔:寫之前先備份,只動 my-hub 那一段。Codex 的 TOML 用文字層級增修,不整份讀成 dict 再寫回去,那樣會把註解全弄丟。
能做什麼
- 兩種下游:遠端 HTTP 和本機 stdio 的 MCP server。已經在 Claude 裡設定過的,可以直接匯入。
- 自訂工具:把任意 HTTP API 包成 MCP 工具,填網址、參數、headers,或從 OpenAPI 規格匯入。
- 複合工具:依序串起多個工具,Claude 呼叫一次拿到全部結果。
- 人工確認:危險的工具標成「需確認」,呼叫時要人點頭。
- 本機檔案參數:下游在 inputSchema 用
"contentEncoding": "base64"標出檔案欄位,AI 那邊改填本機路徑,Hub 轉發時讀檔換成 base64(單檔 25 MB 內),紀錄裡只留路徑。不然 AI 得自己把整個檔案的 base64 打出來。 - 金鑰加密:bearer token、env、headers、OAuth token 用 Fernet 加密存進 SQLite,加密金鑰另外存一個檔。
- OAuth 2.1+PKCE:支援動態註冊,token 自動換新。授權伺服器忘了這個註冊時,可以清掉授權重跑一次,不用刪掉整台下游。
- 總開關:一個動作讓整個 Hub 停止供應工具,不動每台下游各自的開關,恢復時原本的設定都還在。
安裝
到 Releases 下載,Python 和 .NET 的執行環境都包在裡面。
-
macOS:Apple Silicon 的 DMG 約 19 MB,macOS 14 以上。沒有付費的程式碼簽章,系統會說「已損毀」。它沒壞,是沒有可驗證的開發者身分。拖進「應用程式」之後跑一次:
xattr -dr com.apple.quarantine "/Applications/MCP Hub.app" -
Windows:x64 的 zip,Windows 10 1809 以上。SmartScreen 擋下時按「其他資訊」→「仍要執行」。
Intel Mac 沒有預先打包的版本,GitHub 免費的 Intel runner 已經退役,要用得在 Intel 機器上自己 make dist。
還沒做完的
Windows app 的邏輯有單元測試,但還沒有人在真的 Windows 桌面上完整操作過一輪,版面與互動只過了編譯器和型別檢查。Windows 版目前也少全域快捷鍵、OpenAPI 匯入、Skill 調適和系統通知。
這頁內容最後對照 repo 是 。