@@ -149,6 +149,62 @@ def resolve_meta(context):
149149 assert args == {"foo" : "bar" }
150150
151151
152+ @pytest .mark .asyncio
153+ async def test_to_function_tool_passes_static_mcp_meta ():
154+ server = FakeMCPServer ()
155+ tool = MCPTool (
156+ name = "test_tool_1" ,
157+ inputSchema = {},
158+ _meta = {"locale" : "en" , "extra" : "value" },
159+ )
160+
161+ function_tool = MCPUtil .to_function_tool (tool , server , convert_schemas_to_strict = False )
162+ tool_context = ToolContext (
163+ context = None ,
164+ tool_name = "test_tool_1" ,
165+ tool_call_id = "test_call_static_meta" ,
166+ tool_arguments = "{}" ,
167+ )
168+
169+ await function_tool .on_invoke_tool (tool_context , "{}" )
170+
171+ assert server .tool_metas [- 1 ] == {"locale" : "en" , "extra" : "value" }
172+
173+
174+ @pytest .mark .asyncio
175+ async def test_to_function_tool_merges_static_mcp_meta_with_resolver ():
176+ captured : dict [str , Any ] = {}
177+
178+ def resolve_meta (context ):
179+ captured ["run_context" ] = context .run_context
180+ captured ["server_name" ] = context .server_name
181+ captured ["tool_name" ] = context .tool_name
182+ captured ["arguments" ] = context .arguments
183+ return {"request_id" : "req-123" , "locale" : "ja" }
184+
185+ server = FakeMCPServer (tool_meta_resolver = resolve_meta )
186+ tool = MCPTool (
187+ name = "test_tool_1" ,
188+ inputSchema = {},
189+ _meta = {"locale" : "en" , "extra" : "value" },
190+ )
191+
192+ function_tool = MCPUtil .to_function_tool (tool , server , convert_schemas_to_strict = False )
193+ tool_context = ToolContext (
194+ context = {"request_id" : "req-123" },
195+ tool_name = "test_tool_1" ,
196+ tool_call_id = "test_call_static_meta_with_resolver" ,
197+ tool_arguments = "{}" ,
198+ )
199+
200+ await function_tool .on_invoke_tool (tool_context , "{}" )
201+
202+ assert server .tool_metas [- 1 ] == {"request_id" : "req-123" , "locale" : "en" , "extra" : "value" }
203+ assert captured ["server_name" ] == server .name
204+ assert captured ["tool_name" ] == "test_tool_1"
205+ assert captured ["arguments" ] == {}
206+
207+
152208@pytest .mark .asyncio
153209async def test_mcp_invoke_bad_json_errors (caplog : pytest .LogCaptureFixture ):
154210 caplog .set_level (logging .DEBUG )
0 commit comments