On this page
There are four config files. One for Claude Desktop, one for Cursor, one for VS Code, one for Windsurf. Each lives in a different directory. Two of them use mcpServers. One uses servers. VS Code decided.
You’ve looked up the path at least twice. You’ve had a syntax error at least once. The server didn’t load and you weren’t sure if it was the JSON or the path or the token.
There’s a shorter way.
usepaso connect
Run this from the directory containing your usepaso.yaml:
usepaso connect claude-desktop
Added "Sentry" in Claude Desktop config.
Config: ~/Library/Application Support/Claude/claude_desktop_config.json
Restart Claude Desktop to connect.
paso reads your declaration to get the service name, builds the correct config entry for the client, and writes the file. If the config doesn’t exist, it creates it. If USEPASO_AUTH_TOKEN isn’t set, it adds a placeholder and tells you.
The same command works for all four clients:
usepaso connect claude-desktop
usepaso connect cursor
usepaso connect vscode
usepaso connect windsurf
Each client gets the right config structure. Cursor and VS Code write a project-local file. Claude Desktop and Windsurf write to a global config.
usepaso disconnect
usepaso disconnect claude-desktop
Removes the entry for this service from the client config. If the entry doesn’t exist, it exits cleanly. No errors, nothing to clean up manually.
If an entry already exists
usepaso connect claude-desktop --force
Without --force, the command exits with an error if an entry for this service is already present. With it, the entry is overwritten. Useful when you’ve changed your declaration and want the config to reflect the new service name or path.
What it writes
For Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"sentry": {
"command": "npx",
"args": ["usepaso", "serve", "-f", "/absolute/path/to/usepaso.yaml"]
}
}
}
Claude Desktop doesn’t set a working directory when it starts servers, so paso uses the absolute path to your file.
For Cursor (.cursor/mcp.json in your project root):
{
"mcpServers": {
"sentry": {
"command": "npx",
"args": ["usepaso", "serve"]
}
}
}
IDE clients run from the project root, so the path isn’t needed.
VS Code (.vscode/mcp.json) follows the same pattern, but uses servers instead of mcpServers. That’s a VS Code decision, not ours.
The full workflow
usepaso init --name "Sentry"
# edit usepaso.yaml
usepaso validate
usepaso serve
usepaso connect claude-desktop
Declare. Validate. Serve. Connect. No JSON editing at any point.
Related:
- CLI Commands reference. full flag reference for connect and disconnect
- Claude Desktop Setup. step-by-step guide
- Cursor Setup. step-by-step guide
- VS Code Setup. step-by-step guide
- Windsurf Setup. step-by-step guide