# Import Your Claude Desktop & Cursor MCP Config Into a Tester in 30 Seconds

> Your MCP servers already live in claude_desktop_config.json, Cursor's mcp.json or VS Code's mcp.json. Here's where each file is on Mac and Windows, how the formats differ, and how to pull every server into a tester in one click so you can debug it outside the client.

**Source:** https://mcpplaygroundonline.com/blog/import-claude-desktop-cursor-mcp-config  
**Author:** Nikhil Tiwari  
**Published:** 2026-11-03  
**Category:** User Guides  
**Reading time:** 7 min read  
**Topics:** import claude desktop config mcp, claude_desktop_config.json location, cursor mcp.json location, vs code mcp.json servers, windsurf mcp_config.json, claude code mcp config file, test mcp servers from claude desktop config, mcp config file locations mac windows, mcpServers vs servers, mcp playground desktop import

---

📖 TL;DR

-   **You don't need to retype your MCP servers to test them.** Every client already keeps them in a JSON file.
-   **Claude Desktop, Cursor, Windsurf and Claude Code** use an `mcpServers` key. **VS Code uses `servers`.** The entries inside are almost the same.
-   **MCP Playground Desktop finds all five files for you.** Open _Add a server → Import_, tick the servers you want and click _Import_.
-   **Env vars, headers and bearer tokens come along**, stored encrypted. Local commands still ask for approval before they first run.
-   **Project-level configs** like `.cursor/mcp.json` or `.mcp.json` aren't scanned. Paste them into the same screen instead.

## Table of Contents

