Skip to content

Add Claude Desktop extension (.mcpb) packaging support - #11

Draft
kyletaylored wants to merge 2 commits into
DMontgomery40:mainfrom
kyletaylored:feat/mcpb-support
Draft

Add Claude Desktop extension (.mcpb) packaging support#11
kyletaylored wants to merge 2 commits into
DMontgomery40:mainfrom
kyletaylored:feat/mcpb-support

Conversation

@kyletaylored

@kyletaylored kyletaylored commented Aug 20, 2026

Copy link
Copy Markdown
image

Summary

  • Add manifest.json (mcpb manifest) with user_config prompts for printer host, serial, LAN access code, and model, so Claude Desktop's extension install wizard can collect connection settings interactively instead of requiring hand-edited JSON config.
  • Add .mcpbignore to keep the packed bundle limited to runtime files (excludes docs, tests, TS sources, dev configs).
  • Add npm run package:mcpb script (build → prune dev deps → validate → pack).
  • Add .github/workflows/release-mcpb.yml, which builds/packs/validates the bundle on version tags and attaches bambu-printer-mcp.mcpb to the GitHub release, mirroring the existing npm-publish workflow.
  • Document the new install path in README.md and CHANGELOG.md; bump package version to 1.1.7.

Modeled on the mcpb setup in github-mcp-server-mcpb.

Test plan

  • mcpb validate manifest.json passes
  • npm run package:mcpb produces a valid archive (unzip -t succeeds)
  • npm run build and node --test tests/behavior.test.mjs pass (47/47)

Adds manifest.json with user_config prompts for printer connection
settings, .mcpbignore, an npm package:mcpb script, and a release-mcpb
CI workflow that attaches the packed bundle to tagged GitHub releases,
so the server can be installed via Claude Desktop's extension UI
instead of hand-editing JSON config.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@kyletaylored
kyletaylored marked this pull request as draft August 20, 2026 19:18
TEMP_DIR defaulted to a cwd-relative path, but the extension host spawns
the server with a cwd we don't control (and may not be writable), so the
module-load-time mkdirSync threw and killed the process before it ever
opened the stdio transport -- surfacing only as a silent "Server transport
closed unexpectedly" moments after initialize. Default to os.tmpdir()
instead, and add top-level uncaughtException/unhandledRejection handlers
so any future crash logs a stack trace instead of dying silently.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant