Files
yvgude--lean-ctx/docs/integrations/client-constraints-matrix-v1.md
T
wehub-resource-sync 26382a7ac6
CI / Clippy (push) Failing after 15m13s
CI / Test (ubuntu-latest) (push) Failing after 16m1s
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Build (no embeddings / no ORT) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Cookbook (Node) (push) Has been cancelled
CI / Pi Extension (Node) (push) Has been cancelled
CI / Rust SDK (lean-ctx-client) (push) Has been cancelled
CI / Embed SDK (lean-ctx-sdk) (push) Has been cancelled
CI / Python SDK (leanctx) (push) Has been cancelled
CI / Hermes Plugin (Python) (push) Has been cancelled
CI / SDK Conformance Matrix (push) Has been cancelled
CI / Coverage (push) Has been cancelled
CI / cargo-deny (push) Has been cancelled
CI / Adversarial Safety (push) Has been cancelled
CI / Benchmarks (push) Has been cancelled
CI / Output-Quality Gate (eval A/B) (push) Has been cancelled
CI / Documentation (push) Has been cancelled
CI / CI Green (push) Has been cancelled
JetBrains Plugin / Actionlint (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (rust) (push) Has been cancelled
JetBrains Plugin / Validation (push) Has been cancelled
JetBrains Plugin / Build (push) Has been cancelled
JetBrains Plugin / Test (push) Has been cancelled
Security Check / Security Scan (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:35:30 +08:00

12 KiB
Raw Blame History

Client Constraints Matrix v1 (docsbacked SSOT)

This document is the SSOT for client-specific MCP integration constraints (config schema, hook semantics, approval model, limits).

It is used by:

  • the Instruction Compiler (client profiles, size bounds, deterministic compilation)
  • lean-ctx setup / lean-ctx doctor (autotuning, drift detection, repair guidance)

Machinereadable block

{
  "schemaVersion": 1,
  "updatedAt": "2026-05-02",
  "clients": [
    {
      "id": "cursor",
      "displayName": "Cursor",
      "config": { "paths": ["~/.cursor/mcp.json", ".cursor/mcp.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": true, "paths": ["~/.cursor/hooks.json", ".cursor/hooks.json"], "events": ["preToolUse"] },
      "toolApproval": { "model": "autoApprove", "key": "autoApprove" },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://cursor.com/docs/mcp.md", "https://cursor.com/docs/hooks"]
    },
    {
      "id": "claude-code",
      "displayName": "Claude Code",
      "config": { "paths": ["~/.claude.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": true, "paths": ["~/.claude/settings.json", ".claude/settings.json"], "events": ["PreToolUse"] },
      "toolApproval": { "model": "prompted", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": 2048 },
      "sources": ["https://code.claude.com/docs/en/overview", "https://code.claude.com/docs/en/hooks"]
    },
    {
      "id": "vscode-copilot",
      "displayName": "VS Code / GitHub Copilot",
      "config": { "paths": [".vscode/mcp.json", "~/Library/Application Support/Code/User/mcp.json"], "rootKey": "servers" },
      "hooks": { "supported": true, "paths": [".github/hooks/hooks.json", "~/.github/hooks/hooks.json"], "events": ["preToolUse", "postToolUse"] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": [
        "https://code.visualstudio.com/docs/copilot/reference/mcp-configuration",
        "https://code.visualstudio.com/docs/copilot/customization/mcp-servers",
        "https://docs.github.com/en/copilot/concepts/context/mcp"
      ]
    },
    {
      "id": "windsurf",
      "displayName": "Windsurf (Cascade)",
      "config": { "paths": ["~/.codeium/windsurf/mcp_config.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": true, "paths": ["~/.codeium/windsurf/hooks.json", ".windsurf/hooks.json"], "events": ["pre_mcp_tool_use", "post_mcp_tool_use"] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://docs.windsurf.com/windsurf/cascade/mcp", "https://docs.windsurf.com/windsurf/cascade/hooks"]
    },
    {
      "id": "roo",
      "displayName": "Roo Code",
      "config": { "paths": [".roo/mcp.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://docs.roocode.com/features/mcp/recommended-mcp-servers"]
    },
    {
      "id": "cline",
      "displayName": "Cline",
      "config": { "paths": ["VS Code extension settings (platform-specific)"], "rootKey": null },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://docs.cline.bot/customization/cline-rules"]
    },
    {
      "id": "zed",
      "displayName": "Zed",
      "config": { "paths": ["~/Library/Application Support/Zed/settings.json", "~/.config/zed/settings.json"], "rootKey": "context_servers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://zed.dev/docs/assistant/model-context-protocol"]
    },
    {
      "id": "jetbrains",
      "displayName": "JetBrains IDEs",
      "config": { "paths": ["~/.jb-mcp.json"], "rootKey": "servers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://www.jetbrains.com/help/ai-assistant/mcp.html"]
    },
    {
      "id": "opencode",
      "displayName": "OpenCode",
      "config": { "paths": ["~/.config/opencode/opencode.json", "opencode.json"], "rootKey": "mcp" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://opencode.ai/docs/mcp-servers/", "https://opencode.ai/docs/config/"]
    },
    {
      "id": "crush",
      "displayName": "Crush",
      "config": { "paths": ["~/.config/crush/crush.json"], "rootKey": "mcp" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://mintlify.com/charmbracelet/crush/configuration/mcp"]
    },
    {
      "id": "amp",
      "displayName": "Amp",
      "config": { "paths": ["~/.config/amp/settings.json", ".amp/settings.json"], "rootKey": "amp.mcpServers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://ampcode.com/manual", "https://ampcode.com/news/cli-workspace-settings"]
    },
    {
      "id": "hermes",
      "displayName": "Hermes Agent",
      "config": { "paths": ["~/.hermes/config.yaml"], "rootKey": "mcp_servers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://hermes-agent.nousresearch.com/docs/reference/mcp-config-reference"]
    },
    {
      "id": "kiro",
      "displayName": "AWS Kiro",
      "config": { "paths": ["~/.kiro/settings/mcp.json", ".kiro/settings/mcp.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "autoApprove", "key": "autoApprove" },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://kiro.dev/docs/mcp/configuration/"]
    },
    {
      "id": "amazonq",
      "displayName": "Amazon Q Developer",
      "config": { "paths": ["~/.aws/amazonq/default.json", ".amazonq/default.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "per_tool_permissions", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/mcp-ide.html"]
    },
    {
      "id": "gemini-cli",
      "displayName": "Gemini CLI",
      "config": { "paths": ["~/.gemini/settings.json", ".gemini/settings.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": true, "paths": ["~/.gemini/settings.json", ".gemini/settings.json"], "events": ["BeforeTool", "AfterTool"] },
      "toolApproval": { "model": "trust_flag", "key": "trust" },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://geminicli.com/docs/tools/mcp-server/", "https://geminicli.com/docs/hooks/"]
    },
    {
      "id": "antigravity",
      "displayName": "Antigravity",
      "config": { "paths": ["~/.gemini/antigravity/mcp_config.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://antigravity.google/docs/mcp"]
    },
    {
      "id": "codex",
      "displayName": "Codex CLI",
      "config": { "paths": ["~/.codex/config.toml", ".codex/config.toml"], "rootKey": "mcp_servers" },
      "hooks": { "supported": true, "paths": ["~/.codex/hooks.json"], "events": ["PreToolUse", "SessionStart"] },
      "toolApproval": { "model": "policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://developers.openai.com/codex/mcp", "https://developers.openai.com/codex/hooks"]
    },
    {
      "id": "trae",
      "displayName": "Trae",
      "config": { "paths": ["~/.trae/mcp.json", ".trae/mcp.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://docs.trae.ai/ide/add-mcp-servers", "https://docs.trae.ai/ide/model-context-protocol"]
    },
    {
      "id": "qwen-code",
      "displayName": "Qwen Code",
      "config": { "paths": ["~/.qwen/settings.json", ".qwen/settings.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://qwenlm.github.io/qwen-code-docs/en/users/configuration/settings/"]
    },
    {
      "id": "verdent",
      "displayName": "Verdent",
      "config": { "paths": ["~/.verdent/mcp.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "prompted_or_policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://docs.verdent.ai/verdent-for-vscode/advanced-features/mcp"]
    },
    {
      "id": "pi",
      "displayName": "Pi Coding Agent",
      "config": { "paths": ["~/.pi/agent/mcp.json", ".pi/mcp.json"], "rootKey": "mcpServers" },
      "hooks": { "supported": false, "paths": [], "events": [] },
      "toolApproval": { "model": "policy", "key": null },
      "instructionLimits": { "mcpServerInstructionsMaxChars": null },
      "sources": ["https://github.com/nicobailon/pi-mcp-adapter", "https://pi.dev/packages"]
    }
  ]
}

MCP Capability Matrix

Client Resources Prompts Elicitation Sampling Dynamic Tools Max Tools Tier
Cursor yes yes yes no yes - 1
Claude Code yes yes yes yes yes - 1
Kiro yes yes yes no yes - 1
VS Code Copilot yes yes no no yes - 2
Zed no yes no no yes - 2
Codex yes no no no yes - 2
Windsurf no no no no yes 100 3
Antigravity no no no no no - 4
Gemini CLI no no no no no - 4

Humanreadable notes

  • Do not guess formats: every entry must have at least one vendor doc source.
  • No destructive writes: installers must be mergebased and keep other plugins/config intact.
  • Tokens/headers: never hardcode or print secrets; prefer env indirection or client-native secret inputs.