Files
tai/research/mcp-client-support/cursor-mcp-docs.md
T
retoor 251c3dc2ba research: mcp-client-support subject (106 sources, 3 conclusions)
- 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)
2026-10-18 19:23:02 +02:00

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.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.