Summary
buzz-acp accepts a single MCP binary (--mcp-command / BUZZ_ACP_MCP_COMMAND), so an agent gets exactly one MCP server. Because a Buzz agent acts in Buzz by shelling out to the buzz CLI — and that shell tool comes from buzz-dev-mcp — the single slot is an either/or rather than a preference:
- slot =
buzz-dev-mcp → the agent can post, but has no domain tools
- slot = a domain MCP server → the agent has domain tools, but no way to post
Reproduction
Run buzz-acp with BUZZ_ACP_MCP_COMMAND pointing at any external stdio MCP server (--agent-command buzz-agent), add the agent to a channel, and ask it something its domain server can answer.
Actual behavior
The agent answers internally and never posts. In my run it was offered 61 tools — 60 from the domain server plus load_skill — and zero shell or buzz tools. default_heartbeat_prompt (and the reply guidance around crates/buzz-acp/src/lib.rs:3621) instructs the agent to run buzz messages send --reply-to <event-id>, which it has no tool to do.
Expected behavior
An operator can give an agent buzz-dev-mcp and their own MCP server(s) at once.
Notes
PersonaConfig.mcp_servers is already a Vec<McpServerConfig>, and buzz-persona parses, merges (merge_mcp_servers), and validates it — buzz pack describe even prints the count. It is simply never plumbed to the runtime, which uses one mcp_command per agent record. So the multi-server intent seems to already be there in the persona layer.
The narrowest fix is at the harness: make --mcp-command repeatable and the env var comma-separated, matching the agent_args field directly above it in Args. Defaults unchanged; a single value behaves exactly as today. Happy to be redirected if you would rather solve this at the persona/runtime layer instead.
I have that change working with tests and will open a PR referencing this issue.
Searched open issues/PRs first: nothing found for multiple MCP servers. Closest adjacent ones are #2883 (keeping BUZZ_PRIVATE_KEY out of agent-controlled processes) and #2368 (adding an ACP runtime), neither overlapping.
Environment: block/buzz @ c0d7b52, macOS, buzz-agent runtime.
Summary
buzz-acpaccepts a single MCP binary (--mcp-command/BUZZ_ACP_MCP_COMMAND), so an agent gets exactly one MCP server. Because a Buzz agent acts in Buzz by shelling out to thebuzzCLI — and that shell tool comes frombuzz-dev-mcp— the single slot is an either/or rather than a preference:buzz-dev-mcp→ the agent can post, but has no domain toolsReproduction
Run
buzz-acpwithBUZZ_ACP_MCP_COMMANDpointing at any external stdio MCP server (--agent-command buzz-agent), add the agent to a channel, and ask it something its domain server can answer.Actual behavior
The agent answers internally and never posts. In my run it was offered 61 tools — 60 from the domain server plus
load_skill— and zero shell orbuzztools.default_heartbeat_prompt(and the reply guidance aroundcrates/buzz-acp/src/lib.rs:3621) instructs the agent to runbuzz messages send --reply-to <event-id>, which it has no tool to do.Expected behavior
An operator can give an agent
buzz-dev-mcpand their own MCP server(s) at once.Notes
PersonaConfig.mcp_serversis already aVec<McpServerConfig>, andbuzz-personaparses, merges (merge_mcp_servers), and validates it —buzz pack describeeven prints the count. It is simply never plumbed to the runtime, which uses onemcp_commandper agent record. So the multi-server intent seems to already be there in the persona layer.The narrowest fix is at the harness: make
--mcp-commandrepeatable and the env var comma-separated, matching theagent_argsfield directly above it inArgs. Defaults unchanged; a single value behaves exactly as today. Happy to be redirected if you would rather solve this at the persona/runtime layer instead.I have that change working with tests and will open a PR referencing this issue.
Searched open issues/PRs first: nothing found for multiple MCP servers. Closest adjacent ones are #2883 (keeping
BUZZ_PRIVATE_KEYout of agent-controlled processes) and #2368 (adding an ACP runtime), neither overlapping.Environment:
block/buzz@c0d7b52, macOS,buzz-agentruntime.