Mcp Multi Poc Beta

io.github.nithishr由 GitHub 帳號 nithishr 發布v0.1.0更新於 Oct 24, 2026

PoC beta server - extras-gated deps, subcommand selection, same PyPI package as alpha.

已驗證STDIO僅桌面開發者工具

概覽

AI 產生的概覽

一個概念驗證型 PyPI 套件,用子命令從同一份安裝啟動多個 MCP 伺服器,並視需要以選用 extras 安裝相依套件。

可以做什麼
透過選擇子命令(alpha 或 beta)從同一份安裝啟動多個內建 MCP 伺服器之一,不帶子命令時預設執行 alpha 以維持向後相容。視需要安裝選用 extras,讓 beta 伺服器的相依套件只在需要時才被拉取。以 alpha 的 echo 工具和 beta 的 make_table 工具做冒煙測試,驗證這種打包方式。測試登錄檔中繼資料與用戶端如何組裝執行命令,包括 extras 與執行階段參數。
適用情境
僅適合用來評估單一 PyPI 套件如何發布多個 MCP 登錄檔項目,以及用戶端如何執行以子命令為基礎的伺服器。它是概念驗證,不是供實際工作使用的通用工具。
執行需求
以 Python 套件形式從 PyPI 安裝並在本機透過 stdio 執行,通常以 uvx 啟動。beta 伺服器需要安裝選用的 beta extra,否則會出現錯誤並提示安裝該 extra。未宣告任何帳號、API 金鑰或環境變數。
安裝前請注意
這是明確的實驗性概念驗證,其項目在測試後預計會被棄用或刪除。beta-script 變體依賴伺服器忽略多餘的命令列參數,並依賴用戶端保持執行階段參數順序,README 稱這是最少被驗證的中繼資料路徑。發布步驟需要用 GitHub 帳號登入登錄檔。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mcp Multi Poc Beta,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

mcp-multi-poc

