Skip to content

Log the MCP JSON-RPC request body as postBody - #23

Merged
mjradwin merged 1 commit into
mainfrom
log-mcp-post-body
Aug 30, 2026
Merged

Log the MCP JSON-RPC request body as postBody#23
mjradwin merged 1 commit into
mainfrom
log-mcp-post-body

Conversation

@mjradwin

Copy link
Copy Markdown
Member

A bare POST /mcp access-log line says nothing about which tool was called. Capture the JSON-RPC request body and emit it on the request's single log line under "postBody".

  • reqlog.Collector gains SetPostBody/PostBody, mirroring SetQuery/Query, to carry the body from the handler to the access-log middleware.
  • The /mcp handler buffers the POST body, records it, and restores r.Body so the MCP SDK still reads it in full.
  • The middleware emits "postBody" via encodePostBody: valid JSON is compacted into a nested object; non-JSON or an over-8KB body is emitted as a bounded JSON string, so the log line always stays valid JSON.

Claude-Session: https://claude.ai/code/session_01FWtwEsiChrX2aCva9EK54B

A bare `POST /mcp` access-log line says nothing about which tool was
called. Capture the JSON-RPC request body and emit it on the request's
single log line under "postBody".

- reqlog.Collector gains SetPostBody/PostBody, mirroring SetQuery/Query,
  to carry the body from the handler to the access-log middleware.
- The /mcp handler buffers the POST body, records it, and restores r.Body
  so the MCP SDK still reads it in full.
- The middleware emits "postBody" via encodePostBody: valid JSON is
  compacted into a nested object; non-JSON or an over-8KB body is emitted
  as a bounded JSON string, so the log line always stays valid JSON.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FWtwEsiChrX2aCva9EK54B
@mjradwin
mjradwin merged commit 14a0142 into main Aug 30, 2026
2 checks passed
@mjradwin
mjradwin deleted the log-mcp-post-body branch August 30, 2026 23:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant