Document that Claude Desktop validates served prompt content against manifest prompts[].text
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
- Issue type
- Documentation
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- documentation
Research direction
Start with MANIFEST.md and trace the existing prompt manifest documentation and any mcpb validate or mcpb pack guidance. Document that prompts[].text is expected to match the content served by prompts/get, including the comparison behavior if confirmed; done means a newcomer can avoid the mismatch and the validation or packaging guidance is accurate.
Written by the indexing model from the issue text.
Description
Summary
Claude Desktop's extension runtime appears to validate the content a bundled extension serves via prompts/get against the prompts[].text declared in manifest.json, rejecting the prompt on mismatch. This is a sensible defense (a server could otherwise swap prompt content after install/review), but it doesn't seem to be documented in MANIFEST.md, and the error gives the author no hint that the manifest is involved:
Extension prompt "" content validation failed. Rejecting response to prevent potential prompt injection.
followed by "Failed to attach prompt. You can try again."
How we isolated it
Our manifest carried a one-line summary in prompts[].text while the server serves the full ~2.7 KB prompt text (we'd read the field as listing metadata, like tools[].description):
- Summary text in manifest + original served wording → rejected
- Summary text in manifest + fully rewritten served wording (all injection-pattern phrasing removed) → still rejected — so it isn't (only) a content classifier
- Manifest
textbyte-identical to the served text → accepted, prompt attaches and runs
Tools are unaffected by mismatched tools[].description (they remained callable throughout), which reinforced the misreading of prompts[].text as display metadata.
Suggestions (any subset helps)
- Document in MANIFEST.md that for prompts,
textis (or is treated by Claude Desktop as) the canonical content the server must serve, not a summary — and what the comparison is (exact match? normalized?) - Have
mcpb validateormcpb packwarn when a bundle's declared prompt text looks like a summary (e.g., much shorter than typical prompt content) — or better, offer a check that runs the bundled server and diffsprompts/getagainst the manifest - Surface a more actionable client error, e.g. "served prompt content does not match the manifest declaration"
Happy to provide the bundle or a minimal reproduction. Our fix, for reference (generate prompts[].text from the same module the server registers from, with a byte-equality check in the build): https://github.com/elicitly/elicitly/pull/32
- Dominant language
- TypeScript
- Stars
- 2.1k
- Forks
- 210
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from modelcontextprotocol/mcpb
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
modelcontextprotocol/mcpb#265 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
modelcontextprotocol/mcpb#263 ·
-
replaceVariables interpolates the variable key into a RegExp unescaped (over-match + crash/ReDoS) Open
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
modelcontextprotocol/mcpb#262 ·
-
mcpb unpack fails on archives containing directory entries (unusable on standard ZIP/.mcpb files) Open
Difficulty 1/5 Under an hour Newbie friendliness 86/100
modelcontextprotocol/mcpb#261 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
modelcontextprotocol/mcpb#258 ·
All issues in modelcontextprotocol/mcpb
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
fullcalendar/fullcalendar#8106 ·