Pasting mcpServers blocks into JSON config files is the worst part of using MCP. Tokens leak into plaintext config files. Restarts break flow. Adding a new server means a new entry, new env vars, a new restart. Removing one means hunting through a hundred-line JSON to delete the right block.
There's a better way, and it takes five minutes. This post walks you through replacing your manual mcpServers block with one entry - running through 1Server - without losing any functionality.
If you have three or more servers configured today, this migration is worth your tea-break.
The before/after
Before: 5 servers, 30 lines of JSON, one rotation crisis away from chaos
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx" }
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/code"]
},
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": { "SLACK_TOKEN": "xoxb-xxx" }
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": { "BRAVE_API_KEY": "BSA-xxx" }
}
}
}
Note the four problems hiding here:
- Plaintext tokens. Three secrets sitting in a config file you almost certainly don't have in
.gitignorecorrectly. - No hot reload. Add a sixth server? Restart your AI client. Toggle one off? Edit JSON, restart.
- Rotation pain. Rotate your GitHub PAT and you have to remember every config file it lives in.
- No introspection. Which servers are healthy right now? Which are actually being used? You can't tell from the file.
After: 1 entry, 8 lines, every tool still works
{
"mcpServers": {
"1server": {
"command": "npx",
"args": ["-y", "1server-mcp-engine"],
"env": { "ONESERVER_API_KEY": "your-api-key" }
}
}
}
That's the entire AI-client-side config. Forever. Adding a new server in the 1Server web UI happens without changing this file at all - your client picks it up via hot reload.
Step 1: Inventory what you have
Open your AI client's config file. Where to find it:
- Claude Desktop (macOS):
~/Library/Application Support/Claude/claude_desktop_config.json - Cursor:
~/.cursor/mcp.json - VS Code with Copilot: usually
~/.config/Code/User/mcp.jsonor per-workspace.vscode/mcp.json - Claude Code:
~/.claude.json(or runclaude mcp list)
Look at the mcpServers block (or servers if you're on VS Code). Note each server's name, the command, and any env vars. You're going to map each one to an install in 1Server's marketplace.
A quick way to dump them:
# For Claude Desktop on macOS
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json | jq '.mcpServers | keys'
# For Cursor
cat ~/.cursor/mcp.json | jq '.mcpServers | keys'
Step 2: Move secrets to 1Server's vault first
Before re-installing servers, put your tokens somewhere that isn't a JSON file. Sign up for 1Server (free), then:
- Visit https://1server.ai/dashboard/secrets
- For each token in your existing config, create a vault entry - paste the token, give it a name, save.
- Tokens are AES-256 encrypted before they leave your browser.
Why do this first: when you re-install each server in 1Server's marketplace, the install drawer will offer to use a vault secret instead of asking you to paste plaintext again. Doing the vault step first means you don't paste tokens into the install form and immediately rotate them.
Step 3: Re-install each server in the marketplace
Browse 1Server's marketplace, find each server you currently have configured, and click Install.
For each server's required env vars, choose the matching secret from your vault. For servers without env vars (Sequential Thinking, Memory, etc.), the install is one click.
The marketplace covers the common servers - GitHub, Postgres, Slack, filesystem, Brave Search, Memory, Sequential Thinking, Cloudflare, etc. If you have a custom or rare server that's not in the marketplace, you can either keep it manually configured alongside 1Server (1Server and a manual server can coexist in the same client config) or publish it to the marketplace yourself.
Step 4: Swap your client config
Create a 1Server API key at https://1server.ai/dashboard/api-keys - you'll see it once, copy it.
Now replace your mcpServers block.
For Cursor / Claude Desktop / Windsurf / Zed (anything using mcpServers)
{
"mcpServers": {
"1server": {
"command": "npx",
"args": ["-y", "1server-mcp-engine"],
"env": { "ONESERVER_API_KEY": "paste-your-key-here" }
}
}
}
For VS Code
VS Code uses servers (not mcpServers) and requires an explicit type:
{
"servers": {
"1server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "1server-mcp-engine"],
"env": { "ONESERVER_API_KEY": "paste-your-key-here" }
}
}
}
For Claude Code
Run the CLI command:
claude mcp add 1server --transport stdio -e ONESERVER_API_KEY=YOUR_KEY -- npx -y 1server-mcp-engine
This registers 1Server globally - it's available in every Claude Code project, no per-repo config.
Step 5: Restart once and you're done
Restart your AI client one time. From now on:
- Adding a new server: click Install in the marketplace. Hot reload picks it up. Your client config doesn't change.
- Removing a server: click Uninstall. Same thing.
- Toggling a server temporarily: toggle it in the dashboard. Same thing.
- Rotating a token: update the vault entry. Same thing.
The only time you ever touch your AI client's config file again is if you want to remove 1Server entirely.
What you gain
Going through this migration:
- Hot reload across servers. New install → live in chat. No restart.
- Vault for secrets. Rotate once, applies everywhere. No more grep'ing config files for old tokens.
- Install / toggle / restart from chat. 1Server exposes meta-tools so you can ask Claude
install the postgres serverand have it happen. - One config across every client. If you also use VS Code or Claude Code, the same 1Server runs everywhere - no per-tool config drift.
- Health visibility. See which servers are running, which are unhealthy, in the dashboard.
What if I want to keep some servers manually configured?
Easy - 1Server and your manual servers coexist in the same mcpServers block:
{
"mcpServers": {
"1server": {
"command": "npx",
"args": ["-y", "1server-mcp-engine"],
"env": { "ONESERVER_API_KEY": "your-key" }
},
"my-custom-server": {
"command": "node",
"args": ["/Users/me/custom-server/dist/index.js"]
}
}
}
This is the right pattern for in-development servers you're iterating on locally - keep them manual, keep the rest in 1Server's marketplace.
Further reading
- 1Server Setup Guide - same content, with a UI you can scroll through
- What is MCP? - primer for new readers
- Best MCP servers for Cursor in 2026 - what to install first
If you're managing five MCP servers manually today, you're in our target audience for this post - the migration takes about five minutes once you've collected your tokens, and you stop fighting JSON forever.