-   [Why test outside your MCP client?](#why)
-   [Where each client keeps its MCP config](#locations)
-   [mcpServers vs servers: the format differences](#formats)
-   [Import every server in one click](#import)
-   [Paste a config instead](#paste)
-   [What gets imported, and what doesn't](#copied)
-   [After the import: find out why a server fails](#next)
-   [FAQ](#faq)

## Why test outside your MCP client?

A server shows a red dot in Claude Desktop. Or Cursor lists it with zero tools. **The client tells you almost nothing about why.**

A tester shows you everything: the exact command it ran, every JSON-RPC message, and the server's own stderr output. That's usually enough to spot the problem in a minute.

The annoying part is setup. **You already typed the command, arguments and API keys once.** Typing them again into another tool is slow, and a typo gives you a different bug from the one you're chasing.

So start from the config file you already have. This guide shows where each client keeps it, then how to import it in one step.

## Where each client keeps its MCP config

These are the user-level files each client reads. **On Windows, `%APPDATA%` is usually `C:\Users\YOU\AppData\Roaming`.**

Client

macOS

Windows

Key

Claude Desktop

`~/Library/Application Support/Claude/claude_desktop_config.json`

`%APPDATA%\Claude\claude_desktop_config.json`

`mcpServers`

Cursor

`~/.cursor/mcp.json`

`%USERPROFILE%\.cursor\mcp.json`

`mcpServers`

VS Code

`~/Library/Application Support/Code/User/mcp.json`

`%APPDATA%\Code\User\mcp.json`

`servers`

Windsurf

`~/.codeium/windsurf/mcp_config.json`

`%USERPROFILE%\.codeium\windsurf\mcp_config.json`

`mcpServers`

Claude Code

`~/.claude.json`

`%USERPROFILE%\.claude.json`

`mcpServers`, plus one per project

Some clients also read a **project-level file** from the folder you have open: `.cursor/mcp.json` in Cursor, `.vscode/mcp.json` in VS Code and `.mcp.json` in Claude Code. If a server only exists in one of those, you'll paste it in later.

Quick way to open the Claude Desktop file: **Settings → Developer → Edit Config**. My [Claude Desktop MCP setup guide](/blog/how-to-setup-mcp-claude-desktop) and [Cursor MCP guide](/blog/cursor-mcp-setup-guide) cover each client in more depth, and the [MCP config files guide](/blog/complete-guide-mcp-config-files-claude-desktop-cursor-lovable) covers other clients.

## mcpServers vs servers: the format differences

A local (stdio) server in Claude Desktop, Cursor or Windsurf looks like this:

```
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/Documents"],
      "env": { "LOG_LEVEL": "info" }
    }
  }
}
```

A remote server swaps `command` for `url`, often with a header for the API key:

```
{
  "mcpServers": {
    "github": {
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}
```

VS Code uses a **`servers`** key and usually adds a `type`:

```
{
  "servers": {
    "filesystem": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/Documents"]
    }
  }
}
```

**The fields inside each entry are the same idea everywhere:** `command`, `args`, `env` and sometimes `cwd` for local servers; `url` and `headers` for remote ones. That's why one importer can read all of them.

## Import every server in one click

[MCP Playground Desktop](/blog/mcp-playground-desktop-guide) reads all five user-level files above. Here's the whole flow:

1.  **Open the import screen.** In the Tester, click _\+ More servers & import from Claude, Cursor…_ in the sidebar. In Agent Studio, click _Import_. Both open _Add a server_ on the _Import_ tab.
2.  **Wait a moment while it scans.** You'll see "Looking for MCP configs on this computer…", then your servers grouped by client.
3.  **Pick the servers.** Everything new is ticked already. Servers you've imported before show _already added_ and can't be ticked, so you won't get duplicates.
4.  **Click _Import N servers_.** They're saved on your computer and show up in both the Tester and Agent Studio.

Each row shows the command and arguments (or the URL) it found. If an entry carried secrets, it also says something like _2 env vars · bearer token copied too, stored encrypted_.

Below the list, the app tells you which clients it didn't find, for example "Not installed or no config: Windsurf, Claude Code". **If a file exists but has a JSON error, you'll see a red "Couldn't read this file (invalid JSON?)" next to that client.** That's worth fixing anyway: the client itself can't read that file either.

That's the 30 seconds. Click a server, click _Connect_, and you're looking at its tools.

## Paste a config instead

For a project-level file, a README snippet or a config a teammate sent you, use the **Paste a config** box on the same tab, then click _Find servers_. It accepts:

-   A full file with `mcpServers` or `servers`
-   Just the inner map: `{ "name": { "command": … } }`
-   A single entry: `{ "command": "npx", "args": […] }` or `{ "url": "…" }`
-   A fragment copied out of a bigger file: `"name": { … }`

If the text doesn't parse, you'll see _That isn't valid JSON. Paste a config like { "mcpServers": { … } }._ If it parses but has no runnable entry, the error is _No servers found. Each one needs a "command" or a "url"._

## What gets imported, and what doesn't

In your config

After import

`command`, `args`, `cwd`

A stdio connection with the same command, arguments and working directory

`env`

Copied, stored encrypted with your OS keychain

`url`

An HTTP connection, or SSE if the entry says `"type": "sse"`

`Authorization: Bearer …` header

Moved into the Bearer token field; other headers are copied as they are

Claude Code project servers

Imported as _name (folder)_, with that project folder as the working directory

`"disabled": true`

Skipped

**One thing to check by hand: variables.** VS Code configs often use `${input:api-key}`, and some Cursor configs use `${env:API_KEY}`. The client fills those in when it starts the server. **The importer copies them as plain text**, so replace them with real values in the connection's env vars or headers before you connect.

**Imported commands don't run straight away.** The first time you connect a stdio server, the app shows _Run a local command?_ with the exact command, folder and any risky environment variables. A config file can contain anything, so you approve each command once. It asks again if the command, arguments, folder or env var names change.

Your original config files are only read, never changed. Claude Desktop and Cursor keep working exactly as before.

## After the import: find out why a server fails

This is where it pays off. **The app runs the server with your real login-shell PATH on a Mac**, so a command that works in Terminal runs here too. If it doesn't start, you get a plain answer instead of a red dot:

-   **"Couldn't find "uvx" on this computer."** with how to install it. That's the cause behind most [spawn npx ENOENT](/blog/fix-spawn-npx-enoent-mcp) errors.
-   **"The working directory doesn't exist"** when a `cwd` points at a folder you've moved.
-   **The Server stderr tab** when the process started and then crashed. Your stack trace is there.

If the server works in the app but still fails in Claude Desktop, the difference is the client's environment. My guide to [servers that work in the terminal but not in Claude Desktop](/blog/mcp-server-works-in-terminal-not-claude-desktop) walks through the six usual causes.

[Get MCP Playground Desktop for Mac and Windows →](/local-mcp-server-testing)

Only have remote servers? You don't need the desktop app for those. [Test any HTTPS MCP server free in your browser →](/mcp-test-server)

## FAQ

**Where is claude_desktop_config.json?+**

On macOS it's ~/Library/Application Support/Claude/claude\_desktop\_config.json. On Windows it's %APPDATA%\\Claude\\claude\_desktop\_config.json. In Claude Desktop you can open it from Settings, Developer, Edit Config.

**Where is Cursor's mcp.json?+**

The global file is ~/.cursor/mcp.json in your home folder on Mac and Windows. A project can also have its own .cursor/mcp.json in the project folder.

**Can I copy my Claude Desktop MCP config into VS Code?+**

Mostly. VS Code uses a servers key instead of mcpServers, and entries usually include a type such as stdio or http. The command, args, env and url fields stay the same.

**Does importing change my Claude Desktop or Cursor config?+**

No. MCP Playground Desktop only reads the files. It saves its own copy of each server on your computer, so your clients keep working as before.

**Are API keys in my MCP config safe when I import them?+**

They stay on your computer and are stored encrypted with your operating system's keychain. Local commands also need your approval before they first run.

## Conclusion

Your MCP servers are already written down in a JSON file. **Import that file instead of retyping it**, and you're testing the exact command your client runs, with its real env vars, in under a minute.

When a server misbehaves, that's the fastest way to see why. [Get MCP Playground Desktop for Mac and Windows →](/local-mcp-server-testing)

## Frequently asked questions

### Where is claude_desktop_config.json?

On macOS it's ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows it's %APPDATA%\Claude\claude_desktop_config.json. In Claude Desktop you can open it from Settings, Developer, Edit Config.

### Where is Cursor's mcp.json?

The global file is ~/.cursor/mcp.json in your home folder on Mac and Windows. A project can also have its own .cursor/mcp.json in the project folder.

### Can I copy my Claude Desktop MCP config into VS Code?

Mostly. VS Code uses a servers key instead of mcpServers, and entries usually include a type such as stdio or http. The command, args, env and url fields stay the same.

### Does importing change my Claude Desktop or Cursor config?

No. MCP Playground Desktop only reads the files. It saves its own copy of each server on your computer, so your clients keep working as before.

### Are API keys in my MCP config safe when I import them?

They stay on your computer and are stored encrypted with your operating system's keychain. Local commands also need your approval before they first run.


---

_Canonical page: https://mcpplaygroundonline.com/blog/import-claude-desktop-cursor-mcp-config — MCP Playground (mcpplaygroundonline.com), the free browser-based tool for testing MCP servers and building AI agents._
