Skip to content

Commit 0b262b6

Browse files
committed
fix(core): handle json-rpc error dict for protocol version mismatch
1 parent 122b297 commit 0b262b6

5 files changed

Lines changed: 15 additions & 0 deletions

File tree

packages/toolbox-core/src/toolbox_core/mcp_transport/v20241105/mcp.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ async def _send_request(
8888
elif (
8989
isinstance(err_val, str)
9090
and "invalid protocol version" in err_val.lower()
91+
) or (
92+
isinstance(err_val, dict)
93+
and "invalid protocol version" in str(err_val.get("message", "")).lower()
9194
):
9295
client_supported = (
9396
self._supported_protocols

packages/toolbox-core/src/toolbox_core/mcp_transport/v20250326/mcp.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ async def _send_request(
102102
elif (
103103
isinstance(err_val, str)
104104
and "invalid protocol version" in err_val.lower()
105+
) or (
106+
isinstance(err_val, dict)
107+
and "invalid protocol version" in str(err_val.get("message", "")).lower()
105108
):
106109
client_supported = (
107110
self._supported_protocols

packages/toolbox-core/src/toolbox_core/mcp_transport/v20250618/mcp.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ async def _send_request(
9393
elif (
9494
isinstance(err_val, str)
9595
and "invalid protocol version" in err_val.lower()
96+
) or (
97+
isinstance(err_val, dict)
98+
and "invalid protocol version" in str(err_val.get("message", "")).lower()
9699
):
97100
client_supported = (
98101
self._supported_protocols

packages/toolbox-core/src/toolbox_core/mcp_transport/v20251125/mcp.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ async def _send_request(
9393
elif (
9494
isinstance(err_val, str)
9595
and "invalid protocol version" in err_val.lower()
96+
) or (
97+
isinstance(err_val, dict)
98+
and "invalid protocol version" in str(err_val.get("message", "")).lower()
9699
):
97100
client_supported = (
98101
self._supported_protocols

packages/toolbox-core/src/toolbox_core/mcp_transport/v20260618/mcp.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ async def _send_request(
118118
elif (
119119
isinstance(err_val, str)
120120
and "invalid protocol version" in err_val.lower()
121+
) or (
122+
isinstance(err_val, dict)
123+
and "invalid protocol version" in str(err_val.get("message", "")).lower()
121124
):
122125
# Cascading Fallback: Legacy servers throw this string error.
123126
# We pick the next version from the user's supported list.

0 commit comments

Comments
 (0)