- wire spec: lifecycle, stdio + Streamable HTTP transports, tools, utilities, legacy SSE, versioning, changelog (14 Tier 1) - client ecosystem: Claude Code/VS Code/Cursor/Codex configs, mcp-remote, Smithery, registries, Glama (12 Tier 1) - security/ops: authorization draft, trust model, poisoning, rug pulls, production hardening (12 Tier 1) + 68 Tier 2 cards - conclusions: minimal stdlib client on 2025-11-25, normalizer + resolver agent for pasted configs/GitHub URLs, untrusted-until- consent trust model; nothing built yet - audit PASS (14 subjects, 797 sources, 32 conclusions)
3.5 KiB
3.5 KiB
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.jsonshapes shown for Node (command: npx), Python (command: python), and remote (url+headers, notypeneeded, unlike Claude Code's requiredtype).- STDIO table marks
type: "stdio"as Required, withcommand("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, andheaders." - "
envFile... is only available for STDIO servers. Remote servers (HTTP/SSE) do not supportenvFile." 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", desktophttp://localhost:9876/oauth/callback-style plushttps://www.cursor.com/agents/mcp/oauth/callbackfor 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-
typerule and the stdio-onlyenvFilerestriction 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-protocolredirects 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. |