Edgegap
官方從你的編碼代理部署多人遊戲伺服器。十個工具,可將Unity、Unreal或Godot的專用伺服器從容器映像帶到已連接的玩家。
你可以用 Edgegap MCP 做什麼?
- 從容器映像部署遊戲伺服器 — 請助理以 CPU、記憶體和連接埠設定註冊您的容器映像,然後在特定玩家附近啟動它。
- 追蹤部署狀態與連線資訊 — 讓助理持續輪詢直到部署就緒,並回傳連線位址,或檢查執行中執行個體的狀態與日誌。
- 管理應用程式版本 — 請助理列出現有的應用程式與版本,或從現有可用的設定建立新版本,以避免重複設定。
- 優雅地停止部署 — 指示助理依請求 ID 終止特定部署,傳送乾淨的關閉訊號,而非強制終止。
- 尋找並清理孤立的伺服器 — 請助理列出先前工作階段的所有部署,以便您識別並停止未使用的執行個體。
託管 MCP 伺服器
npx add-mcp 'https://mcp.edgegap.dev/mcp'可安裝到 Claude Code、Codex、Cursor 等客戶端
文件
edgegap-mcp
一個用於 Edgegap 的 MCP 伺服器,讓程式設計代理程式能將開發者從「我有一個遊戲伺服器容器」帶到「玩家已連線」,而無需開發者閱讀 API 參考文件。
十個精心挑選的工具。並非從 OpenAPI 規格自動生成——原因請見 Scope。
安裝
有兩種執行方式。根據您對 token 去向的在意程度來選擇——請見 Where your token goes。
遠端端點
由 Edgegap 以 Cloudflare Worker 託管。無需安裝任何東西。
{
"mcpServers": {
"edgegap": {
"type": "http",
"url": "https://mcp.edgegap.dev/mcp",
"headers": { "Authorization": "token YOUR_API_TOKEN" }
}
}
}
也可作為 claude.ai 中的自訂連接器使用:新增 https://mcp.edgegap.dev/mcp 並提供相同的 token。
本機
在您自己的機器上執行,由您的編輯器啟動。在 MCP 用戶端設定中只需一行,無需複製任何東西,無需建置任何東西。
{
"mcpServers": {
"edgegap": {
"command": "npx",
"args": ["-y", "@edgegap/mcp"]
}
}
}
適用於 Claude Code、Cursor、Codex 和 VS Code。在生產環境中鎖定版本(@edgegap/mcp@0.1.5),而不是浮動在最新版。
已在官方 MCP 註冊表中註冊為 dev.edgegap/mcp。
Node 版本: 本機伺服器需要 Node 18+。自行部署 Cloudflare Worker 的副本需要 Node 22+,因為
wrangler需要它。
您的 token 去向
這因模式而異,而這個差異正是兩種模式存在的原因。
本機。 伺服器作為您自己電腦上的一個程序執行。第一次工具呼叫會要求您提供 token,顯示它所授權的內容,並在接受之前要求明確確認。該 token 之後的存放位置,詳盡列出:
- 該程序記憶體中的一個變數,在您的編輯器工作階段期間有效
這就是完整清單。不在磁碟上。不在設定檔中。不在日誌中。不在任何 Edgegap 伺服器上——唯一發送給 Edgegap 的是 API 呼叫本身,完全如同您執行了 curl。關閉編輯器會完全撤銷此伺服器的存取權。
遠端。 您的 token 在每次請求時發送到 mcp.edgegap.dev,並從那裡轉發到 Edgegap API。它會經過 Edgegap 營運的基礎設施。Worker 在請求期間持有它,不會持久化,但這是「我們不儲存它」的主張,而非「我們永遠看不到它」的主張。兩者不同,只有本機模式能做到第二種。
在 https://app.edgegap.com/user-settings?tab=tokens 生成 token。
在本機模式中,設定 EDGEGAP_API_TOKEN 優先於提示,適用於 CI 和無法顯示提示的用戶端。不要將 token 作為命令列參數傳遞——參數可透過 ps 被其他程序看到,伺服器若偵測到會發出警告。
該用哪個。 遠端適合首次嘗試、示範,或設定摩擦比保管權更重要的受監督工作階段。本機適合任何無人值守、任何組織中有營運中遊戲,以及任何您寧可不延伸不必要信任的情況。以下描述的防護措施僅存在於本機模式。
連接代理程式前請先閱讀
Edgegap API token 無法設定範圍。 一個 token 授權所有應用程式、所有版本、所有執行中的部署,以及您在整個組織中的使用量。沒有僅限部署的 token,也沒有每個應用程式的 token。
值得深思的後果:
- 持有此 token 的代理程式可以停止生產部署,而不只是它建立的測試部署。
- 注入代理程式的提示注入——來自 repo 檔案、issue、抓取的頁面——也會觸及 token。
- 代理程式記錄、回顯或發送給模型提供者的任何內容,都是 token 可能出現的地方。此伺服器不會記錄它,但無法控制代理程式其餘部分的行為。
- 在遠端端點上,同一個無範圍 token 在每次呼叫時還會由 Edgegap 的 worker 處理。
建議的設定,依謹慎程度遞減:
| 情境 | 設定 |
|---|---|
| 無人值守或自主代理程式 | 本機模式。獨立的非生產組織,加上 EDGEGAP_READ_ONLY=1 |
| 受監督代理程式,組織中有營運中遊戲 | 本機模式。EDGEGAP_APP_ALLOWLIST 範圍限定在正在處理的應用程式,加上 EDGEGAP_MAX_DURATION_MINUTES。先閱讀 Scope of the allowlist——已執行中的部署不在涵蓋範圍內 |
| 獨立開發者,無生產負載 | 任一模式皆可。預設值即可;完成後撤銷 token |
允許清單和唯讀旗標在本機伺服器中強制執行,這意味著它們保護的是犯錯的代理程式,而不是已被入侵而直接呼叫 API 的代理程式。它們縮小爆炸半徑;但不會消除它。
允許清單的範圍
EDGEGAP_APP_ALLOWLIST 由四個接受應用程式名稱的工具強制執行:edgegap_create_app、edgegap_list_app_versions、edgegap_create_app_version 和 edgegap_deploy。
它不由五個以 request_id 為鍵的工具強制執行:edgegap_get_deployment、edgegap_wait_for_deployment、edgegap_list_deployments、edgegap_stop_deployment 和 edgegap_get_deployment_logs。設定允許清單執行的代理程式可以列出組織中的每個部署,然後檢查、讀取日誌或停止其中任何一個——包括屬於清單外應用程式的部署。
因此,允許清單限制的是代理程式可以建立和部署到的範圍,而不是執行後可以觸及的範圍。這比本文件早期版本所暗示的更窄。
若要獲得更強的保證,請使用 EDGEGAP_READ_ONLY=1,它完全不註冊五個變更工具,或將代理程式指向獨立的非生產組織。兩者都不受此缺口影響。
由 Syed Anas Mohiuddin 回報,2026 年 9 月。
環境變數
這些設定本機伺服器。在遠端端點上,它們由 Edgegap 設定,無法由每個開發者更改——如果您需要其中任何一個,請在本機執行。
| 變數 | 預設值 | 用途 |
|---|---|---|
EDGEGAP_API_TOKEN | (提示) | API token。可選——省略時開發者會在首次使用時被詢問。token 前綴會自動為您加上。 |
EDGEGAP_READ_ONLY | 0 | 設為 1 時,五個變更工具永遠不會被註冊。代理程式看不到它們,因此不會被說服去呼叫它們。 |
EDGEGAP_APP_ALLOWLIST | (空) | 逗號分隔的應用程式名稱。設定時,四個以應用程式為鍵的工具拒絕觸及其他任何東西。不限制五個以 request_id 為鍵的工具——請見 Scope of the allowlist。 |
EDGEGAP_MAX_DURATION_MINUTES | 60 | 代理程式可在版本上設定的 max_duration 上限。限制無人值守代理程式的失控成本。 |
EDGEGAP_TIMEOUT_MS | 30000 | 每次請求的 HTTP 逾時。 |
工具
十個工具,按黃金路徑的順序列出。兩種模式中都是相同的十個。
| 工具 | 變更 | 用途 |
|---|---|---|
edgegap_list_apps | 在執行任何操作前先定位。防止重複的應用程式。 | |
edgegap_create_app | ● | 為版本建立容器。 |
edgegap_list_app_versions | 尋找可部署的版本,或從運作中的版本複製設定。 | |
edgegap_create_app_version | ● | 以 CPU、記憶體和連接埠註冊容器映像。 |
edgegap_deploy | ● | 在指定玩家附近啟動一個實例。 |
edgegap_get_deployment | 單一狀態讀取。 | |
edgegap_wait_for_deployment | 以退避方式輪詢至就緒,然後回傳連線位址。 | |
edgegap_list_deployments | 從先前工作階段尋找孤兒伺服器。 | |
edgegap_stop_deployment | ● | 優雅的 SIGTERM,一次一個部署。 |
edgegap_get_deployment_logs | 失敗後的容器輸出和崩潰退出碼。 |
設計決策
精心策劃,而非生成。 Edgegap API 大約有六十個操作。為每個操作自動生成一個工具,會將全部六十個描述在每一輪都放入代理程式的上下文中,並可測量地降低工具選擇品質。這十個涵蓋了轉換新開發者的路徑。
wait_for_deployment 是一個工具,不是一個迴圈。 讓代理程式自行處理時,它會在緊密迴圈中呼叫狀態端點,浪費回合,並過早放棄。將輪詢和退避摺疊到一次呼叫中,消除了代理驅動部署中最常見的失敗。
錯誤是為自我修正而寫的。 424 回來說映像無法拉取,以及應檢查哪些欄位。422 說嘗試不同的座標或降低資源請求。代理程式可以根據這些採取行動,而無需往返人類。
在連線前進行本機驗證。 記憶體與 CPU 的比例以及缺少的玩家位置在這裡被捕捉,而不是以不透明的 400 呈現。
刻意不提供批次操作。 stop 接受一個 request_id。沒有批次停止工具,因為帶有篩選表達式和 bug 的代理程式可以停止生產艦隊。
同時提供託管端點和本機套件。 託管端點移除了從找到此伺服器到呼叫工具之間的每一步,而這正是大多數開發者放棄的地方。本機套件是唯一能在不將無範圍 token 的保管權延伸給第三方(包括我們)的情況下執行伺服器的方式。兩者都不優於對方,所以兩者都提供。請見 worker/DECISION.md 以取得更詳細的版本。
範圍
刻意不公開:配對、中繼、私人艦隊、智慧艦隊、端點儲存、ACL/白名單條目、部署標籤、指標、容器註冊表管理、DNS 設定。
這些是實際的功能,但它們屬於已在平台上營運的工作室,而不是部署第一個伺服器的開發者。加入它們會用表面積換取轉換路徑。
已知限制:要求 token
這適用於本機模式,其中 token 是透過引導收集,而非從設定讀取。
MCP 規範說伺服器不應使用引導來收集敏感資料,而 API token 是敏感的。此伺服器仍然這樣做,因為在一切運作之前要求在設定檔中提供 token,是入門漏斗中最大的流失點,而此伺服器的全部意義就在於移除設定摩擦。
這是一個刻意的取捨,而非可複製的模式。讓它站得住腳的是 src/auth.ts 中的一系列緩解措施——僅記憶體儲存、白話揭露、必要確認、從所有輸出中編輯,以及環境變數在存在時永遠優先。移除其中任何一個都會破壞這個取捨。
真正的修復在 Edgegap 端,且會改善兩種模式:有範圍、可撤銷、僅部署的憑證,透過 OAuth 發行,而非作為秘密貼上。在這些存在之前,互動式提示是一個權宜之計,並在程式碼中如此標示。
開發
npm run typecheck
node smoke.mjs # handshake, tool registration, read-only mode
node guards.mjs # local validation and allowlist enforcement
node elicit.mjs # token prompt: accept, refuse acknowledgement, decline, no support
這些都不會進行網路呼叫。elicit.mjs 斷言提示陳述了組織範圍、確認是必要的、token 永遠不會出現在工具輸出中,以及拒絕會產生停止並回報的訊息,而非重試迴圈。