Install your first server without guessing

Nov 9, 2026The avbbc desk

Every MCP client reads a JSON config with the same shape. The differences are the file path and the surrounding keys.

The block

Three values matter. `command` is the executable the client launches. `args` are its arguments — for npx packages the second argument is the package name, and anything after it is passed to the server itself. The optional `env` block carries credentials.
## The part people get wrong: scope
The filesystem server takes its allowed roots as arguments. In the example above that is `./projects`, resolved relative to wherever the client launches the process — not relative to your shell.
That is the single most common failure: the server works, the path is wrong, and the agent reports "file not found". Use an absolute path when you are debugging.
## Where the file lives
| Client | Path |
|---|---|
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Claude Desktop (Windows) | `%APPDATA%Claudeclaude_desktop_config.json` |
| Cursor | Settings → MCP → Edit config, or a project-level file |
| Most CLI agents | `claude mcp add`, `codex mcp add`, or a YAML equivalent |
Paths change between versions. When in doubt, use the client's own `add` command — it writes the file for you, in the shape that version expects.
## How to know it worked
Restart the client. The tools should appear in the tool list, usually behind a hammer or plug icon. Then call the smallest one by hand before you let the agent use it — `list_directory` rather than `write_file`.
If tools do not appear, do not touch the prompt. Go to [debugging a server](/blog/debug-server/); it is almost always the command, the path, or a credential.