The Claude Desktop config JSON sits in your user profile—%APPDATA%\Claude (Windows) and ~/Library/Application Support/Claude (macOS).
Hunting down the Claude Desktop settings file can be confusing, especially if you switch between Windows and macOS. This guide shows the exact folders to check, quick ways to open them, and safe tweaks you can make. You’ll also learn how to verify that the JSON loads, fix path issues, and restart the app without losing your setup.
Claude Desktop Config File Location (Quick Check)
On Windows, the configuration file is named claude_desktop_config.json and usually sits in your roaming profile. On macOS, it lives in your Library folder. If the file doesn’t exist yet, you can create it in the right directory and Claude Desktop will read it on launch.
Default Paths By Operating System
Windows path:
%APPDATA%\Claude\claude_desktop_config.json
Expanded example with a username:
C:\Users\\AppData\Roaming\Claude\claude_desktop_config.json
macOS path:
~/Library/Application Support/Claude/claude_desktop_config.json
Why There Are Multiple Windows Folders
Some installs place app data under a different vendor folder. If you don’t see a Claude directory in Roaming, check the Local path used by some packages:
C:\Users\\AppData\Local\AnthropicClaude\claude_desktop_config.json
If both locations exist, keep a single, active copy to avoid confusion. Place your live config where your build of the desktop app actually reads it, then remove duplicates.
Quick Ways To Open The Folder
Windows Run Box
Press Win+R, paste the line, and press Enter:
%APPDATA%\Claude
If that directory doesn’t exist, try:
%LOCALAPPDATA%\AnthropicClaude
macOS Finder
In Finder, press Shift+Command+G, then paste:
~/Library/Application Support/Claude
If the folder is missing, create it and add the JSON file there.
What The File Controls
The JSON tells Claude Desktop which local MCP servers to launch and how to connect to them. Each server entry includes a command, any args, and optional environment variables like tokens. When the app starts, it reads the JSON, spawns each server, and shows them under the hammer icon.
Minimal Working JSON
Here’s a clean template you can paste into the file and adapt. Paths are examples—swap them for your own.
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["@modelcontextprotocol/server-filesystem", "/Users/<you>/Desktop", "/Users/<you>/Downloads"]
}
}
}
When You Prefer Node Over NPX
Some Windows setups behave better when you call Node directly. Point to the installed server script:
{
"mcpServers": {
"github": {
"command": "node",
"args": ["C:/Users/<you>/AppData/Roaming/npm/node_modules/@modelcontextprotocol/server-github/dist/index.js", "--debug"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_TOKEN" }
}
}
}
Create Or Fix The File Safely
1. Close Claude Desktop
Quit the app so it releases the config. This prevents partial reads while you edit.
2. Make A Backup
If a JSON already exists, copy it to a safe name like claude_desktop_config.backup.json. This gives you a quick rollback.
3. Edit With A JSON-Aware Editor
Use an editor that shows syntax errors. Turn on soft wrap so long lines don’t hide mistakes.
4. Validate Your JSON
Common mistakes include missing commas, mismatched quotes, or trailing commas. Keep double quotes for keys and strings, and stick to absolute paths.
5. Save And Reopen The App
Launch Claude Desktop and watch for the hammer icon. If servers stay hidden, check logs and path spelling.
How To Confirm The Right Folder
If you edited one path and nothing changed, you may be looking in the wrong directory. The fast way to confirm the active folder is to watch which log files update. Open the Windows or macOS log directory in a second window, then start the app. If new log lines appear, you’re in the right profile path. If not, try the alternate folder listed above and repeat the test.
You can also move the JSON temporarily by renaming it, then relaunching. If the tool list vanishes, the app was reading that file. Restore the name, relaunch again, and the servers should return.
Check Logs When Things Don’t Load
Claude Desktop writes MCP logs per platform. These files help you spot syntax errors or bad paths. On macOS, look in ~/Library/Logs/Claude. On Windows, check %APPDATA%\Claude\logs. Open the latest mcp.log and scan for the missing server name or a path that fails to resolve.
Common Path Pitfalls
1. Tilde Expansion On macOS
Use full paths in the JSON. Shell shortcuts like ~ don’t expand inside the file. Replace them with /Users/<you>.
2. Backslashes In Windows JSON
In JSON strings, a single backslash is an escape. Keep your server paths in args, not in a single quoted blob that needs heavy escaping. When you must show a path, forward slashes are often easier.
3. Missing Node Or Wrong NPM Prefix
If NPX can’t find a package, the app can’t start the server. Confirm Node and NPM are installed and on PATH. If needed, call Node directly and point at the server’s entry file.
4. Duplicate Files In Two Windows Folders
Pick one directory. Keep the active JSON there. Delete stale copies so edits aren’t split across locations.
Confirm The App Reads Your JSON
After you edit, close and reopen Claude Desktop. Look for the hammer icon, then open the tools list. If your server shows up, the file loaded. If not, scan the log and try a manual start in a terminal to surface errors.
Manual Start Commands
macOS/Linux:
npx -y @modelcontextprotocol/server-filesystem /Users/<you>/Desktop /Users/<you>/Downloads
Windows:
npx -y @modelcontextprotocol/server-filesystem C:\Users\\Desktop C:\Users\\Downloads
Trusted References And Deeper Reading
For an official walk-through of desktop setup, JSON basics, and log paths, see the Model Context Protocol quickstart. It lists the same terminal commands used in this guide and points to the folders where logs are written.
If you’d rather skip hand-editing, Anthropic’s engineering post on Desktop Extensions explains one-click packages that install local servers without a manual JSON. That route is handy when teammates need a consistent setup.
Advanced Tips For Mixed Environments
Many teams juggle both Windows laptops and Mac workstations. Keep a shared snippet that lists both default paths and a standard set of servers, then adjust only the platform-specific pieces. A tiny README next to the JSON can spell out which folders your servers are allowed to touch and who owns each token. That tiny bit of documentation saves time when someone new joins the project or when a laptop gets replaced.
When you manage more than one profile on the same machine, label each server key with a prefix such as fs_home, fs_work, or github_readonly. The label shows up in the tool list, so you can tell at a glance which one you are about to use. If a server needs extra flags, add them in args and keep the set small. When a path changes, update the JSON and the README together so the next person doesn’t have to guess.
Handy Table: Default Folders And What To Check
| OS | Default File Path | What To Verify |
|---|---|---|
| Windows | %APPDATA%\Claude\claude_desktop_config.json | File exists; JSON valid; Node/NPX on PATH; logs under %APPDATA%\Claude\logs |
| Windows (alt) | %LOCALAPPDATA%\AnthropicClaude\claude_desktop_config.json | Only one active copy; remove duplicates; same JSON rules |
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json | Absolute paths; no tilde; check ~/Library/Logs/Claude |
Practical Examples You Can Copy
Filesystem Server With Two Folders
{
"mcpServers": {
"fs": {
"command": "npx",
"args": ["@modelcontextprotocol/server-filesystem", "/Users/<you>/Desktop", "/Users/<you>/Projects"]
}
}
}
GitHub Server With Token
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx" }
}
}
}
Mix And Match Servers
{
"mcpServers": {
"fs": {
"command": "npx",
"args": ["@modelcontextprotocol/server-filesystem", "/Users/<you>/Desktop"]
},
"github": {
"command": "node",
"args": ["C:/Users/<you>/AppData/Roaming/npm/node_modules/@modelcontextprotocol/server-github/dist/index.js"]
}
}
}
Step-By-Step: Fresh Install Checklist
- Install Claude Desktop and sign in.
- Create the folder that holds the JSON if it isn’t present.
- Add a minimal JSON with one server so you can test quickly.
- Restart the app and confirm the hammer icon appears.
- Open the log file and scan for warnings about paths or tokens.
- Expand the JSON with more servers after the first one works.
Security Tips For Tokens
Keep tokens out of screenshots and shared repos. On a shared machine, use per-user profile folders, not system-wide locations. If you rotate a token, update the JSON and restart the app so the new value takes effect. When possible, grant the least scope needed for the task and store secrets in environment variables that your shell injects when launching the desktop app.
Version Control And Backup
Because the JSON is small, it’s easy to keep a history. Drop a copy into a private repo or save dated snapshots. When you change servers, bump a comment in a nearby README with the reason and a short note. If things break, you can roll back to the last known good file in seconds.
When A JSON Isn’t Needed
Desktop Extensions bundle an MCP server and a manifest. Double-click an .mcpb file and Claude Desktop installs it without manual edits. That route is handy when you want a clean, repeatable setup across machines.
Wrap-Up: Make It Repeatable
Pick the right folder, keep a tidy JSON, and use logs when things go sideways. With those basics in place, you can add or swap servers in seconds and keep your desktop running smooth.
If you script your setup, stash the JSON template and a short shell script in a private repo so you can rebuild a new machine in minutes.
