Repository navigation
Register with Cursor and VS Code too, and document all of it (#1) - #2
Merged
Merged
Conversation
Claude Desktop was not a decision — it was the one client the design work happened to target, and nothing about the server is specific to it. #1 asked why, which is a fair question with no good answer. cellpy mcp install --client cursor cellpy mcp install --client vscode cellpy mcp install --list-clients ## The part that fails silently Clients differ in two ways. The file location is the obvious one. The other is the top-level key: **VS Code reads `servers`, everyone else reads `mcpServers`**. Write the wrong one and the file parses, saves, and does nothing — no error anywhere, and the user is left believing they registered. So the key is per-client data rather than a constant, and a test asserts each client gets its own. ## Claude Code is deliberately not written to Its servers live in `~/.claude.json`, next to the sign-in session and per-project trust decisions, or in a project-scoped `.mcp.json` whose location depends on which project was meant. `claude mcp add` exists and handles scopes. Merging into a file that important, to save someone one command, is a bad trade. So `config_path("claude-code")` refuses — and the refusal carries the command, filled in with this machine's interpreter, because a refusal that does not say what to do instead just moves the problem. ## Also - `status` now reports which clients it can see cellpy registered with, rather than naming one client's config path while supporting three. - README gains a "Registering with your client" section: the table of paths and keys, the `claude mcp add` line, a by-hand JSON block, and the reason to use the full interpreter path — a desktop client activates no virtualenv and inherits no shell PATH, which is the most common reason a server shows up as failed. Paths verified against the current VS Code and Cursor documentation rather than from memory. No cellpy change needed: `cellpy mcp install --client` was already passed straight through. Closes #1. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1.
Claude Desktop was not a decision — it was the client the design work happened to target, and nothing about the server is specific to it. The question in #1 has no good answer, so this fixes it.
The part that fails silently
Clients differ in two ways. The file location is the obvious one; the other is the top-level key. VS Code reads
servers, everyone else readsmcpServers— write the wrong one and the file parses, saves, and does nothing, with no error anywhere and the user believing they registered. The key is now per-client data rather than a constant, and a test pins each.%APPDATA%/Claude/claude_desktop_config.json·~/Library/Application Support/Claude/…·~/.config/Claude/…mcpServers~/.cursor/mcp.jsonmcpServers%APPDATA%/Code/User/mcp.json·~/Library/Application Support/Code/User/mcp.json·~/.config/Code/User/mcp.jsonserversPaths verified against the current VS Code and Cursor documentation rather than from memory.
Claude Code is deliberately not written to
Its servers live in
~/.claude.json— alongside the sign-in session and per-project trust decisions — or in a project-scoped.mcp.jsonwhose location depends on which project was meant.claude mcp addexists and handles scopes.Merging into a file that important to save someone one command is a bad trade, so
config_path("claude-code")refuses. The refusal carries the command, filled in with the machine's own interpreter, because a refusal that does not say what to do instead just moves the problem.Also
statusreports which clients it can see cellpy registered with, instead of naming one client's config path while supporting three.claude mcp addline, a by-hand JSON block, and why to use the full interpreter path — a desktop client activates no virtualenv and inherits no shell PATH, which is the most common reason a server shows up as failed.Testing
60 tests (was 53). New ones cover each client's path shape, the
servers/mcpServerssplit in both directions, an existing VS Code file keeping its other servers and itsinputs, the Claude Code refusal carrying its command, and installing into one client not touching another.No cellpy change needed —
cellpy mcp install --clientwas already passed straight through to this package.🤖 Generated with Claude Code