diff --git a/README.md b/README.md
index 0be91e8..d2236b0 100644
--- a/README.md
+++ b/README.md
@@ -322,9 +322,9 @@ Specs live in git (`docs/specs/*.md` by convention), not in CodePlans. Link a sp
---
-## Connect Claude Code or Cursor (MCP)
+## Connect an AI coding agent (MCP)
-CodePlans ships an MCP server at `/api/mcp/mcp` (Streamable HTTP). Create an API key in **Settings → API Keys** — the settings page shows these snippets with your host and freshly minted key pre-filled.
+CodePlans ships an MCP server at `/api/mcp/mcp` (Streamable HTTP, bearer-token auth). Create an API key in **Settings → API Keys** — the settings page shows these snippets with your host and freshly minted key pre-filled, for Claude Code, Cursor, Codex, GitHub Copilot, and Antigravity.
**Claude Code** (user scope — available in every project):
@@ -346,6 +346,37 @@ claude mcp add --scope user --transport http codeplans http://localhost:3000/api
}
```
+**Codex CLI** — reads the bearer token from an environment variable rather than storing it in `~/.codex/config.toml` directly:
+
+```bash
+export CODEPLANS_API_KEY="cpk_your_key"
+codex mcp add codeplans \
+ --url http://localhost:3000/api/mcp/mcp \
+ --bearer-token-env-var CODEPLANS_API_KEY
+```
+
+**GitHub Copilot CLI**:
+
+```bash
+copilot mcp add --transport http codeplans http://localhost:3000/api/mcp/mcp \
+ --header "Authorization: Bearer cpk_your_key"
+```
+
+In VS Code's Copilot Chat instead, add the same URL/header under a `"servers"` entry in `.vscode/mcp.json` with `"type": "http"`.
+
+**Antigravity** — add to `~/.gemini/config/mcp_config.json` (note the field is `serverUrl`, not `url`), then reload MCP servers from the agent panel:
+
+```json
+{
+ "mcpServers": {
+ "codeplans": {
+ "serverUrl": "http://localhost:3000/api/mcp/mcp",
+ "headers": { "Authorization": "Bearer cpk_your_key" }
+ }
+ }
+}
+```
+
Your agent can then read plans/work items/tech debt and (with a write-scope key) model products, assets, and dependencies, manage plans end-to-end (create, target assets, activate/complete), file work items, manage tasks, and record branch/PR status on plan assets. Keys act as your user, so org access rules and mirrored-field protections apply unchanged. See [`docs/specs/mcp-server-spec.md`](docs/specs/mcp-server-spec.md).
---
diff --git a/app/(dashboard)/settings/api-keys-panel.tsx b/app/(dashboard)/settings/api-keys-panel.tsx
index 0368a31..9920ee9 100644
--- a/app/(dashboard)/settings/api-keys-panel.tsx
+++ b/app/(dashboard)/settings/api-keys-panel.tsx
@@ -154,6 +154,20 @@ function ConnectCard({ mintedKey }: { mintedKey: string | null }) {
}
}
}`
+ const codexSnippet = `export CODEPLANS_API_KEY="${key}"
+codex mcp add codeplans \\
+ --url ${origin}/api/mcp/mcp \\
+ --bearer-token-env-var CODEPLANS_API_KEY`
+ const copilotSnippet = `copilot mcp add --transport http codeplans ${origin}/api/mcp/mcp \\
+ --header "Authorization: Bearer ${key}"`
+ const antigravitySnippet = `{
+ "mcpServers": {
+ "codeplans": {
+ "serverUrl": "${origin}/api/mcp/mcp",
+ "headers": { "Authorization": "Bearer ${key}" }
+ }
+ }
+}`
function copy(label: string, text: string) {
navigator.clipboard.writeText(text)
@@ -188,7 +202,7 @@ function ConnectCard({ mintedKey }: { mintedKey: string | null }) {
@@ -217,6 +234,33 @@ function ConnectCard({ mintedKey }: { mintedKey: string | null }) {
+ Run once in a terminal. Codex reads the key from an env var rather than storing it in{' '}
+
+ Verify with
+ GitHub Copilot CLI — run once in a terminal:
+
+ Verify with
+ Add to ~/.codex/config.toml directly:
+ codex mcp list. Re-export CODEPLANS_API_KEY in new shells, or add it to your shell profile.
+ copilot mcp list. In VS Code's Copilot Chat instead, add the same URL/header under a{' '}
+ "servers" entry in .vscode/mcp.json with "type": "http".
+ ~/.gemini/config/mcp_config.json, then reload MCP servers from the agent panel. Note the field is{' '}
+ serverUrl, not url:
+