You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: packages/docs-web/src/content/docs/guides/mcp-servers.md
+30-21Lines changed: 30 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,8 @@ DAG workflow nodes support a `mcp` field that attaches MCP (Model Context Protoc
13
13
servers to individual nodes. Each node gets exactly the external tools it needs —
14
14
GitHub, Linear, Postgres, etc. — without over-provisioning.
15
15
16
-
**Claude only** — Codex nodes will warn and ignore the `mcp` field.
16
+
MCP works with Codex and Claude workflow nodes. Pi nodes still warn and ignore
17
+
the `mcp` field.
17
18
18
19
## Quick Start
19
20
@@ -50,6 +51,9 @@ to the AI, and it shuts down when the node completes.
50
51
MCP config files are JSON objects where each key is a server name and the value
51
52
is a server configuration. Three transport types are supported:
52
53
54
+
Archon also accepts the common wrapper format `{ "mcpServers": { ... } }`; this
55
+
is useful when copying config from tools that already export MCP JSON.
56
+
53
57
### stdio (default)
54
58
55
59
Runs a local process. This is the most common type.
@@ -119,8 +123,9 @@ Connects to an SSE endpoint.
119
123
120
124
## Environment Variable Expansion
121
125
122
-
Values in `env` and `headers` fields support `$VAR_NAME` references that are
123
-
expanded from `process.env` at execution time.
126
+
Values in `env` and `headers` fields support `$VAR_NAME` references. They are
127
+
expanded from Archon's process environment at execution time. Codex workflow
128
+
nodes also include codebase-scoped env vars in that expansion.
124
129
125
130
```json
126
131
{
@@ -165,21 +170,23 @@ A single config file can define multiple servers:
165
170
}
166
171
```
167
172
168
-
## Automatic Tool Wildcards
173
+
## Provider Tool Wiring
169
174
170
-
When a node loads MCP servers, tool wildcards are automatically added to `allowedTools`.
171
-
For servers named `github` and `postgres`, the node gets:
175
+
Claude nodes automatically add tool wildcards to `allowedTools`. For servers
176
+
named `github` and `postgres`, the node gets:
172
177
173
178
- `mcp__github__*`
174
179
- `mcp__postgres__*`
175
180
176
-
This means all tools from those servers are immediately available without manually
177
-
listing them. The wildcards merge with any existing `allowed_tools` on the node.
181
+
Codex nodes pass the same MCP config as per-node `mcp_servers` overrides to the
182
+
Codex SDK, so the servers are available for that node without requiring global
183
+
`~/.codex/config.toml`setup.
178
184
179
185
## MCP-Only Nodes
180
186
181
-
Combine `mcp` with `allowed_tools: []` to create nodes that can only use MCP tools
182
-
and have no access to built-in tools (Bash, Read, Write, etc.):
187
+
For providers that support tool restrictions, combine `mcp` with
188
+
`allowed_tools: []` to create nodes that can only use MCP tools and have no
189
+
access to built-in tools (Bash, Read, Write, etc.):
183
190
184
191
```yaml
185
192
nodes:
@@ -190,7 +197,9 @@ nodes:
190
197
```
191
198
192
199
This is useful for sandboxing — the AI can only interact through the MCP server
193
-
and cannot touch the filesystem or run shell commands.
200
+
and cannot touch the filesystem or run shell commands. Codex currently does not
201
+
support Archon's `allowed_tools` / `denied_tools` restrictions, so this pattern
202
+
is enforced for Claude nodes but not Codex nodes.
194
203
195
204
## Connection Failure Handling
196
205
@@ -205,12 +214,12 @@ MCP server connection failed: github (failed)
205
214
The node continues executing but without the tools from the failed server.
206
215
Check your config file path, server command, and environment variables if this happens.
207
216
208
-
User-level Claude plugin MCPs inherited from `~/.claude/` (e.g. `telegram`,
209
-
`notion`) routinely fail to connect inside the headless workflow subprocess
210
-
and are **not** surfaced here — they're not actionable for the workflow author.
211
-
They appear only in debug logs as `dag.mcp_plugin_connection_suppressed`. Run
212
-
the CLI with `--verbose` (or set `LOG_LEVEL=debug` on the server) if you need
213
-
to see them.
217
+
User-level plugin MCPs inherited from provider-specific user config routinely
218
+
fail to connect inside headless workflow subprocesses and are **not** surfaced
219
+
when the workflow did not configure MCP itself — they're not actionable for the
220
+
workflow author. They appear only in debug logs as
221
+
`dag.mcp_plugin_connection_suppressed`for Claude workflows. Run the CLI with
222
+
`--verbose`(or set `LOG_LEVEL=debug` on the server) if you need to see them.
214
223
215
224
## Workflow Examples
216
225
@@ -368,8 +377,8 @@ bun run cli workflow run archon-smart-pr-review "Review PR #123"
368
377
369
378
## Limitations
370
379
371
-
- **Claude only** — Codex nodes warn and ignore the `mcp` field. Configure MCP
372
-
servers globally in the Codex CLI config instead.
380
+
- **Codex tool restrictions** — Codex nodes support `mcp`, but Archon's
381
+
`allowed_tools`/ `denied_tools` restrictions are still ignored by Codex.
373
382
- **Haiku model** — Tool search (lazy loading for many tools) is not supported on
374
383
Haiku. You'll see a warning. Consider using Sonnet or Opus for MCP nodes.
375
384
- **No load-time validation** — The MCP config file is read at execution time, not
@@ -386,8 +395,8 @@ bun run cli workflow run archon-smart-pr-review "Review PR #123"
386
395
| `MCP config must be a JSON object` | Top-level value is array or string | Wrap in `{ "server-name": { ... } }` |
387
396
| `undefined env vars: VAR_NAME` | Environment variable not set | Export the variable or add it to your `.env` |
388
397
| `MCP server connection failed` | Server process crashed or URL unreachable | Check command/URL, test the server standalone |
389
-
| Plugin MCP missing from workflow output | User-level plugin MCPs (from `~/.claude/`) are filtered out of workflow warnings | Run with `--verbose` and look for `dag.mcp_plugin_connection_suppressed` |
390
-
| `mcp config but uses Codex` | Node resolved to Codex provider | Set `provider: claude` on the node or switch default |
398
+
| Plugin MCP missing from workflow output | User-level plugin MCPs are filtered out of workflow warnings | Run with `--verbose` and look for provider MCP debug logs |
399
+
| `allowed_tools` ignored with Codex | Codex provider does not support Archon's tool restrictions yet | Do not rely on `allowed_tools: []` for Codex sandboxing |
391
400
| `Haiku model with MCP servers` | Haiku doesn't support tool search | Use `model: sonnet` or `model: opus` instead |
0 commit comments