# Cursor MCP docs ## Metadata | Field | Value | |---|---| | Institute | Molodetz Institute - Research and Retrieval Division | | Subject | mcp-client-support | | Document type | Source Dossier | | Tier | 1 | | Source title | Cursor MCP docs | | Source URL | https://cursor.com/docs/mcp | | Source publisher / author | Cursor | | Source type | vendor docs | | Source date (published) | Unknown, not stated | | Date researched | 2026-10-18 | | Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor | | Research method | gather-subagent direct page fetch, parent synthesis from evidence pack | | Confidence | High | | Status | Active | ## Summary Official Cursor documentation for MCP configuration. Its dialect differs from Claude Code on three load-bearing points: remote entries need no `type`, interpolation is `${env:NAME}`-style rather than `${VAR}`, and `envFile` is stdio-only. It also documents static OAuth fields in config, fixed OAuth redirect URLs, project vs global `mcp.json` locations, and team distribution via a Dashboard marketplace plus an enterprise MCP Allowlist. ## Key findings - `mcp.json` shapes shown for Node (`command: npx`), Python (`command: python`), and remote (`url` + `headers`, no `type` needed, unlike Claude Code's required `type`). - STDIO table marks `type: "stdio"` as Required, with `command` ("Must be available on your system path or contain its full path"), `args`, `env`, `envFile`. - Interpolation is `${env:NAME}`-style, NOT `${VAR}`: "Supported syntax: `${env:NAME}` environment variables, `${userHome}`, `${workspaceFolder}`..., `${pathSeparator}`"; "Cursor resolves variables in these fields: `command`, `args`, `env`, `url`, and `headers`." - "`envFile`... is only available for STDIO servers. Remote servers (HTTP/SSE) do not support `envFile`." Example: `"Authorization": "Bearer ${env:MY_SERVICE_TOKEN}"`. - Static OAuth in config: `CLIENT_ID` (required), `CLIENT_SECRET`, `scopes` (else discovered via `/.well-known/oauth-authorization-server`); "fixed OAuth redirect URLs", desktop `http://localhost:9876/oauth/callback`-style plus `https://www.cursor.com/agents/mcp/oauth/callback` for web/agents. - Locations: `.cursor/mcp.json` (project) vs `~/.cursor/mcp.json` (global); team distribution via Dashboard marketplace and an enterprise MCP Allowlist ("Allowlisting approves an MCP configuration. It does not distribute or install the server"). ## Pros / strengths - States its interpolation syntax as an explicit supported-syntax list, so the `${env:}` vs `${VAR}` divergence is first-party fact, not inference. - The remote-no-`type` rule and the stdio-only `envFile` restriction are the exact per-client deltas a resolver needs. - OAuth story is concrete: required fields, discovery fallback endpoint, and fixed redirect URLs for desktop and web. ## Cons / limitations / caveats - No publish date; field details could drift without notice. - Old path `docs.cursor.com/context/model-context-protocol` redirects to cursor.com and the guessed deep path 404s, so older citations rot. - Documents Cursor conventions only; its `${env:}` syntax is incompatible with Claude Code `${VAR}` on sight. ## Relevance to tai Proves expansion syntax is per-client (`${env:}` vs `${VAR}`): a resolver must rewrite placeholders per target client, and Cursor remote entries need no `type` repair. The stdio-only `envFile` rule constrains what tai may emit for Cursor remote servers. ## Changelog | Date | Change | |---|---| | 2026-10-18 | Initial dossier created. |