- 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)
56 lines
3.5 KiB
Markdown
56 lines
3.5 KiB
Markdown
# 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. |
|