PoC for serving multiple MCP servers from a single PyPI package, using subcommands for server selection and optional extras for on-demand dependencies. Stands in for the Couchbase MCP monorepo question (alpha = operational, beta = analytics, tabulate = the analytics SDK — chosen because it is outside fastmcp's transitive dependency tree; httpx and pyyaml are not, and silently defeat the extras guard).

What this PoC must answer

#QuestionWhere it's tested
1Can two MCP registry entries point at the same PyPI package?Publish both server.alpha.json and server.beta.json
2Does registry ownership validation accept multiple mcp-name comments in one package README?The two HTML comments above
3Does the registry schema/validator accept extras syntax in identifier (mcp-multi-poc[beta])?server.beta.json — if rejected, fall back to plain identifier and record that extras can't be expressed
4Do clients run the subcommand form correctly from registry metadata (uvx mcp-multi-poc alpha)?Install both servers from a client (Claude Desktop / MCP Inspector)
5Is there any schema-legal way to run a console script named differently than the package (mcp-multi-poc-beta)?server.beta-script.json. 5a (failed): identifier = script name → 404, identifier must be a real PyPI package. 5b (current file): identifier = real package, script name smuggled as a positional runtimeArgument → uvx --from 'mcp-multi-poc[beta]' mcp-multi-poc-beta mcp-multi-poc; the appended identifier becomes a stray arg the server must ignore. If 5b also fails, fallback is a shim package per script

Findings so far (2026-07-31)

  • Q1 — multiple entries per PyPI package: YES. mcp-multi-poc-alpha published against the shared package.
  • Q2 — multiple mcp-name comments in one README: YES (alpha validated with three comments present).
  • Q3 — extras in identifier: NO, but expressible via runtimeArguments. Extras in the identifier fail the literal PyPI lookup — PyPI package 'mcp-multi-poc[beta]' not found (status: 404). Fallback works: mcp-multi-poc-beta published successfully with plain identifier: mcp-multi-poc + runtimeArguments: --from "mcp-multi-poc[beta]" (live in the registry, verified via the /v0/servers API).
  • Q5a — differently-named console script as identifier: NO (confirmed on publish). Same 404 mechanism ('mcp-multi-poc-beta' not found) — the registry validates the identifier as a real PyPI package before anything else.
  • Q5b — script name as positional runtimeArgument: YES, published. io.github.nithishr/mcp-multi-poc-beta-script is live (published 2026-07-31, after trimming description to the 100-char limit — the only validation hiccup). Locally, uvx --from 'mcp-multi-poc[beta]' mcp-multi-poc-beta mcp-multi-poc completes the MCP initialize handshake — the trailing identifier is silently ignored because main() never parses argv. Caveats: only safe when the entrypoint tolerates stray argv (click needs ignore_unknown_options + allow_extra_args or a dummy optional argument); depends on clients preserving runtimeArguments order — the least-exercised metadata path; registry UIs show the identifier as the runnable. For production script-per-server, prefer a shim package per script (identifier == script name, no runtimeArguments at all).
  • Registry validation limits discovered: description ≤ 100 chars; identifier must be a literal, existing PyPI package (extras rejected); runtimeArguments/packageArguments contents are NOT validated.

Local smoke test (before publishing anything)

bash
cd mcp-registry-pocuv venv && uv pip install -e .mcp-multi-poc alpha          # starts alpha on stdio (Ctrl+C to exit)mcp-multi-poc beta           # must FAIL with the friendly extras messageuv pip install -e ".[beta]"mcp-multi-poc beta           # now startsmcp-multi-poc                # bare command runs alpha (backward-compat check)mcp-multi-poc-beta           # Option 1 script works locally once extra installed

uvx behavior (after publishing to PyPI):

bash
uvx mcp-multi-poc alpha                  # base onlyuvx "mcp-multi-poc[beta]" beta           # extras via uvx — key UX under testuvx --from "mcp-multi-poc[beta]" mcp-multi-poc-beta   # Option 1 fallback form

Publish steps (manual, in order)

  1. If mcp-multi-poc is taken on PyPI, pick another name and rename consistently (pyproject name, [project.scripts], both server.json identifiers).
  2. Build and publish to real PyPI (registry validation fetches from pypi.org; TestPyPI will not work): uv build && uv publish.
  3. Install mcp-publisher and log in: mcp-publisher login github (interactive) — must match the io.github.<username> namespace.
  4. Publish the entries: mcp-publisher publish server.alpha.json, ... server.beta.json, and ... server.beta-script.json — the last one is expected to fail validation; record the exact error (if the CLI expects the file at ./server.json, copy each into place first).
  5. Verify via the registry API: curl "https://registry.modelcontextprotocol.io/v0/servers?search=mcp-multi-poc"
  6. Configure both servers in a client from the registry metadata and call echo (alpha) and make_table (beta).
  7. Record results per question above, then deprecate/delete the PoC entries.

Q4 — testing the published entries from a client

Most clients don't install directly from the official registry yet, so Q4 splits in two: (a) does the spec-mandated command construction (uvx <runtimeArguments> <identifier> <packageArguments>) produce a working server, and (b) does a registry-consuming client reproduce that construction.

  1. Fetch what was actually published and check the packages block: curl "https://registry.modelcontextprotocol.io/v0/servers?search=mcp-multi-poc"
  2. MCP Inspector — interactive tool calls against the hand-assembled command:
    bash
    npx @modelcontextprotocol/inspector uvx mcp-multi-poc alphanpx @modelcontextprotocol/inspector uvx --from "mcp-multi-poc[beta]" mcp-multi-poc beta
  3. Claude Code — same commands as stdio servers, then call echo / make_table:
    bash
    claude mcp add poc-alpha -- uvx mcp-multi-poc alphaclaude mcp add poc-beta -- uvx --from "mcp-multi-poc[beta]" mcp-multi-poc beta
    (For Claude Desktop, the equivalent claude_desktop_config.json entries:)
    json
    {  "mcpServers": {    "poc-alpha": { "command": "uvx", "args": ["mcp-multi-poc", "alpha"] },    "poc-beta":  { "command": "uvx", "args": ["--from", "mcp-multi-poc[beta]", "mcp-multi-poc", "beta"] }  }}
  4. Registry-native install (the real (b) test): VS Code's MCP server gallery is backed by the official registry — search for mcp-multi-poc there and install; this exercises whether a client assembles runtimeArguments + identifier + packageArguments on its own. Entries may lag or be curated before appearing.

Steps 2–3 only prove (a); only step 4 (or another registry-consuming client) proves (b), which is what the beta/beta-script entries actually depend on.

來源:README.md,提交 c9f1363

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.0最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。