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

235 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
<!-- leanctx-client-constraints-v1-json -->
```json
{
"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"]
}
]
}
```
<!-- /leanctx-client-constraints-v1-json -->
## 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.