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-nameio.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.31.x1.*)被拒絕;請發佈特定版本。詳細指導請參閱 版本控制指南

發佈時可以添加自定義元數據嗎?

可以,發佈到註冊中心時,_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 中的討論)
  • 理想情況下,客戶端應該使用具有更高可用性保證的子註冊中心,以避免直接的最終用戶影響(因為子註冊中心可以緩存數據)。

如果我需要舉報垃圾郵件或惡意服務器怎麼辦?

  1. 將其作為濫用報告給底層包註冊中心(例如 NPM、PyPI、DockerHub 等);以及
  2. 在註冊中心倉庫上提出以 Abuse report: 開頭標題的 GitHub 問題

如果我需要報告註冊中心本身的安全漏洞怎麼辦?

遵循 MCP 社區 SECURITY.md

技術問題

Registry 支持哪些身份驗證方法?

  • GitHub OAuth:通過瀏覽器進行交互式身份驗證
  • GitHub OIDC:用於 GitHub Actions 工作流的自動化身份驗證
  • DNS 驗證:通過在您的域上設置 TXT 記錄
  • HTTP 驗證:通過在您的域上託管驗證文件

如何處理版本衝突?

每個服務器名稱的版本必須唯一。如果您嘗試發佈已存在的版本,發佈將失敗。使用新版本號或預發佈標籤。

支持批量操作嗎?

目前不支持。每次發佈操作都處理單個 server.json 文件。但是,您可以通過腳本化您的發佈流程來自動化多個發佈。

有速率限制嗎?

是的,註冊中心實施速率限制以防止濫用。具體限制可能會隨時間變化,但設計為允許合理的發佈模式。

如何處理大型 server.json 文件?

server.json 文件有大小限制以確保合理的性能。如果您的文件太大,請考慮:

  • 刪除不必要的元數據
  • 使用外部引用而不是內聯大型數據
  • 分割複雜的服務器為多個較小的服務器

下一步

還有問題? 如果您的問題在這裡沒有得到解答,請在 GitHub 討論 中開始新的討論。