fix: repair broken examples and graduate UV runtime#206
fix: repair broken examples and graduate UV runtime#206bryan-anthropic wants to merge 1 commit intomainfrom
Conversation
- hello-world-node: wrap server startup in async main() with proper await on server.connect(transport) — fixes crash on initialize in Claude Desktop UtilityProcess runtime (closes #200) - hello-world-uv: add required mcp_config block — v0.4 schema requires it but the example omitted it, causing mcpb pack to fail - file-manager-python: convert from broken v0.1/python to v0.4/uv — the old manifest had privacy_policies on v0.1 (schema violation), used command "python" (ENOENT on macOS), and had no bundled deps. Now uses UV runtime with proper mcp_config (closes #47, closes #72) - Graduate UV runtime from experimental across docs and schema comments - Bump DEFAULT_MANIFEST_VERSION from 0.2 to 0.3 All three examples verified: pack succeeds, server responds to MCP initialize over stdio, tools/list returns expected tools. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
bryan-anthropic
left a comment
There was a problem hiding this comment.
Review by Claude Code
Multi-concern PR, but all changes fall under "fix broken examples and modernize." Observations:
hello-world-node (#200): Wrapping server.connect(transport) in an async main() with proper await fixes the race condition that caused crashes in Claude Desktop's UtilityProcess environment. Straightforward fix.
hello-world-uv: Adding the required mcp_config block aligns with the v0.4 schema mandate. Necessary for these examples to actually validate.
file-manager-python (#47, #72): The rewrite from broken v0.1/python to v0.4/uv is aggressive but correct. The old manifest had schema violations (privacy_policies: [], PYTHONPATH env, setuptools boilerplate) that would fail validation. The new command: "uv" with args: ["run", "--directory", "${__dirname}", "server/main.py"] follows the established uv pattern. The .mcpbignore addition is a nice touch.
UV graduation: Removing "experimental" labels from MANIFEST.md, README.md, schema comments, and the hello-world-uv README reflects the runtime's stability since early 2026. Consistent cleanup across all touchpoints.
DEFAULT_MANIFEST_VERSION 0.2 → 0.3: Worth noting this is a behavioral change — mcpb init will now scaffold v0.3 manifests. Reasonable given v0.3 has been stable since Feb 2026, but flagging for visibility since it affects new bundle authors.
Potential merge conflict: The .gitignore additions (CLAUDE.md, PROJECT_STATUS.md) overlap with PR #207. Whichever merges second will need a trivial conflict resolution.
No blocking issues. All examples were smoke-tested per the PR description (pack + initialize + tools/list).
Summary
initializein Claude Desktop becauseserver.connect(transport)was notawaited. Wrapped inasync main()with proper error handling.mcpb packfails because v0.4 schema requiresmcp_configbut the example omitted it. Added the requiredmcp_configblock withuv runpattern.privacy_policies(schema violation),command: "python"(ENOENT on macOS), no bundled deps. Converted to v0.4/uv runtime with propermcp_config, cleaned uppyproject.toml, added.mcpbignore.MANIFEST.md,README.md) and schema comments.DEFAULT_MANIFEST_VERSIONfrom"0.2"to"0.3"(v0.3 has been stable since Feb 2026).Verification
All three examples smoke-tested locally:
mcpb packinitialize(stdio)tools/listsay_hello)Closes #200, closes #47, closes #72.
🤖 Generated with Claude Code