# Harness Integrations Cloudwright ships an MCP server (`cloudwright mcp`), a CLI, and a GitHub Action. Most AI coding harnesses in 2026 are MCP clients, so one server reaches almost all of them, but each harness wants the server entry in a different file, under a different JSON (or TOML) key, and each has its own convention for the plain-text rules file that steers agent behavior. This page is the per-harness wiring reference. Run `cloudwright integrate --list` for the same table from the terminal, and `cloudwright integrate --harness ` for the exact snippet plus `--write` to drop it straight into the right file. Related: [MCP Reference](mcp-reference.md) | [CLI Reference](cli-reference.md) | [GitHub Action](github-action.md) | [README](../README.md) --- ## How the MCP server launches There is no separate console script for the MCP server. Every harness below launches it the same way: command `cloudwright`, args `["mcp"]` (the server defaults to stdio transport; pass `["mcp", "--transport", "stdio"]` if a harness wants that spelled out explicitly). The differences between harnesses are entirely in where that command/args pair goes and what key it sits under. --- ## Harness table | Harness | MCP client? | Config file and key | Rules file | How to wire | |---|---|---|---|---| | Claude Code | Yes | `.mcp.json` (project) or `~/.claude.json` (user), key `mcpServers` | `CLAUDE.md` (does not read AGENTS.md) | `cloudwright integrate --harness claude-code --write` | | Cursor | Yes | `.cursor/mcp.json` (project) or `~/.cursor/mcp.json`, key `mcpServers` | `AGENTS.md` (native) plus `.cursor/rules/*.mdc` | `cloudwright integrate --harness cursor --write` | | Cline | Yes | `cline_mcp_settings.json` under the VS Code extension's global storage, key `mcpServers` | `.clinerules` (AGENTS.md support is global-only and contested) | `cloudwright integrate --harness cline --write --output ` | | Windsurf | Yes | `~/.codeium/windsurf/mcp_config.json`, key `mcpServers` | `.windsurfrules` (also reads AGENTS.md) | `cloudwright integrate --harness windsurf --write` | | GitHub Copilot | Yes | `.vscode/mcp.json`, key `servers` (not `mcpServers`), entries need `"type": "stdio"` | `.github/copilot-instructions.md` plus native AGENTS.md | `cloudwright integrate --harness copilot --write` | | Zed | Yes | `.zed/settings.json` (project) or `~/.config/zed/settings.json`, key `context_servers` | `.rules` (falls back to AGENTS.md) | `cloudwright integrate --harness zed --write` | | OpenAI Codex CLI | Yes | `~/.codex/config.toml`, TOML table `[mcp_servers.cloudwright]` | `AGENTS.md` (canonical origin of the convention) | `cloudwright integrate --harness codex --write` | | JetBrains Junie | Yes | `.junie/mcp/mcp.json`, key `mcpServers` | `AGENTS.md` (primary), `.junie/guidelines.md` (legacy fallback) | `cloudwright integrate --harness junie --write` | | Kiro | Yes | `.kiro/settings/mcp.json` (project) or `~/.kiro/settings/mcp.json`, key `mcpServers` | `.kiro/steering/*.md` (own convention); list AGENTS.md too | `cloudwright integrate --harness kiro --write` | | Antigravity | Yes | `~/.gemini/config/mcp_config.json`, key `mcpServers` | `AGENTS.md`; confirm whether `GEMINI.md` still applies | `cloudwright integrate --harness antigravity --write` | | Aider | No | n/a | `AGENTS.md` | See "Not an MCP client" below | --- ## Not an MCP client: Aider Aider has no shipped MCP integration. Use the CLI pipe path instead: from an Aider session, run ``` /run cloudwright design "" --json ``` and parse the structured output directly. `cloudwright integrate --harness aider` prints this guidance along with the rules-file note (Aider reads `AGENTS.md` natively, same as most of the harnesses above). Unofficial third-party MCP bridges for Aider exist (`mcpm-aider`, `aider-mcp-server`) but are not something cloudwright depends on for a supported path. --- ## Discontinued or superseded (not generated by `integrate`) `cloudwright integrate` does not generate configs for these; asking for one by name returns a message pointing at the live successor instead. - **Roo Code** was sunset in April 2026 and its repo was archived in May 2026. No successor is tracked here. - **Continue.dev** was acquired by Cursor in June 2026; its repo is now read-only. Wire Cursor instead. - **Amazon Q Developer** is being sunset by AWS in favor of **Kiro**, which carries over MCP support. Use `cloudwright integrate --harness kiro`. - **Google Gemini CLI** stopped serving individual/free-tier users in June 2026 in favor of **Antigravity**. Use `cloudwright integrate --harness antigravity`. --- ## The rules-file block `cloudwright integrate --rules` emits a short, harness-agnostic block that tells an agent to gate infrastructure work through cloudwright: ``` ## Cloudwright gate Before proposing, generating, or applying cloud infrastructure or Terraform, Pulumi, or CloudFormation changes, run cloudwright first: - `cloudwright design "" --json` for a typed architecture spec - `cloudwright review ` for an offline architecture critique (no LLM, free) - `cloudwright cost ` for a per-component cost estimate - `cloudwright compliance --frameworks ` for control-mapped findings Treat any high or critical review or compliance finding as a blocker. Fix it before writing Terraform, Pulumi, or CloudFormation. ``` Use `--agent-file` to pick which file it targets: | `--agent-file` value | File | Why it exists as a separate target | |---|---|---| | `agents` (default) | `AGENTS.md` | Read natively by Cursor, Windsurf, Copilot, Codex, Junie, Aider, and Kiro; Zed falls back to it | | `claude` | `CLAUDE.md` | Claude Code does not read AGENTS.md at all, so it needs its own copy | | `gemini` | `GEMINI.md` | Gemini CLI's default context file; AGENTS.md is not read unless manually reconfigured | `--write` appends the block to the target file (creating it if missing) behind an HTML comment marker so a second run does not duplicate it; pass `--force` to replace an already-installed block in place. --- ## Quick start ```bash # See every supported harness and what it needs cloudwright integrate --list # Wire Claude Code and Cursor in one repo cloudwright integrate --harness claude-code --write cloudwright integrate --harness cursor --write # Add the gate instructions everywhere AGENTS.md is read, plus a CLAUDE.md copy for Claude Code cloudwright integrate --rules --write cloudwright integrate --rules --agent-file claude --write # Machine-readable output for scripting cloudwright --json integrate --harness codex ```