--- name: "error-transport-context" description: "Preserve service request context across MCP and CLI error envelopes." domain: "error-handling" confidence: "high" source: "observed" --- ## Context Use this when improving diagnostics in the MCP/CLI/service seam without changing Core or COM behavior. ## Patterns - Put shared diagnostics on `ServiceResponse`, not in host-specific wrappers. - Stamp failed responses with the originating `command` and `sessionId` at the service boundary so both MCP and CLI inherit the same context. - Mirror new shared fields in `ExcelToolsBase` and `CliErrorOutput` while keeping existing compatibility fields like `error`, `errorMessage`, and `isError`. - Prefer additive fields over message rewrites so existing clients keep working. ## Examples - `src/ExcelMcp.Service/ExcelMcpService.cs`: enrich failures in `ProcessAsync()` via a request-context helper. - `src/ExcelMcp.McpServer/Tools/ExcelToolsBase.cs`: include `command` and `sessionId` in serialized error JSON. - `src/ExcelMcp.CLI/Infrastructure/CliErrorOutput.cs`: emit the same fields in CLI failure envelopes. ## Anti-Patterns - Do not add MCP-only diagnostics that CLI cannot emit. - Do not push transport diagnostics down into Core commands just to label routed actions. - Do not remove existing error fields that current tests or clients already consume.