
Mcp Multi Poc Beta Script
io.github.nithishrPublished by GitHub account nithishrv0.1.0Updated Oct 24, 2026
PoC Q5b: run a differently-named console script via a positional runtimeArgument.
Overview
A proof-of-concept PyPI package that serves several demo MCP servers (alpha and beta) from one install, selected by subcommand; not a production tool.
- What you can do
- Run a demo alpha server on stdio, which exposes an echo tool for testing the connection and command construction. Run a demo beta server on stdio, which exposes a make_table tool and needs an optional extras install. Select which server starts by passing a subcommand to the package's console script. Exercise registry metadata paths, such as runtime arguments and extras, to see whether clients assemble the launch command correctly.
- When to use it
- Only for experimenting with how MCP registry entries, PyPI identifiers, extras and runtime arguments are handled by clients and the registry. It is a proof of concept meant to be deprecated after testing, not something to rely on for real work.
- Requirements
- A local Python environment with uv or uvx to install and run the PyPI package mcp-multi-poc. The beta server needs the optional beta extras installed. No accounts, API keys or environment variables are declared.
Installation
In SourceWeft
- Open Mcp Multi Poc Beta Script in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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
Findings so far (2026-07-31)
- Q1 — multiple entries per PyPI package: YES.
mcp-multi-poc-alphapublished against the shared package. - Q2 — multiple
mcp-namecomments in one README: YES (alpha validated with three comments present). - Q3 — extras in
identifier: NO, but expressible viaruntimeArguments. Extras in the identifier fail the literal PyPI lookup —PyPI package 'mcp-multi-poc[beta]' not found (status: 404). Fallback works:mcp-multi-poc-betapublished successfully with plainidentifier: mcp-multi-poc+runtimeArguments: --from "mcp-multi-poc[beta]"(live in the registry, verified via the/v0/serversAPI). - 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-scriptis live (published 2026-07-31, after trimmingdescriptionto the 100-char limit — the only validation hiccup). Locally,uvx --from 'mcp-multi-poc[beta]' mcp-multi-poc-beta mcp-multi-poccompletes the MCP initialize handshake — the trailing identifier is silently ignored becausemain()never parses argv. Caveats: only safe when the entrypoint tolerates stray argv (click needsignore_unknown_options+allow_extra_argsor a dummy optional argument); depends on clients preservingruntimeArgumentsorder — 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;identifiermust be a literal, existing PyPI package (extras rejected);runtimeArguments/packageArgumentscontents are NOT validated.
Local smoke test (before publishing anything)
uvx behavior (after publishing to PyPI):
Publish steps (manual, in order)
- If
mcp-multi-pocis taken on PyPI, pick another name and rename consistently (pyprojectname,[project.scripts], both server.json identifiers). - Build and publish to real PyPI (registry validation fetches from pypi.org;
TestPyPI will not work):
uv build && uv publish. - Install mcp-publisher and log in:
mcp-publisher login github(interactive) — must match theio.github.<username>namespace. - 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). - Verify via the registry API:
curl "https://registry.modelcontextprotocol.io/v0/servers?search=mcp-multi-poc" - Configure both servers in a client from the registry metadata and call
echo(alpha) andmake_table(beta). - 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.
- Fetch what was actually published and check the
packagesblock:curl "https://registry.modelcontextprotocol.io/v0/servers?search=mcp-multi-poc" - MCP Inspector — interactive tool calls against the hand-assembled command:
- Claude Code — same commands as stdio servers, then call
echo/make_table: (For Claude Desktop, the equivalentclaude_desktop_config.jsonentries:) - Registry-native install (the real (b) test): VS Code's MCP server
gallery is backed by the official registry — search for
mcp-multi-pocthere and install; this exercises whether a client assemblesruntimeArguments + identifier + packageArgumentson 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.
Source: README.md at commit c9f1363
Tools
0Version history
1- v0.1.0LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.