Skip to content

buzz-acp: structured MCP server configuration with explicit credential scoping #4154

Description

@wolfyy970

Problem

buzz-acp supports one MCP command through BUZZ_ACP_MCP_COMMAND. That path does not represent multiple servers with stable names, arguments, and separate environments.

The existing builder also treats configured servers as the privileged Buzz companion and copies BUZZ_PRIVATE_KEY and BUZZ_AUTH_TAG into each entry. Third-party MCP servers should not receive those credentials.

MCP environment values can also appear in ACP wire logs and observer events.

Proposed change

  • add --mcp-config <path> and BUZZ_ACP_MCP_CONFIG for a strict, versioned JSON config
  • preserve server order, names, commands, arguments, and environment values without shell parsing
  • keep BUZZ_ACP_MCP_COMMAND unchanged for the privileged Buzz companion
  • reject invalid configuration before the harness starts listening
  • redact MCP environment values from Buzz-managed diagnostics

The adapter will continue to inherit the harness environment. This scopes credentials in the ACP request but does not provide process isolation.

Acceptance criteria

  • multiple structured servers reach session/new in declaration order with their exact configuration
  • the legacy companion remains unchanged and is first when both inputs are present
  • structured servers do not receive the companion's Buzz credentials
  • invalid, duplicate, oversized, or over-limit configuration fails before startup
  • paths and arguments containing spaces, commas, quotes, Unicode, and shell metacharacters remain literal
  • MCP environment values do not appear in wire logs or observer events
  • restart and repeated-session behavior is covered by tests

Related: #2883, #2899, #2900, #3196, #3417

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions