Techniques
Managing MCP Servers
Install MCP servers once and OXP automatically configures every AI-aware IDE and client on your machine — with built-in reachability verification and rollback.
OXP as a Universal MCP Router
OXP is not just an extension protocol — it is the fastest way to wire MCP servers into every AI-aware IDE on your machine simultaneously.
Instead of editing JSON config files for VS Code, Cursor, Windsurf, and Claude Desktop separately, you run one command and OXP injects the server configuration into all of them automatically.
oxp install @modelcontextprotocol/server-githubThat single command:
- Fetches the server spec from the OXP registry
- Detects every installed AI client (VS Code, VS Code Insiders, Cursor, Windsurf, Claude Desktop)
- Merges the launcher entry into each client's config file, atomically
- Probes the server with a live MCP
initializehandshake and reports reachability
Sample output:
✓ MCP install: @modelcontextprotocol/server-github
launcher: npx -y @modelcontextprotocol/server-github
clients:
- Claude Desktop — installed ✓
- Cursor — installed ✓
- VS Code (Copilot) — installed ✓
verified reachable ✓
restart the affected client(s) to load the new server.
log: ~/.oxp/logs/mcp-install.jsonl---
Installing MCP Servers
From the OXP Registry
oxp install @modelcontextprotocol/server-github
oxp install @modelcontextprotocol/server-filesystem
oxp install @upstash/context7-mcpFrom a deep link
oxp install --from oxp://mcp/githubBrowse the full library
Open the MCP Library in your browser and click Install on any server.
---
How Auto-Injection Works
OXP writes the server config into the standard config location each client expects. The write is atomic — a temporary file is written then renamed — so you never get a partially-written config, even if the process is interrupted.
| Client | Config file |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) |
| Cursor | ~/.cursor/mcp.json |
| VS Code (Copilot) | ~/Library/Application Support/Code/User/mcp.json (macOS) |
| VS Code Insiders | ~/Library/Application Support/Code - Insiders/User/mcp.json (macOS) |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
On Windows, Application Support paths map to %APPDATA%\Roaming. On Linux, they follow XDG ($XDG_CONFIG_HOME or ~/.config/).
OXP only writes to a client whose parent config directory already exists — you won't get a stale config entry for a client you don't have installed.
---
Reachability Verification
After injecting the config, OXP spawns the server process and runs a live MCP initialize handshake (8-second timeout). The result is shown inline and written to the log:
verified reachable ✓or, if something is wrong:
not reachable: timed out — server did not respond to initialize (may need credentials)
(server is configured — check credentials or restart client)The server is still configured even when the probe fails — most probe failures are credential issues (the server crashes immediately when YOUR_API_KEY is missing), not installation problems. Set the required env vars in the client's settings UI after installing, then the server will start cleanly.
---
Install Logs
Every install, update, and probe operation appends a JSON line to ~/.oxp/logs/mcp-install.jsonl:
{"ts":"2025-05-14T10:00:00Z","kind":"install","id":"@modelcontextprotocol/server-github","client":"claude-desktop","status":"ok"}
{"ts":"2025-05-14T10:00:00Z","kind":"install","id":"@modelcontextprotocol/server-github","client":"cursor","status":"ok"}
{"ts":"2025-05-14T10:00:00Z","kind":"probe","id":"@modelcontextprotocol/server-github","status":"reachable"}The log is append-only, written with mode 0600 in a 0700 directory — readable only by your user. It is the first place to look when something goes wrong.
---
Removing a Server
oxp mcp rollback @modelcontextprotocol/server-githubThis removes the server entry from every detected client's config file — the exact inverse of oxp install. OXP touches only the server's own key; no other config is modified or removed.
Sample output:
oxp mcp rollback: @modelcontextprotocol/server-github
✓ removed from Claude Desktop ~/Library/Application Support/Claude/claude_desktop_config.json
✓ removed from Cursor ~/.cursor/mcp.json
· VS Code (Copilot) — not configured
restart the affected client(s) to apply the change.
log: ~/.oxp/logs/mcp-install.jsonlUse --json for machine-readable output (useful in scripts):
oxp mcp rollback @modelcontextprotocol/server-github --json---
Checking Server Health
oxp doctor — MCP section
oxp doctor includes a dedicated MCP section. It reads every detected client's config, deduplicates server specs by launcher command, and probes each unique server in parallel (bounded at 8 s per server):
MCP servers:
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)
• server-github reachable ✓
• server-filesystem not reachable — timed out (may need credentials)
Cursor (~/.cursor/mcp.json)
• server-github reachable ✓oxp doctor # human-readable with MCP section
oxp doctor --json # machine-readable; includes a top-level `mcp` arrayThe --json output shape for the MCP section:
{
"mcp": [
{
"id": "claude-desktop",
"name": "Claude Desktop",
"configPath": "~/Library/Application Support/Claude/claude_desktop_config.json",
"servers": [
{ "slug": "server-github", "command": "npx", "args": [...], "reachable": true }
]
}
]
}---
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Server installed but not appearing in client | Client needs restart | Restart the IDE or Claude Desktop |
not reachable: command not found: npx | npx not on PATH | Ensure Node.js is installed; some clients don't inherit the full shell PATH |
not reachable: timed out | Server needs credentials | Set required env vars in the client's MCP settings UI |
| Re-running install shows "skipped (already configured)" | Entry already identical | This is correct — OXP is idempotent. No action needed. |
| Rollback skipped one client | Client not detected | The client's config parent directory must exist for detection to work |