feat(mcp-proxy): implement F099 MCP proxy stdio subprocess for tool interception#355
Merged
pocky merged 1 commit intoMay 26, 2026
Merged
Conversation
…nterception - `.gitignore`: Add MCP proxy runtime artifacts - `.go-arch-lint.yml`: Register new tools packages and dependency rules - `.zpm/kb/default/journal.wal`: Add ZPM knowledge base journal - `.zpm/mounts.json`: Add ZPM mount configuration - `CLAUDE.md`: Add doc.go and architecture rules for new packages - `README.md`: Add MCP proxy feature reference - `docs/ADR/017-mcp-proxy-stdio-subprocess-for-tool-interception.md`: Add ADR for stdio subprocess design decision - `docs/README.md`: Link new MCP proxy guide - `docs/development/creating-agent-provider.md`: Document MCP proxy integration for providers - `docs/reference/error-codes.md`: Add MCP proxy error codes - `docs/user-guide/agent-steps.md`: Document mcp_proxy step type - `docs/user-guide/mcp-proxy.md`: Add complete MCP proxy user guide - `docs/user-guide/plugins.md`: Document tool exposure via MCP proxy - `docs/user-guide/workflow-syntax.md`: Add mcp_proxy YAML syntax reference - `examples/plugins/awf-plugin-echo/main.go`: Add tool handler to echo plugin example - `examples/plugins/awf-plugin-echo/main_test.go`: Add tool handler tests for echo plugin - `internal/application/conversation_manager.go`: Wire tool proxy into conversation lifecycle - `internal/application/execution_service.go`: Integrate tool proxy startup/teardown in execution - `internal/application/execution_service_settoolproxy_test.go`: Test SetToolProxy wiring - `internal/application/execution_setup.go`: Initialize tool proxy during execution setup - `internal/application/execution_tool_proxy.go`: Add tool proxy lifecycle management - `internal/application/execution_tool_proxy_test.go`: Test tool proxy lifecycle - `internal/application/service.go`: Expose SetToolProxy on application service - `internal/application/tools/architecture_test.go`: Enforce tools package architecture constraints - `internal/application/tools/config.go`: Add tool proxy configuration types - `internal/application/tools/doc.go`: Document application tools package architecture - `internal/application/tools/proxy_service.go`: Implement tool proxy service orchestration - `internal/application/tools/proxy_service_test.go`: Test proxy service routing and lifecycle - `internal/application/tools/router.go`: Implement tool call routing to plugins and builtins - `internal/application/tools/router_test.go`: Test tool router dispatch logic - `internal/domain/errors/codes.go`: Add MCP proxy error codes - `internal/domain/errors/codes_test.go`: Test new MCP proxy error codes - `internal/domain/ports/cli_executor.go`: Add MCPProxy field to CLIExecutor options - `internal/domain/ports/cli_executor_test.go`: Test MCPProxy field on executor options - `internal/domain/ports/tool_provider.go`: Add ToolProvider port interface - `internal/domain/ports/tool_provider_test.go`: Test ToolProvider interface contract - `internal/domain/workflow/mcp_proxy.go`: Add MCPProxy domain entity - `internal/domain/workflow/mcp_proxy_test.go`: Test MCPProxy entity validation - `internal/domain/workflow/step.go`: Add MCPProxy field to Step entity - `internal/domain/workflow/step_mcp_proxy_validation_test.go`: Test step mcp_proxy validation - `internal/domain/workflow/validation_errors.go`: Add MCP proxy validation error types - `internal/domain/workflow/validation_errors_test.go`: Test MCP proxy validation errors - `internal/domain/workflow/workflow.go`: Validate mcp_proxy steps in workflow validation - `internal/infrastructure/agents/base_cli_provider.go`: Wire MCP proxy args into all CLI providers - `internal/infrastructure/agents/base_cli_provider_conversation_mcp_test.go`: Test MCP wiring in base provider - `internal/infrastructure/agents/claude_provider.go`: Add --mcp-config flag support for MCP proxy - `internal/infrastructure/agents/claude_provider_mcp_test.go`: Test Claude provider MCP proxy integration - `internal/infrastructure/agents/cli_executor.go`: Launch MCP proxy subprocess before agent execution - `internal/infrastructure/agents/cli_executor_test.go`: Test subprocess launch and teardown - `internal/infrastructure/agents/codex_provider.go`: Add MCP proxy support for Codex with warning - `internal/infrastructure/agents/codex_provider_mcp_test.go`: Test Codex MCP proxy warning behavior - `internal/infrastructure/agents/copilot_provider.go`: Add MCP proxy flag injection for Copilot - `internal/infrastructure/agents/copilot_provider_mcp_test.go`: Test Copilot MCP proxy injection - `internal/infrastructure/agents/gemini_provider.go`: Add --mcp-config support for Gemini provider - `internal/infrastructure/agents/gemini_provider_mcp_test.go`: Test Gemini MCP proxy integration - `internal/infrastructure/agents/mcp_proxy_name.go`: Generate deterministic MCP proxy server names - `internal/infrastructure/agents/mcp_proxy_name_test.go`: Test proxy name generation - `internal/infrastructure/agents/mcp_proxy_purge.go`: Purge stale MCP proxy processes on startup - `internal/infrastructure/agents/mcp_proxy_purge_test.go`: Test stale proxy purge logic - `internal/infrastructure/agents/openai_compatible_provider.go`: Add MCP tool call interception for OpenAI-compatible providers - `internal/infrastructure/agents/openai_compatible_provider_mcp_test.go`: Test OpenAI-compatible MCP interception - `internal/infrastructure/agents/openai_compatible_tools.go`: Implement tool call assembly from chunked stream deltas - `internal/infrastructure/agents/openai_compatible_tools_test.go`: Test tool call delta accumulation - `internal/infrastructure/agents/opencode_provider.go`: Inject MCP proxy into opencode workspace config - `internal/infrastructure/agents/opencode_provider_mcp_test.go`: Test opencode MCP proxy injection - `internal/infrastructure/agents/opencode_provider_unit_test.go`: Update unit tests for opencode refactor - `internal/infrastructure/agents/opencode_workspace_config.go`: Generate opencode workspace JSON with MCP servers - `internal/infrastructure/agents/opencode_workspace_config_test.go`: Test workspace config generation - `internal/infrastructure/agents/opencode_workspace_config_windows.go`: Windows-specific workspace config path - `internal/infrastructure/agents/options.go`: Add MCPProxyAddr provider option - `internal/infrastructure/agents/provider_options_test.go`: Test MCPProxyAddr option - `internal/infrastructure/agents/registry.go`: Register tool proxy in agent registry - `internal/infrastructure/agents/registry_test.go`: Test registry tool proxy wiring - `internal/infrastructure/errors/hint_generators_test.go`: Add MCP proxy hint generator tests - `internal/infrastructure/notify/desktop.go`: Handle MCP proxy notifications - `internal/infrastructure/pluginmgr/rpc_manager.go`: Expose plugin tools via RPC manager - `internal/infrastructure/pluginmgr/rpc_manager_test.go`: Test RPC tool exposure - `internal/infrastructure/pluginmgr/stream_manager_test.go`: Update stream manager tests - `internal/infrastructure/repository/yaml_mapper.go`: Map mcp_proxy YAML fields to domain entities - `internal/infrastructure/repository/yaml_mapper_mcp_proxy_test.go`: Test mcp_proxy YAML mapping - `internal/infrastructure/repository/yaml_repository.go`: Load mcp_proxy steps from YAML repository - `internal/infrastructure/repository/yaml_repository_test.go`: Test mcp_proxy step loading - `internal/infrastructure/repository/yaml_types.go`: Add MCPProxy YAML types - `internal/infrastructure/tools/builtins/bash.go`: Implement bash builtin tool handler - `internal/infrastructure/tools/builtins/bash_test.go`: Test bash builtin handler - `internal/infrastructure/tools/builtins/edit.go`: Implement edit builtin tool handler - `internal/infrastructure/tools/builtins/edit_test.go`: Test edit builtin handler - `internal/infrastructure/tools/builtins/glob.go`: Implement glob builtin tool handler - `internal/infrastructure/tools/builtins/glob_test.go`: Test glob builtin handler - `internal/infrastructure/tools/builtins/grep.go`: Implement grep builtin tool handler - `internal/infrastructure/tools/builtins/grep_test.go`: Test grep builtin handler - `internal/infrastructure/tools/builtins/provider.go`: Register all builtin tool handlers - `internal/infrastructure/tools/builtins/provider_test.go`: Test builtin provider registration - `internal/infrastructure/tools/builtins/read.go`: Implement read builtin tool handler - `internal/infrastructure/tools/builtins/read_test.go`: Test read builtin handler - `internal/infrastructure/tools/builtins/write.go`: Implement write builtin tool handler - `internal/infrastructure/tools/builtins/write_test.go`: Test write builtin handler - `internal/infrastructure/tools/doc.go`: Document infrastructure tools package - `internal/infrastructure/tools/plugin_adapter.go`: Adapt plugin RPC tools to ToolProvider interface - `internal/infrastructure/tools/plugin_adapter_test.go`: Test plugin adapter tool translation - `internal/infrastructure/tools/schema_mapper.go`: Map tool schemas between MCP and plugin formats - `internal/infrastructure/tools/schema_mapper_test.go`: Test schema mapping - `internal/interfaces/cli/history_internal_test.go`: Remove obsolete test imports - `internal/interfaces/cli/list_internal_test.go`: Update list tests for registry changes - `internal/interfaces/cli/mcp_serve.go`: Add `awf mcp serve` command for stdio MCP server - `internal/interfaces/cli/mcp_serve_helpers_test.go`: Test mcp serve command helpers - `internal/interfaces/cli/mcp_serve_plugin_test.go`: Test mcp serve plugin bridge - `internal/interfaces/cli/mcp_serve_test.go`: Test mcp serve command lifecycle - `internal/interfaces/cli/resume.go`: Pass tool proxy through resume execution path - `internal/interfaces/cli/root.go`: Register mcp serve subcommand - `internal/interfaces/cli/run.go`: Wire tool proxy into run command execution - `internal/interfaces/cli/run_help.go`: Document mcp_proxy step in run help text - `internal/interfaces/cli/run_notify_config_test.go`: Add notify config tests for mcp_proxy - `internal/interfaces/cli/run_pack_wiring_test.go`: Update pack wiring tests - `internal/interfaces/cli/ui/output.go`: Render mcp_proxy step progress in UI - `internal/interfaces/cli/validate.go`: Validate mcp_proxy steps in validate command - `internal/interfaces/cli/validate_mcp_proxy_test.go`: Test mcp_proxy step validation via CLI - `internal/testutil/mocks/mocks.go`: Add MockToolProvider and MockMCPServer mocks - `pkg/mcpserver/architecture_test.go`: Enforce mcpserver package architecture - `pkg/mcpserver/doc.go`: Document MCP server package protocol and design - `pkg/mcpserver/protocol.go`: Implement JSON-RPC 2.0 MCP protocol types - `pkg/mcpserver/protocol_test.go`: Test MCP protocol serialization - `pkg/mcpserver/server.go`: Implement stdio MCP server with tool dispatch - `pkg/mcpserver/server_test.go`: Test MCP server tool registration and dispatch - `pkg/mcpserver/types.go`: Define MCP server public types - `pkg/plugin/sdk/doc.go`: Expand SDK doc with tool handler documentation - `pkg/plugin/sdk/grpc_plugin.go`: Add RegisterToolHandler to plugin SDK - `pkg/plugin/sdk/grpc_plugin_test.go`: Test RegisterToolHandler lifecycle - `pkg/plugin/sdk/sdk.go`: Export tool handler types from SDK - `tests/fixtures/mcp_proxy/` (9 files): Add YAML fixtures for mcp_proxy validation scenarios - `tests/integration/mcp/end_to_end_claude_test.go`: Add end-to-end Claude MCP proxy integration test - `tests/integration/mcp/mcp_jsonrpc_e2e_test.go`: Add JSON-RPC end-to-end MCP protocol test - `tests/integration/mcp/plugin_bridge_test.go`: Add plugin-to-MCP bridge integration test - `tests/integration/mcp/subprocess_lifecycle_test.go`: Add subprocess lifecycle integration test Closes #353
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
awf mcp servecommand that spawns a stdio MCP server wrapping AWF plugins, letting any MCP-capable agent (Claude, Gemini, Codex, Copilot, OpenAI-compatible) use AWF tools via standard protocolmcp_proxyconfiguration controlling which tools are available and how operations are routedpkg/mcpserverJSON-RPC server,internal/application/toolsrouting/proxy service,internal/infrastructure/toolsplugin adapter and schema mapper, plus comprehensive test coverage across all layersChanges
Domain
internal/domain/workflow/mcp_proxy.go: NewMCPProxyentity defining proxy configuration (enabled flag, allowed tools, plugin bindings, operation routing)internal/domain/workflow/mcp_proxy_test.go: Unit tests for MCPProxy entityinternal/domain/workflow/step.go: AddMCPProxyfield toStepentityinternal/domain/workflow/step_mcp_proxy_validation_test.go: Validation tests for mcp_proxy step configinternal/domain/workflow/validation_errors.go: New validation error codes for mcp_proxy configurationinternal/domain/workflow/validation_errors_test.go: Tests for new error codesinternal/domain/workflow/workflow.go: Wire mcp_proxy validation into workflow-level validationinternal/domain/ports/tool_provider.go: NewToolProviderport interfaceinternal/domain/ports/tool_provider_test.go: Tests for ToolProvider portinternal/domain/ports/cli_executor.go: Extend CLIExecutor port with MCP proxy capabilityinternal/domain/ports/cli_executor_test.go: Update tests for extended executorinternal/domain/errors/codes.go: New error codes for tool proxy and MCP operationsinternal/domain/errors/codes_test.go: Tests for new error codesApplication
internal/application/execution_tool_proxy.go: NewExecutionToolProxycoordinating tool interception during step executioninternal/application/execution_tool_proxy_test.go: Unit tests for tool proxy coordinationinternal/application/execution_service_settoolproxy_test.go: Tests forSetToolProxywiring on ExecutionServiceinternal/application/execution_service.go: Wire tool proxy into step execution lifecycleinternal/application/execution_setup.go: Initialize and configure tool proxy during execution setupinternal/application/conversation_manager.go: Pass tool proxy context into conversation executioninternal/application/service.go: ExposeSetToolProxyand tool proxy lifecycle on ApplicationServiceinternal/application/tools/proxy_service.go: NewProxyServicemanaging tool routing decisionsinternal/application/tools/proxy_service_test.go: Tests for ProxyService routing logicinternal/application/tools/router.go: NewRouterdispatching tool calls to correct provider or builtininternal/application/tools/router_test.go: Tests for Router dispatchinternal/application/tools/config.go: Tool proxy configuration typesinternal/application/tools/doc.go: Package documentationinternal/application/tools/architecture_test.go: Architecture conformance testsInfrastructure — Agents (MCP wiring per provider)
internal/infrastructure/agents/base_cli_provider.go: Add MCP proxy subprocess launch and stdio handshake to base providerinternal/infrastructure/agents/base_cli_provider_conversation_mcp_test.go: Tests for base provider MCP conversation modeinternal/infrastructure/agents/claude_provider.go: Wire--mcp-configflag with proxy server address for Claudeinternal/infrastructure/agents/claude_provider_mcp_test.go: Claude MCP flag assembly testsinternal/infrastructure/agents/gemini_provider.go: Wire MCP proxy config for Geminiinternal/infrastructure/agents/gemini_provider_mcp_test.go: Gemini MCP testsinternal/infrastructure/agents/codex_provider.go: Wire MCP proxy for Codex with warning for unsupported stdiointernal/infrastructure/agents/codex_provider_mcp_test.go: Codex MCP warning testsinternal/infrastructure/agents/copilot_provider.go: Wire MCP proxy config for Copilotinternal/infrastructure/agents/copilot_provider_mcp_test.go: Copilot MCP testsinternal/infrastructure/agents/openai_compatible_provider.go: Full MCP tool call support for OpenAI-compatible providers via API-level tool injectioninternal/infrastructure/agents/openai_compatible_provider_mcp_test.go: OpenAI-compatible MCP testsinternal/infrastructure/agents/openai_compatible_tools.go: Tool schema serialization for OpenAI tool_calls protocolinternal/infrastructure/agents/openai_compatible_tools_test.go: Schema serialization testsinternal/infrastructure/agents/opencode_provider.go: Wire MCP proxy for Opencode via workspace configinternal/infrastructure/agents/opencode_provider_mcp_test.go: Opencode MCP testsinternal/infrastructure/agents/opencode_provider_unit_test.go: Refactor unit tests after workspace config extractioninternal/infrastructure/agents/opencode_workspace_config.go: Extract Opencode workspace config generation (MCP server entries)internal/infrastructure/agents/opencode_workspace_config_test.go: Workspace config generation testsinternal/infrastructure/agents/opencode_workspace_config_windows.go: Windows-compatible workspace config path resolutioninternal/infrastructure/agents/mcp_proxy_name.go: Deterministic proxy server name generationinternal/infrastructure/agents/mcp_proxy_name_test.go: Tests for proxy name generationinternal/infrastructure/agents/mcp_proxy_purge.go: Cleanup logic for stale proxy config files after executioninternal/infrastructure/agents/mcp_proxy_purge_test.go: Purge lifecycle testsinternal/infrastructure/agents/cli_executor.go: Extend CLIExecutor to spawn and track proxy subprocessinternal/infrastructure/agents/cli_executor_test.go: CLIExecutor proxy subprocess testsinternal/infrastructure/agents/options.go: AddToolProxyoption to agent option setinternal/infrastructure/agents/provider_options_test.go: Tests for tool proxy option wiringinternal/infrastructure/agents/registry.go: Register tool proxy capability flag on agentsinternal/infrastructure/agents/registry_test.go: Update registry tests for new capabilityInfrastructure — Tools
internal/infrastructure/tools/builtins/bash.go: Builtin bash tool implementationinternal/infrastructure/tools/builtins/bash_test.go: Bash tool testsinternal/infrastructure/tools/builtins/edit.go: Builtin edit tool implementationinternal/infrastructure/tools/builtins/edit_test.go: Edit tool testsinternal/infrastructure/tools/builtins/glob.go: Builtin glob tool implementationinternal/infrastructure/tools/builtins/glob_test.go: Glob tool testsinternal/infrastructure/tools/builtins/grep.go: Builtin grep tool implementationinternal/infrastructure/tools/builtins/grep_test.go: Grep tool testsinternal/infrastructure/tools/builtins/read.go: Builtin read tool implementationinternal/infrastructure/tools/builtins/read_test.go: Read tool testsinternal/infrastructure/tools/builtins/write.go: Builtin write tool implementationinternal/infrastructure/tools/builtins/write_test.go: Write tool testsinternal/infrastructure/tools/builtins/provider.go: BuiltinProvider registering all builtin toolsinternal/infrastructure/tools/builtins/provider_test.go: BuiltinProvider testsinternal/infrastructure/tools/plugin_adapter.go: Adapter bridging plugin RPC tools into ToolProvider interfaceinternal/infrastructure/tools/plugin_adapter_test.go: Plugin adapter testsinternal/infrastructure/tools/schema_mapper.go: Map AWF tool schemas to MCP JSON Schema formatinternal/infrastructure/tools/schema_mapper_test.go: Schema mapper testsinternal/infrastructure/tools/doc.go: Package documentationInfrastructure — Other
internal/infrastructure/repository/yaml_mapper.go: Parsemcp_proxyYAML stanza into domain entityinternal/infrastructure/repository/yaml_mapper_mcp_proxy_test.go: YAML mapper tests for mcp_proxyinternal/infrastructure/repository/yaml_repository.go: Register mcp_proxy types in repositoryinternal/infrastructure/repository/yaml_repository_test.go: Repository loading testsinternal/infrastructure/repository/yaml_types.go: AddYAMLMCPProxyand related YAML struct typesinternal/infrastructure/errors/hint_generators_test.go: Update hint generator tests for new error codesinternal/infrastructure/notify/desktop.go: Minor desktop notification updateinternal/infrastructure/pluginmgr/rpc_manager.go: Expose plugin tool schemas over RPC for proxy adapterinternal/infrastructure/pluginmgr/rpc_manager_test.go: Update RPC manager testsinternal/infrastructure/pluginmgr/stream_manager_test.go: Update stream manager testsCLI Interface
internal/interfaces/cli/mcp_serve.go: Newawf mcp servecommand — starts stdio MCP server wrapping configured pluginsinternal/interfaces/cli/mcp_serve_test.go: Tests for mcp serve command lifecycleinternal/interfaces/cli/mcp_serve_helpers_test.go: Test helpers for mcp serveinternal/interfaces/cli/mcp_serve_plugin_test.go: Plugin bridge integration tests for mcp serveinternal/interfaces/cli/validate_mcp_proxy_test.go: Validation command tests for mcp_proxy step configinternal/interfaces/cli/root.go: Registermcp servesubcommandinternal/interfaces/cli/run.go: Pass tool proxy config into run execution pathinternal/interfaces/cli/run_help.go: Update help textinternal/interfaces/cli/run_notify_config_test.go: Add notify config testinternal/interfaces/cli/run_pack_wiring_test.go: Update pack wiring testinternal/interfaces/cli/resume.go: Pass tool proxy into resume execution pathinternal/interfaces/cli/validate.go: Validate mcp_proxy config in validate commandinternal/interfaces/cli/ui/output.go: Add tool call display events to output rendererinternal/interfaces/cli/history_internal_test.go: Minor fixinternal/interfaces/cli/list_internal_test.go: Minor fixPublic Package — MCP Server
pkg/mcpserver/server.go: JSON-RPC 2.0 stdio MCP server implementationpkg/mcpserver/server_test.go: Comprehensive server testspkg/mcpserver/protocol.go: MCP protocol message types and JSON-RPC framingpkg/mcpserver/protocol_test.go: Protocol serialization testspkg/mcpserver/types.go: Shared MCP type definitionspkg/mcpserver/doc.go: Package documentationpkg/mcpserver/architecture_test.go: Architecture conformance testsPublic Package — Plugin SDK
pkg/plugin/sdk/grpc_plugin.go: Extend plugin SDK with tool schema advertisement over gRPCpkg/plugin/sdk/grpc_plugin_test.go: gRPC plugin SDK testspkg/plugin/sdk/sdk.go: Expose tool provider interface from SDKpkg/plugin/sdk/doc.go: SDK package documentationExamples & Fixtures
examples/plugins/awf-plugin-echo/main.go: Update echo plugin to implement tool provider interfaceexamples/plugins/awf-plugin-echo/main_test.go: Echo plugin teststests/fixtures/mcp_proxy/mcp-proxy-*.yaml: Validation test fixtures for valid and invalid mcp_proxy configstests/integration/mcp/end_to_end_claude_test.go: End-to-end Claude + MCP proxy testtests/integration/mcp/mcp_jsonrpc_e2e_test.go: JSON-RPC protocol end-to-end teststests/integration/mcp/plugin_bridge_test.go: Plugin bridge integration teststests/integration/mcp/subprocess_lifecycle_test.go: Proxy subprocess lifecycle testsMocks & Test Utilities
internal/testutil/mocks/mocks.go: Add mocks for ToolProvider, ProxyService, and MCPServer interfacesDocs & Config
docs/ADR/017-mcp-proxy-stdio-subprocess-for-tool-interception.md: ADR documenting the stdio subprocess design decisiondocs/user-guide/mcp-proxy.md: New user guide for mcp_proxy step configurationdocs/user-guide/agent-steps.md: Document mcp_proxy field in agent stepsdocs/user-guide/plugins.md: Document plugin tool provider capabilitydocs/user-guide/workflow-syntax.md: Add mcp_proxy to workflow syntax referencedocs/development/creating-agent-provider.md: Add MCP proxy integration section for provider authorsdocs/reference/error-codes.md: Document new tool proxy and MCP error codesdocs/README.md: Link new mcp-proxy guideREADME.md: Mention MCP proxy capability in feature listCLAUDE.md: Add architecture rules for MCP proxy patterns.go-arch-lint.yml: Register new packages and their dependency rules.gitignore: Ignore generated proxy config temp files.zpm/kb/default/journal.wal: ZPM knowledge base journal.zpm/mounts.json: ZPM mount configurationTest plan
make buildsucceeds andawf mcp serve --helpdisplays the new subcommandawf validaterejects invalidmcp_proxystep configs (unknown plugin, name collision, unsupported Codex warning) using fixtures intests/fixtures/mcp_proxy/make testpasses with zero failures;make test-racereports no data races in proxy subprocess and MCP server codetests/integration/mcp/subprocess_lifecycle_test.goto verify proxy subprocess starts, handles JSON-RPC tool calls, and shuts down cleanlyCloses #353
Generated with awf commit workflow