- Add server.json import support (Issue #922) for MCP Registry format - Add History Screen with automatic capture and replay functionality - Add Pino logging rationale with log-as-history architecture - Remove emojis from markdown files, use text alternatives New UX sections added: - Logging Screen (notifications/message, logging/setLevel) - Tasks Screen (tasks/*, notifications/task/statusChanged) - Sampling Panel (sampling/createMessage) - Elicitation Handler (form + URL modes) - Roots Configuration (roots/list) - Experimental Features Panel (raw JSON-RPC tester) Enhanced existing screens: - Tools: annotations, autocomplete, progress indicators, image/audio - Resources: annotations, subscriptions - Prompts: autocomplete - Navigation: ping latency, listChanged indicators 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.2 KiB
4.2 KiB
Inspector V2 Tech Stack
Brief | V1 Problems | V2 Scope | V2 Tech Stack | V2 UX
Table of Contents
Web Client
Language and Framework
- Typescript
- React
Components and Theme
Let's choose a feature-rich component set with easy theming control
Proxy Server
Language and Runtime
- Typescript
- Node
Transport Operation
Let's consider how to operate the server transports.
Logging
Let's step up our logging capability with an advanced logger:
Pino Rationale
Pino is selected for synergy with the History Screen feature. The log file serves dual purposes:
- Server diagnostics - Standard application logging
- History persistence - Request/response replay source
Why Pino over Winston:
| Requirement | Pino | Winston |
|---|---|---|
| Default JSON format | Yes - NDJSON | No - Text (needs config) |
| Line-by-line parsing | Yes - Native | No - Extra work |
| High-throughput logging | Yes - Very fast | Partial - Slower |
| Log rotation | Yes - pino-roll | Yes - winston-daily-rotate |
| Dev-friendly output | Yes - pino-pretty | Yes - Built-in |
Architecture:
┌─────────────────────────────────────────────────────────────────┐
│ Proxy Server │
│ │
│ MCP Request ──▶ Pino Logger ──┬──▶ history.ndjson (file) │
│ │ │
│ └──▶ Console (pino-pretty) │
│ │
│ History API: GET /api/history?method=tools/call&limit=50 │
│ (parses history.ndjson, returns filtered JSON) │
└─────────────────────────────────────────────────────────────────┘
Log Entry Schema:
Each MCP operation logs a request/response pair:
{"ts":1732987200000,"level":"info","type":"mcp_request","method":"tools/call","target":"echo","params":{"message":"hello"},"requestId":"abc123","serverId":"my-server"}
{"ts":1732987200045,"level":"info","type":"mcp_response","requestId":"abc123","result":{"content":[{"type":"text","text":"hello"}]},"duration":45,"success":true}
Schema fields:
| Field | Description |
|---|---|
ts |
Unix timestamp (ms) |
level |
Log level (info, error) |
type |
mcp_request or mcp_response |
method |
MCP method (tools/call, resources/read, prompts/get, etc.) |
target |
Tool name, resource URI, or prompt name |
params |
Request parameters |
requestId |
Correlation ID linking request to response |
serverId |
Server identifier |
result |
Response data (for mcp_response) |
error |
Error message (for failed requests) |
duration |
Response time in ms |
success |
Boolean success indicator |
Dependencies:
pino- Core loggerpino-pretty- Dev console formattingpino-roll- Log rotation (optional)pino-http- Express integration