From 7750c5f2f11fcd848627e77d9ac812ae25acbfa6 Mon Sep 17 00:00:00 2001 From: Samuel Chenatti Date: Sun, 3 Aug 2025 15:19:16 -0300 Subject: [PATCH 1/4] feat: expose RequestParams._meta in ClientSession.call_tool --- src/mcp/client/session.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mcp/client/session.py b/src/mcp/client/session.py index 1853ce7c1..258eb195b 100644 --- a/src/mcp/client/session.py +++ b/src/mcp/client/session.py @@ -286,6 +286,7 @@ async def call_tool( name: str, arguments: dict[str, Any] | None = None, read_timeout_seconds: timedelta | None = None, + meta: dict[str, Any] | None = None, progress_callback: ProgressFnT | None = None, ) -> types.CallToolResult: """Send a tools/call request with optional progress callback support.""" @@ -297,6 +298,9 @@ async def call_tool( params=types.CallToolRequestParams( name=name, arguments=arguments, + _meta=types.RequestParams.Meta( + **(meta or {}) + ) ), ) ), From 16a171f8abcc1859b034efb0bb0f3cc6edff414c Mon Sep 17 00:00:00 2001 From: Samuel Chenatti Date: Sun, 3 Aug 2025 15:46:45 -0300 Subject: [PATCH 2/4] style: apply ruff format --- src/mcp/client/session.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/mcp/client/session.py b/src/mcp/client/session.py index 258eb195b..8fd5d036c 100644 --- a/src/mcp/client/session.py +++ b/src/mcp/client/session.py @@ -296,11 +296,7 @@ async def call_tool( types.CallToolRequest( method="tools/call", params=types.CallToolRequestParams( - name=name, - arguments=arguments, - _meta=types.RequestParams.Meta( - **(meta or {}) - ) + name=name, arguments=arguments, _meta=types.RequestParams.Meta(**(meta or {})) ), ) ), From 9b0efae754f130389eaca4e24cd90d37801b6dae Mon Sep 17 00:00:00 2001 From: Samuel Chenatti Date: Mon, 4 Aug 2025 13:24:02 -0300 Subject: [PATCH 3/4] refactor: make _meta handling more readable --- src/mcp/client/session.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mcp/client/session.py b/src/mcp/client/session.py index 8fd5d036c..6dec885c7 100644 --- a/src/mcp/client/session.py +++ b/src/mcp/client/session.py @@ -291,13 +291,15 @@ async def call_tool( ) -> types.CallToolResult: """Send a tools/call request with optional progress callback support.""" + _meta: types.ReadResourceRequestParams.Meta | None = None + if meta is not None: + _meta = types.RequestParams.Meta(**meta) + result = await self.send_request( types.ClientRequest( types.CallToolRequest( method="tools/call", - params=types.CallToolRequestParams( - name=name, arguments=arguments, _meta=types.RequestParams.Meta(**(meta or {})) - ), + params=types.CallToolRequestParams(name=name, arguments=arguments, _meta=_meta), ) ), types.CallToolResult, From d5c05497cc79b2528ff9cb22926a0099e22afc05 Mon Sep 17 00:00:00 2001 From: Samuel Chenatti Date: Mon, 4 Aug 2025 13:24:45 -0300 Subject: [PATCH 4/4] fix: reorder meta argument to avoid a BC --- src/mcp/client/session.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mcp/client/session.py b/src/mcp/client/session.py index 6dec885c7..6115e915c 100644 --- a/src/mcp/client/session.py +++ b/src/mcp/client/session.py @@ -286,8 +286,9 @@ async def call_tool( name: str, arguments: dict[str, Any] | None = None, read_timeout_seconds: timedelta | None = None, - meta: dict[str, Any] | None = None, progress_callback: ProgressFnT | None = None, + *, + meta: dict[str, Any] | None = None, ) -> types.CallToolResult: """Send a tools/call request with optional progress callback support."""