CONCEPT Cited by 1 source
MCP client-config fragmentation¶
Definition¶
MCP client-config fragmentation is the observation that
every MCP-aware client
(Claude Desktop, Cursor, Zed, VS Code, Windsurf, Neovim, …)
stores its list of connected MCP servers in a different
file, under a different config key, at a different path
that often varies per-OS. An operator wiring one MCP server
into N clients ends up editing N different JSON files by
hand, which is the ergonomics tax Fly.io's
fly mcp launch exists to
eliminate.
Canonical wiki statement¶
From Fly.io's 2025-05-19 MCP launch post (Source: sources/2025-05-19-flyio-launching-mcp-servers-on-flyio):
"Next there is the configuration. Asking users to manually edit JSON seems so early 21th century. With Claude, this goes into
~/Library/Application Support/Claude/claude_desktop_config.json, and is found under aMCPServerkey. With Zed, this file is in~/.config/zed/settings.jsonand is found under acontext_serverskey. And some tools put these files in a different place depending on whether you are running on MacOS, Linux, or Windows."
The three axes of fragmentation¶
- Path fragmentation — each client has its own file.
Claude Desktop uses
~/Library/Application Support/Claude/claude_desktop_config.json(macOS-specific); Zed uses~/.config/zed/settings.json; Cursor / VS Code / Windsurf / Neovim each have their own again. There is no standard well-known location. No analog of~/.ssh/configor~/.aws/confighas emerged. - Schema fragmentation — the config key for the MCP
server list is client-specific (
MCPServerin Claude Desktop,context_serversin Zed, …). Even if the operator wrote a script to edit one file, the JSON structure to splice in differs per client. - OS fragmentation — "some tools put these files in a different place depending on whether you are running on MacOS, Linux, or Windows." A cross-platform operator has to handle each permutation.
Why it matters¶
Fragmentation isn't a minor ergonomic complaint — it's a feature-adoption friction on MCP itself. An operator trying a new MCP server has to:
- read the server's README,
- find the right JSON config file for their editor,
- discover the right config key,
- write JSON into it (easy to get syntactically wrong),
- restart the client to pick it up,
- repeat (2)–(5) for each other editor / agent they also use.
This is exactly the friction that
systems/fly-mcp-launch's --claude / --cursor / --zed
/ --vscode / --windsurf / --neovim selector flags paper
over: one command, multi-client targeting supported, JSON
rewrite handled by the tool.
Why there's no standard (yet)¶
MCP was "days away from turning six months old" at the time
of the Fly.io post (2024-11 launch + 2025-05-19 post date).
Client-config standardisation typically lags protocol
standardisation; the fragmentation reflects early-ecosystem
reality, not an intrinsic design failing. Draft proposals for
MCP standardised discovery / config surfaces do exist — see
the 2026-04 MCP Server Card
/.well-known/mcp/server-card.json proposal — but those solve
server-side discovery, not client-side config storage.
Relation to the local-vs-remote MCP server split¶
Local MCP servers require the client to launch a subprocess, so the config file needs command-line args + env vars; remote MCP servers (HTTP/Streamable-HTTP) only need a URL + auth. In practice both shapes end up in the same file, so fragmentation affects both — though the schema difference (command vs URL) adds a fourth axis of fragmentation on top.
Seen in¶
- sources/2025-05-19-flyio-launching-mcp-servers-on-flyio —
canonical disclosure; names the Claude Desktop + Zed config
paths and keys explicitly, motivates
fly mcp launchas the first-party solution.
Related¶
- systems/model-context-protocol — the protocol whose clients all disagree on config storage.
- systems/fly-mcp-launch — Fly.io's first-party solution.
- concepts/local-mcp-server-risk — the other main ergonomics / security complaint Fly.io's post raises about early-era MCP.
- concepts/mcp-long-lived-sse — the runtime connection shape fragmented configs point the client at.
- patterns/remote-mcp-server-via-platform-launcher — the
pattern
fly mcp launchinstantiates to eliminate fragmentation at deploy time.