Skip to content

Commit 79b5e9f

Browse files
olaservoclaude
andcommitted
Add full MCP 2025-11-25 protocol coverage to v2_ux.md
- 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 <[email protected]>
1 parent 8fec93f commit 79b5e9f

File tree

2 files changed

+898
-89
lines changed

2 files changed

+898
-89
lines changed

specification/v2_tech_stack.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,66 @@ Let's step up our logging capability with an advanced logger:
3939
* -[ ] [Morgan](https://github.com/expressjs/morgan?tab=readme-ov-file#morgan)
4040
* -[ ] [Log4js](https://github.com/stritti/log4js?tab=readme-ov-file#log4js)
4141
* -[ ] [Bunyan](https://github.com/trentm/node-bunyan)
42+
43+
#### Pino Rationale
44+
45+
Pino is selected for synergy with the **History Screen** feature. The log file serves dual purposes:
46+
1. **Server diagnostics** - Standard application logging
47+
2. **History persistence** - Request/response replay source
48+
49+
**Why Pino over Winston:**
50+
51+
| Requirement | Pino | Winston |
52+
|-------------|------|---------|
53+
| Default JSON format | Yes - NDJSON | No - Text (needs config) |
54+
| Line-by-line parsing | Yes - Native | No - Extra work |
55+
| High-throughput logging | Yes - Very fast | Partial - Slower |
56+
| Log rotation | Yes - pino-roll | Yes - winston-daily-rotate |
57+
| Dev-friendly output | Yes - pino-pretty | Yes - Built-in |
58+
59+
**Architecture:**
60+
61+
```
62+
┌─────────────────────────────────────────────────────────────────┐
63+
│ Proxy Server │
64+
│ │
65+
│ MCP Request ──▶ Pino Logger ──┬──▶ history.ndjson (file) │
66+
│ │ │
67+
│ └──▶ Console (pino-pretty) │
68+
│ │
69+
│ History API: GET /api/history?method=tools/call&limit=50 │
70+
│ (parses history.ndjson, returns filtered JSON) │
71+
└─────────────────────────────────────────────────────────────────┘
72+
```
73+
74+
**Log Entry Schema:**
75+
76+
Each MCP operation logs a request/response pair:
77+
78+
```json
79+
{"ts":1732987200000,"level":"info","type":"mcp_request","method":"tools/call","target":"echo","params":{"message":"hello"},"requestId":"abc123","serverId":"my-server"}
80+
{"ts":1732987200045,"level":"info","type":"mcp_response","requestId":"abc123","result":{"content":[{"type":"text","text":"hello"}]},"duration":45,"success":true}
81+
```
82+
83+
**Schema fields:**
84+
85+
| Field | Description |
86+
|-------|-------------|
87+
| `ts` | Unix timestamp (ms) |
88+
| `level` | Log level (info, error) |
89+
| `type` | `mcp_request` or `mcp_response` |
90+
| `method` | MCP method (tools/call, resources/read, prompts/get, etc.) |
91+
| `target` | Tool name, resource URI, or prompt name |
92+
| `params` | Request parameters |
93+
| `requestId` | Correlation ID linking request to response |
94+
| `serverId` | Server identifier |
95+
| `result` | Response data (for mcp_response) |
96+
| `error` | Error message (for failed requests) |
97+
| `duration` | Response time in ms |
98+
| `success` | Boolean success indicator |
99+
100+
**Dependencies:**
101+
- `pino` - Core logger
102+
- `pino-pretty` - Dev console formatting
103+
- `pino-roll` - Log rotation (optional)
104+
- `pino-http` - Express integration

0 commit comments

Comments
 (0)