Invalid JSON-RPC envelope errors are not correlated with the original request id
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện ba payload envelope JSON-RPC không hợp lệ trên cả hai transport stdio và Streamable HTTP. Theo dõi các đường đi xác thực và phản hồi lỗi của chúng; được xem là hoàn tất khi các request có envelope không hợp lệ trả về lỗi JSON-RPC phù hợp và giữ nguyên id ban đầu khi có thể, mà không gây hồi quy cho các request ping tiếp theo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Initial Checks
- I confirm that I'm using the latest version of MCP Python SDK
- I confirm that I searched for my issue in https://github.com/modelcontextprotocol/python-sdk/issues before opening this issue
Description
After a normal initialization flow, several id-bearing JSON-RPC messages that are syntactically valid JSON but invalid JSON-RPC request envelopes are not correlated back to the original request id.
This is not meant to require implementations to recover an id after every low-level parse/deserialization failure. The narrower concern is that these payloads are parsed far enough to produce request-specific validation errors, while the original top-level id is still present in the payload. Preserving that id where feasible would make the error response easier for clients to correlate.
The tested inputs were:
| Case | Request | Validation detail |
|---|---|---|
wrong jsonrpc version |
{"jsonrpc":"1.0","id":3,"method":"ping","params":{}} |
JSONRPCRequest.jsonrpc: value should be "2.0" |
missing jsonrpc field |
{"id":4,"method":"ping","params":{}} |
JSONRPCRequest.jsonrpc: field required |
method as number |
{"jsonrpc":"2.0","id":8,"method":12345,"params":{}} |
JSONRPCRequest.method: input should be a valid string |
For all three envelope-invalid inputs, I would expect -32600 Invalid Request or -32602 error response that can be correlated to the original request where possible.
Observed behavior was consistent by transport:
- stdio: The server emits a
notifications/messagelog notification withlevel:"error"anddata:"Internal Server Error", but no JSON-RPC error response is sent for the original requestid. A follow-uppingsucceeds. - Streamable HTTP: The server returns HTTP 400 with a JSON-RPC error response using
id:"server-error"andcode:-32602, rather than the original requestid. A follow-uppingsucceeds over SSE.
Example Code
"""
With a Python SDK MCP server running over stdio or Streamable HTTP,
complete a normal initialization flow, then send these requests in isolation.
"""
requests = [
# Wrong JSON-RPC version: valid JSON, invalid JSON-RPC envelope.
{"jsonrpc": "1.0", "id": 3, "method": "ping", "params": {}},
# Missing jsonrpc field: valid JSON, invalid JSON-RPC envelope.
{"id": 4, "method": "ping", "params": {}},
# method is not a string: valid JSON, invalid JSON-RPC envelope.
{"jsonrpc": "2.0", "id": 8, "method": 12345, "params": {}},
]
Python & MCP Python SDK
* Python: `3.12.3`
* MCP Python SDK stable release: `v1.27.2` (`62137874ff26dd74d2fea80ff528a7fd9ca7a5e7`)
* Transports: stdio and Streamable HTTP
- Ngôn ngữ chính
- Python
- Star
- 24.3k
- Fork
- 4k
- Merge trung bình
- 1 ngày 19 phút
- Pull request đã merge (30 ngày)
- 29
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của modelcontextprotocol/python-sdk
-
Streamable HTTP client logs a WARNING for valid 202 Accepted on session termination (DELETE) Đang mởv1 v2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
modelcontextprotocol/python-sdk#3546 · 5 bình luận ·
-
v1 v2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
modelcontextprotocol/python-sdk#3545 · 1 bình luận ·
-
v1 v2
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 91/100
modelcontextprotocol/python-sdk#3508 · 2 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
modelcontextprotocol/python-sdk#3504 ·
-
v1 v2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
modelcontextprotocol/python-sdk#3492 · 1 bình luận ·
Tất cả issue của modelcontextprotocol/python-sdk
Issue tương tự
-
🐛 Bug 🔔 Pending processing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
jumpserver/jumpserver#17584 ·
-
link-check link-check:sphinx-theme
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 90/100
modelscope/DiffSynth-Studio#1702 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
qgis/QGIS-Documentation#11275 ·
-
bug priority:normal ready-for-dev
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
OpenHands/extensions#626 · 1 bình luận ·