Mcp Multi Poc Alpha

io.github.nithishr由 GitHub 账号 nithishr 发布v0.1.0更新于 Oct 24, 2026

PoC alpha server - base install, subcommand selection from a shared PyPI package.

已验证STDIO仅桌面开发者工具

概览

AI 生成的概览

一个概念验证型 PyPI 包,用子命令(alpha、beta)从同一安装中启动多个演示用 MCP 服务器。

可以做什么
  • 运行基础安装自带的演示 alpha 服务器,提供 echo 工具。
  • 安装可选 beta 附加依赖后运行 beta 服务器,额外提供 make_table 工具。
  • 通过向共享包命令传入子命令来选择启动哪个服务器。
  • 用作注册表问题的试验台:同一包对应多个条目、标识符中的 extras、子命令或脚本启动形式。
适用场景
仅当你希望复现或查看作者的 MCP 注册表打包实验时使用,例如一个 PyPI 包如何支撑多个注册表条目,或子命令启动形式在客户端中的表现。它不是用于实际工作的通用工具。
运行要求
以 Python 包形式从 PyPI 安装并通过 stdio 在本地运行,通常用 uvx 或本地安装启动。beta 服务器需要安装可选的 beta 附加依赖。未声明任何账号、API 密钥、环境变量或请求头。
安装前请注意
它明确是概念验证,相关条目在测试后计划被弃用或删除。README 指出某些启动形式依赖服务器忽略多余参数,并依赖客户端保持 runtimeArguments 顺序,而这被称为最少被验证的元数据路径。安装会拉取第三方包及其可选依赖。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Mcp Multi Poc Alpha,将其添加到工作区。
  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 分

    请在仓库或注册中心条目中声明许可证。