Skip to content

Fix completions capability naming to match MCP SDK#12

Open
krzysztofwos wants to merge 2 commits intocameroncooke:mainfrom
krzysztofwos:fix/completions-capability-naming
Open

Fix completions capability naming to match MCP SDK#12
krzysztofwos wants to merge 2 commits intocameroncooke:mainfrom
krzysztofwos:fix/completions-capability-naming

Conversation

@krzysztofwos
Copy link
Copy Markdown

@krzysztofwos krzysztofwos commented Apr 8, 2026

Summary

  • Renames the completion capability key to completions (plural) in both the proxy server and child client capability declarations in src/mcp-proxy.ts
  • This aligns with the @modelcontextprotocol/sdk >=1.25.x which validates against completions when registering the CompleteRequestSchema handler

Problem

reloaderoo fails to start with:

Error: Server does not support completions (required for completion/complete)

The SDK's assertRequestHandlerCapability checks this._capabilities.completions but the proxy declared completion (singular), so the check always fails.

Test plan

  • All existing tests pass (121 unit + 19 integration + 11 e2e)
  • Verified end-to-end with a Rust MCP server (rmcp) in Cursor — proxy starts, restart_server tool works, child server restarts successfully

Fixes #9
Fixes #8

The MCP SDK (`@modelcontextprotocol/sdk` >=1.25.x) validates server
capabilities using the key `completions` (plural), but the proxy was
declaring `completion` (singular). This caused a hard error on startup:

  Error: Server does not support completions (required for completion/complete)

Rename the capability key in both the proxy server and the child client
capabilities objects.

Fixes cameroncooke#9

Made-with: Cursor
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 8, 2026

Walkthrough

This change updates the MCP completion capability schema declarations in the proxy implementation. The MCPProxy constructor's server capabilities field is renamed from completion to completions with the schema changed from { argument: true } to {}. Similarly, the child Client capabilities field is updated from completion: {} to completions: {}. These changes affect only the capability advertisements and do not modify any request-handler wiring or control flow logic.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and directly summarizes the main change: renaming the completion capability to match MCP SDK requirements.
Linked Issues check ✅ Passed The pull request fully addresses the linked issue #9 by renaming completion to completions in both server and client capability declarations, resolving the SDK validation failure.
Out of Scope Changes check ✅ Passed All changes are scoped to the specific issue: only the capability key names were modified in mcp-proxy.ts with no extraneous alterations.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The pull request description clearly relates to the changeset, explaining the capability key rename from 'completion' to 'completions' and why this fix is necessary.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

When installing from a GitHub URL (e.g. npm install user/repo#branch),
npm runs the `prepare` lifecycle script after cloning. Without it, the
`dist/` directory is missing because it's gitignored and never built.

Made-with: Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant