ADR-001: MCP Protocol Implementation Strategy
Statusโ
Deprecated
Deprecated, not superseded, and the distinction is deliberate. This ADR decided
Server-Sent Events. The server has only ever shipped stdio โ src/index.ts:12 imports
StdioServerTransport and :8904 constructs it; there are zero SSE symbols in src/.
Nothing superseded it, because the replacement decision was never recorded. Writing that ADR now would mean reconstructing rationale nobody wrote down, which is the same objection that kept ADR-016 from being back-filled in #1415: an invented record is worse than an acknowledged gap. The gap is tracked in #1415.
Deprecated says what is true โ this decision is not in force โ without claiming a
successor that does not exist.
Contextโ
The MCP ADR Analysis Server requires implementation of the Model Context Protocol (MCP) for communication with AI systems. The selection of transport protocol, message format, and tool architecture significantly impacts system performance, maintainability, and extensibility. The project requires a solution that balances compatibility, simplicity, and future extensibility while supporting dynamic tool integration.
Decisionโ
We will implement MCP using Server-Sent Events (SSE) as the primary transport protocol with JSON-RPC for message formatting, combined with a plugin-based tool architecture for extensibility. This approach provides HTTP/1.1 compatibility, simplifies client implementation, and enables dynamic tool registration without requiring core system modifications.
Consequencesโ
Positive:
- Enhanced HTTP compatibility with existing infrastructure
- Simplified client implementation due to SSE's straightforward nature
- Improved maintainability through modular plugin architecture
- Easier debugging and monitoring with standard HTTP tools
- Dynamic tool registration and extension without system restarts
Negative:
- Potentially higher latency compared to WebSockets for high-frequency messaging
- Increased complexity in managing tool interaction and lifecycle
- Additional overhead for plugin management and dependency resolution
- Requires careful state management in stateless HTTP connections
Evolution Notes (2025)โ
CE-MCP Paradigm Shift: This ADR documents the original MCP implementation strategy (November 2024). As of 2025, the CE-MCP (Code Execution with MCP) paradigm has been adopted as a recommended best practice. See ADR-014 for the evolution of this architecture.
Key Changes in CE-MCP:
- MCP's role shifts from direct tool-calling to standardized RPC interface consumed by AI-generated code
- LLM generates orchestration scripts rather than making sequential tool calls
- Intermediate results remain in sandbox memory rather than passing through context
- Progressive tool discovery replaces monolithic upfront loading
This ADR Remains Valid For:
SSE transport protocol selectionโ never true. Corrected 2026-08-27 (#1507). The code is stdio-only and always has been.- JSON-RPC message formatting
- Plugin-based tool architecture foundation
Superseded By ADR-014 For:
- Tool loading strategy (now progressive discovery)
- Context management patterns (now sandbox-based)
- Tool invocation flow (now code-generated orchestration)
Related ADRsโ
- ADR-014: CE-MCP Architecture (evolves this ADR)