Context
Everything about mcpsnoop is zero-config except the one step at the very start, hand-editing a client config to wrap the server command. It is the only manual operation left, and it lands before the user has any reason to trust the tool enough to edit a config for it.
This stalled before because config formats differ across clients and drift over time, which made the how unclear. Narrowing to one client removes that objection without pretending the wider problem is solved.
Proposed change
wrap locates the config, backs it up, and rewrites the named server's command to run through mcpsnoop --. unwrap restores it. Re-running wrap does not double-wrap. --dry-run prints the change without writing. A missing config or an unknown server name is a clear message, not a stack trace.
Do Claude Desktop completely, and structure it so a second client is a new file rather than a rewrite of this one.
Scope boundary
One client. No discovery across clients, no touching a config the user did not name, and nothing written without a backup first.
Acceptance criteria
Files
- new
cmd/mcpsnoop/wrap.go, registered in cmd/mcpsnoop/main.go
internal/paths/paths.go
Context
Everything about mcpsnoop is zero-config except the one step at the very start, hand-editing a client config to wrap the server command. It is the only manual operation left, and it lands before the user has any reason to trust the tool enough to edit a config for it.
This stalled before because config formats differ across clients and drift over time, which made the how unclear. Narrowing to one client removes that objection without pretending the wider problem is solved.
Proposed change
wraplocates the config, backs it up, and rewrites the named server's command to run throughmcpsnoop --.unwraprestores it. Re-runningwrapdoes not double-wrap.--dry-runprints the change without writing. A missing config or an unknown server name is a clear message, not a stack trace.Do Claude Desktop completely, and structure it so a second client is a new file rather than a rewrite of this one.
Scope boundary
One client. No discovery across clients, no touching a config the user did not name, and nothing written without a backup first.
Acceptance criteria
wrapedits the config andunwraprestores it byte for bytewrap--dry-runwrites nothingFiles
cmd/mcpsnoop/wrap.go, registered incmd/mcpsnoop/main.gointernal/paths/paths.go