Registry 常見問題
MCP Registry 常見問題
這些問題在關於 MCP Registry 的討論中經常出現。如果您有這裡沒有解答的問題,請在 MCP Registry 討論頁面 上開始討論。
一般問題
什麼是 MCP Registry?
MCP Registry 是公開可訪問的 MCP 服務器的官方集中式元數據存儲庫。它提供:
- 服務器創建者發佈其服務器元數據的單一場所
- MCP 客戶端和聚合器發現可用服務器的 REST API
- 標準化的安裝和配置信息
- 通過 DNS 驗證的命名空間管理
“官方 MCP Registry”、“MCP Registry”、“MCP 註冊中心"等有什麼區別?
有四個基本概念:
- “MCP 服務器註冊中心 API”(或"MCP Registry API”):在 openapi.yaml 中定義的 OpenAPI 規範。這是一個可重用的 API 規範,任何構建"MCP 服務器註冊中心"的人都應該考慮採用/對齊。
- “官方 MCP Registry”(或"MCP Registry"):位於
https://registry.modelcontextprotocol.io的應用程序。該註冊中心目前僅編目 MCP 服務器,但將來可能擴展到也編目 MCP 客戶端/主機應用程序和框架。 - “官方 MCP Registry API”:在
https://registry.modelcontextprotocol.io提供的 REST API,它是 MCP Registry API 的超集。 - “MCP 服務器註冊中心”(或"MCP 註冊中心"):第三方(可能是商業)實現的 MCP 服務器註冊中心 API 或衍生規範。
MCP Registry 是包註冊中心嗎?
不是。MCP Registry 存儲有關 MCP 服務器的元數據以及它們託管位置的引用(npm、PyPI、NuGet、Docker Hub 等),但不託管實際的源代碼或包。
誰應該直接使用 MCP Registry?
該註冊中心主要設計用於子註冊中心(Smithery、PulseMCP、Docker Hub、Anthropic、GitHub 等)的程序化消費。它目前不面向個人客戶端或最終用戶(他們應該使用子註冊中心)。
會有功能 X 嗎?
請參閱 路線圖。
發佈服務器
如何發佈我的 MCP 服務器?
請參閱 發佈指南。
有哪些可用的命名空間?
- GitHub 驗證:
io.github.yourusername/server-name、io.github.yourorg/server-name - DNS 驗證:
com.yourcompany.*、com.yourcompany.*/* - HTTP 驗證:
com.yourcompany/*
需要開源嗎?
不需要。雖然鼓勵開源代碼,但對於本地或遠程運行的服務器都不是必需的。
支持哪些包註冊中心?
- npm(Node.js 包)
- PyPI(Python 包)
- NuGet.org(.NET 包)
- GitHub Container Registry(GHCR)
- Docker Hub
- MCPB(MCP Bundle 格式)
社區可以根據需要添加更多;如果您有興趣為另一個註冊中心構建支持,請隨時提出問題。
可以發佈多個版本嗎?
可以,支持版本控制:
- 每個版本都有自己不可變的元數據
- 每個服務器的版本字符串必須唯一
- 舊版本保持可訪問以保持兼容性
- 註冊中心在可能的情況下基於語義版本排序跟蹤哪個版本是"最新的"
如何更新我的服務器元數據?
提交一個帶有唯一版本字符串的新 server.json。一旦發佈,版本元數據就是不可變的(類似於 npm)。
應該使用什麼版本格式?
註冊中心接受長度最多 255 個字符的任何版本字符串,但我們建議:
- 應該使用語義版本控制(例如,“1.0.2”、“2.1.0-alpha”)以獲得可預測的排序
- 應該與包版本對齊以減少混亂
- 可以使用預發佈標籤(例如,“1.0.0-1”)用於註冊中心特定版本
註冊中心嘗試將版本解析為語義版本以進行適當的排序。允許非語義版本,但將按發佈時間戳排序。版本範圍(例如,^1.2.3、~1.2.3、>=1.2.3、1.x、1.*)被拒絕;請發佈特定版本。詳細指導請參閱 版本控制指南。
發佈時可以添加自定義元數據嗎?
可以,發佈到註冊中心時,_meta 屬性下的擴展會被保留。這允許您包含特定於發佈過程的自定義元數據。
可以刪除/取消發佈我的服務器嗎?
在最後更新時,這在 #104 中正在討論。
可以發佈私有服務器嗎?
私有服務器是那些只能被一小部分用戶訪問的服務器。例如,在私有網絡上發佈的服務器(如 mcp.acme-corp.internal)或在私有包註冊中心上發佈的服務器(例如 npx -y @acme/mcp --registry https://artifactory.acme-corp.internal/npm)。
官方 MCP 註冊中心通常不支持這些,它是為公開可訪問的 MCP 服務器設計的。
如果您想發佈私有服務器,我們建議您託管自己的 MCP 子註冊中心,並將它們添加到那裡。
安全性和信任
如何知道服務器來自聲稱的組織?
DNS 驗證確保命名空間所有權。例如:
com.microsoft/server需要 microsoft.com 的 DNS 驗證io.github.name/server與 GitHub 賬戶或 GitHub 組織name綁定
有安全掃描嗎?
MVP 將安全掃描委託給:
- 底層包註冊中心;以及
- 子註冊中心
如何防止垃圾郵件?
- 命名空間身份驗證要求
- 對自由格式字段的字符限制和正則表達式驗證
- 手動刪除垃圾郵件或惡意服務器
將來我們可能會探索:
- 更嚴格的速率限制(例如,每個用戶每天 10 個新服務器)
- 潛在的基於 AI 的垃圾郵件檢測
- 社區報告和管理員黑名單功能
API 和集成
應該多長時間輪詢一次註冊中心?
推薦的輪詢頻率:
/servers端點:每小時一次/servers/:id端點:每個版本一次(結果是不可變的)- 設計假設在註冊中心和消費者之間有 CDN 緩存
另請參閱 #291,這可能意味著上述可以更加定期。
會有 webhooks 嗎?
在初始 MVP 中沒有,但架構支持在將來添加 webhooks 用於更新通知。
可以運行自己的註冊中心實例嗎?
可以!API 形狀和數據格式有意設計為供子註冊中心重用。需要私有註冊中心的組織應該:
- 實現相同的 API 形狀
- 使用相同的
server.json格式 - 可能鏡像/過濾官方註冊中心數據
可以擴展註冊中心 API 嗎?
可以,我們在許多地方支持 x-com.example 樣式擴展 - 請參閱官方 MCP 註冊中心 API 規範。這可以用於向許多對象添加註釋,例如添加安全掃描詳細信息、豐富包元數據等。
如果您有無法在此處解決的用例,請提出 GitHub 問題!
可以使用這裡的代碼運行自己的註冊中心實例嗎?
這裡的註冊中心實現不是為自託管而設計的,但歡迎您嘗試使用它/根據需要分叉它。請注意,這不是預期用途,註冊中心維護者目前無法為此提供任何支持。
運營和維護
預期可靠性如何?
- 這是一個社區維護的項目,沒有全職人員。因此,您應該預期最多 1 個工作日的停機時間。不提供嚴格保證。(另請參閱 #150 中的討論)
- 理想情況下,客戶端應該使用具有更高可用性保證的子註冊中心,以避免直接的最終用戶影響(因為子註冊中心可以緩存數據)。
如果我需要舉報垃圾郵件或惡意服務器怎麼辦?
- 將其作為濫用報告給底層包註冊中心(例如 NPM、PyPI、DockerHub 等);以及
- 在註冊中心倉庫上提出以
Abuse report:開頭標題的 GitHub 問題
如果我需要報告註冊中心本身的安全漏洞怎麼辦?
技術問題
Registry 支持哪些身份驗證方法?
- GitHub OAuth:通過瀏覽器進行交互式身份驗證
- GitHub OIDC:用於 GitHub Actions 工作流的自動化身份驗證
- DNS 驗證:通過在您的域上設置 TXT 記錄
- HTTP 驗證:通過在您的域上託管驗證文件
如何處理版本衝突?
每個服務器名稱的版本必須唯一。如果您嘗試發佈已存在的版本,發佈將失敗。使用新版本號或預發佈標籤。
支持批量操作嗎?
目前不支持。每次發佈操作都處理單個 server.json 文件。但是,您可以通過腳本化您的發佈流程來自動化多個發佈。
有速率限制嗎?
是的,註冊中心實施速率限制以防止濫用。具體限制可能會隨時間變化,但設計為允許合理的發佈模式。
如何處理大型 server.json 文件?
server.json 文件有大小限制以確保合理的性能。如果您的文件太大,請考慮:
- 刪除不必要的元數據
- 使用外部引用而不是內聯大型數據
- 分割複雜的服務器為多個較小的服務器