Skip to content

fix(mcpb): default bundle tools to empty array when omitted#791

Open
syf2211 wants to merge 1 commit into
smithery-ai:mainfrom
syf2211:fix/770-empty-tools-bundle
Open

fix(mcpb): default bundle tools to empty array when omitted#791
syf2211 wants to merge 1 commit into
smithery-ai:mainfrom
syf2211:fix/770-empty-tools-bundle

Conversation

@syf2211

@syf2211 syf2211 commented Jun 27, 2026

Copy link
Copy Markdown

Summary

When publishing a .mcpb bundle whose manifest omits the tools key, getBundleDeployPayload produced a serverCard with only serverInfo. The Smithery registry rejects that payload with 400 {"error":"No values to set"}.

This change always includes tools in the deploy payload, defaulting to an empty array when the manifest does not declare tools.

Motivation

Fixes #770. Users reported publish failures for valid stdio bundles unless they manually edited manifest.json to add "tools": []. Issue comments traced the root cause to conditional spreading in getBundleDeployPayload.

Changes

  • Default serverCard.tools to [] when manifest.tools is omitted
  • Add unit tests for omitted and explicit tools manifest values

Tests

  • pnpm test src/lib/__tests__/mcpb/get-bundle-deploy-payload.test.ts — 2 passed
  • pnpm test — 399 passed
  • pnpm run check — passed
  • pnpm run typecheck — passed

Notes

  • Explicit tools: [] in the manifest behaves the same as before
  • prompts and resources remain optional; only tools needed defaulting for the reported registry validation error

Bundles without a tools key produced a serverCard with only serverInfo,
which the Smithery registry rejects with "No values to set". Default to
an empty tools array so stdio bundles can publish without manifest edits.

Fixes smithery-ai#770
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.

[Bug]: smithery mcp publish returning 400 {"error":"No values to set"}

1 participant