fix: reply -32700 on stdio parse errors instead of closing (#833)

* fix: reply -32700 on stdio parse errors instead of closing

* fix: make JsonRpcError id optional per MCP spec
This commit is contained in:
Dale Seo 2026-05-07 12:27:15 -04:00 • committed by GitHub
commit 321ab14f67
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 191 additions and 53 deletions

View file

@ -30,7 +30,7 @@ async fn test_client_init_handles_jsonrpc_error() {
let error_msg = ServerJsonRpcMessage::Error(JsonRpcError {
jsonrpc: JsonRpcVersion2_0,
id: RequestId::Number(1),
id: Some(RequestId::Number(1)),
error: ErrorData {
code: ErrorCode(-32600),
message: Cow::Borrowed("Invalid Request"),

View file

@ -862,7 +862,14 @@
"$ref": "#/definitions/ErrorData"
},
"id": {
"$ref": "#/definitions/NumberOrString"
"anyOf": [
{
"$ref": "#/definitions/NumberOrString"
},
{
"type": "null"
}
]
},
"jsonrpc": {
"$ref": "#/definitions/JsonRpcVersion2_0"
@ -870,7 +877,6 @@
},
"required": [
"jsonrpc",
"id",
"error"
]
},

View file

@ -862,7 +862,14 @@
"$ref": "#/definitions/ErrorData"
},
"id": {
"$ref": "#/definitions/NumberOrString"
"anyOf": [
{
"$ref": "#/definitions/NumberOrString"
},
{
"type": "null"
}
]
},
"jsonrpc": {
"$ref": "#/definitions/JsonRpcVersion2_0"
@ -870,7 +877,6 @@
},
"required": [
"jsonrpc",
"id",
"error"
]
},

View file

@ -1281,7 +1281,14 @@
"$ref": "#/definitions/ErrorData"
},
"id": {
"$ref": "#/definitions/NumberOrString"
"anyOf": [
{
"$ref": "#/definitions/NumberOrString"
},
{
"type": "null"
}
]
},
"jsonrpc": {
"$ref": "#/definitions/JsonRpcVersion2_0"
@ -1289,7 +1296,6 @@
},
"required": [
"jsonrpc",
"id",
"error"
]
},

View file

@ -1281,7 +1281,14 @@
"$ref": "#/definitions/ErrorData"
},
"id": {
"$ref": "#/definitions/NumberOrString"
"anyOf": [
{
"$ref": "#/definitions/NumberOrString"
},
{
"type": "null"
}
]
},
"jsonrpc": {
"$ref": "#/definitions/JsonRpcVersion2_0"
@ -1289,7 +1296,6 @@
},
"required": [
"jsonrpc",
"id",
"error"
]
},