Skip to content

Commit 083b612

Browse files
improve AsyncMCPClient
1 parent 000209e commit 083b612

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

lagent/actions/mcp_client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)