@@ -243,11 +243,13 @@ def __init__(
243243 max_concurrency : int = None ,
244244 # 注意:这里的 name 主要用于 Lagent 注册,但工具的实际元数据来自 MCP Server
245245 name : Optional [str ] = None ,
246+ extra_args : Optional [dict ] = None ,
246247 ** server_params ,
247248 ):
248249 self ._is_toolkit = False
249250 self .server_type = server_type
250251 self .server_params = server_params
252+ self .extra_args = extra_args or {}
251253
252254 # 并发控制组件
253255 self .rate_limiter = FairAsyncTokenBucket (rate_limit ) if rate_limit is not None else None
@@ -280,6 +282,7 @@ def __init__(
280282 'parameters' : [
281283 {'name' : k , 'type' : v ['type' ].upper (), 'description' : v .get ('description' , '' )}
282284 for k , v in self .tool_info .inputSchema ['properties' ].items ()
285+ if k not in self .extra_args
283286 ],
284287 'required' : self .tool_info .inputSchema .get ('required' , []),
285288 },
@@ -374,7 +377,7 @@ async def run(self, **kwargs) -> ActionReturn:
374377
375378 # 调用 MCP 工具
376379 # 注意:Lagent 传入的是 kwargs 字典,MCP call_tool 正好接受字典
377- outputs_obj = await session .call_tool (self .tool_info .name , kwargs )
380+ outputs_obj = await session .call_tool (self .tool_info .name , { ** kwargs , ** self . extra_args } )
378381
379382 # 提取文本结果
380383 if outputs_obj .content and hasattr (outputs_obj .content [0 ], 'text' ):
0 commit comments