@@ -426,13 +426,14 @@ enforce required metadata fields (see PF-5).
426426## 7. MCP Server Configuration
427427
428428MCP servers provide external tool access (GitHub, Semgrep, databases, etc.). Configuration is
429- defined at two levels: pack-level (shared across all agents) and per-persona (agent-specific).
430- buzz-acp merges them and passes the result via the ACP protocol — no filesystem placement required.
429+ defined at two authoring levels: pack-level (shared across all agents) and per-persona
430+ (agent-specific). ` buzz-persona ` currently parses and merges these declarations, but
431+ ` buzz-acp ` does not yet consume the resolved persona MCP list. Persona MCP declarations
432+ therefore do not reach a running session in the current implementation.
431433
432- > ** Transport Warning** : Only ` stdio ` and ` streamable_http ` transports are supported. SSE transport
433- > is rejected by the ACP runtime with the error ` "SSE is unsupported, migrate to streamable_http" ` and
434- > will cause session startup to fail. Migrate any SSE-based MCP servers to streamable_http before
435- > packaging.
434+ The runtime launch boundary is a separate, versioned MCP launch document. A future
435+ resolver must convert approved persona or template requirements and Project Connections
436+ into that document. Version 1 of the launch document supports stdio only.
436437
437438### Pack-Level: ` .mcp.json `
438439
@@ -469,21 +470,25 @@ mcp_servers:
469470
4704711. Pack-level servers are the base set; per-persona servers merged on top.
4714722. **Name collision**: per-persona entry wins entirely (no partial merge).
472- 3. The merged set is passed to the agent runtime via ` NewSessionRequest.mcp_servers`.
473+ 3. The merged set remains authoring output until an explicit launch resolver converts it
474+ into the runtime MCP launch document.
473475
474476### Environment Variable Interpolation
475477
476478> **Implementation note**: MCP env var interpolation (` ${VAR_NAME}` resolution) is planned but not
477- > yet implemented. In the current release, `${VAR_NAME}` strings are passed through as literals
478- > to the agent runtime, which may resolve them via its own MCP server configuration handling .
479+ > yet implemented. In the current release, persona MCP declarations remain authoring data and
480+ > do not reach the agent runtime.
479481
480482When implemented, all `env` values will be scanned for `${VAR_NAME}`. buzz-acp will resolve
481483from the process environment **before** passing to the agent runtime. Unresolved variables will
482484cause a startup error.
483485
484486# ## Delivery
485487
486- buzz-acp passes the merged config via `NewSessionRequest.mcp_servers`. **No `.mcp.json` is written to the agent's working directory.**
488+ Persona MCP delivery is not wired yet. The launch resolver must validate and bind the
489+ authoring declarations before `buzz-acp` passes the resulting servers through
490+ ` NewSessionRequest.mcp_servers` . No `.mcp.json` should be written into the agent's
491+ working directory.
487492
488493---
489494
@@ -935,7 +940,7 @@ How each pack component reaches the running agent:
935940| Component | Delivery Method | Mechanism | Filesystem Write? |
936941|-----------|----------------|-----------|-------------------|
937942| Skills | Copy at deploy time (planned) | buzz-acp will copy `skills/` → `$AGENT_CWD/.agents/skills/` | ✅ Yes (only one) |
938- | MCP servers | ACP protocol | `NewSessionRequest.mcp_servers` | ❌ No |
943+ | MCP servers | Not wired | Parsed by `buzz-persona`; requires an explicit resolver into the MCP launch document | ❌ No |
939944| Persona prompt | User message prefix | `[System]` block prepended to user message text by buzz-acp | ❌ No |
940945| Pack instructions | User message prefix | Appended to `[System]` block in user message text | ❌ No |
941946| Lifecycle hooks | Harness internal | buzz-acp fires shell commands directly | ❌ No |
@@ -987,7 +992,7 @@ The `[System]` prefix re-sends the full persona prompt on every turn. True syste
987992| `rules/*.mdc` files | Agent runtimes typically don't read `.mdc` files |
988993| `skills/` at pack root (without copying) | Agent runtimes scan `.agents/skills/`, not `skills/` |
989994| Hooks in goose config | Agent runtimes have no hook system; hooks are a harness feature |
990- | SSE transport in `.mcp.json` | ACP runtime rejects SSE; use stdio or streamable_http |
995+ | Assuming `.mcp.json` is live runtime configuration | Persona MCP declarations are parsed but are not yet connected to the ACP launch path |
991996| SKILL.md without `name:` or `description:` | Skill silently skipped; no fallback |
992997| Setting `GOOSE_MODEL` on parent process (multi-persona) | Affects all agents; use per-subprocess injection via `extra_env` |
993998| Expecting `defaults` sub-key inheritance | No deep merge; object/array fields replaced entirely |
@@ -999,10 +1004,10 @@ The `[System]` prefix re-sends the full persona prompt on every turn. True syste
9991004# ## Secret Management
10001005
10011006Never embed secrets in pack files. Use `${VAR_NAME}` references in all `env` blocks. Currently,
1002- ` ${VAR_NAME} ` strings are passed through as literals to the agent runtime (see Section 7). When
1003- harness-side interpolation is implemented, buzz-acp will resolve them from the process
1004- environment at startup and refuse to start if any are unresolved . Inject secrets via your
1005- deployment mechanism (systemd env files, Vault, Kubernetes secrets, etc.) .
1007+ persona MCP declarations are not delivered to the agent runtime (see Section 7). When an
1008+ approved launch resolver and harness-side interpolation are implemented, unresolved references
1009+ must fail startup rather than becoming literal credentials . Inject secrets through the
1010+ target-local deployment mechanism rather than embedding them in the pack .
10061011
10071012# ## Pack Integrity
10081013
0 commit comments