feat: add supports_parallel_tool_calls for MCP servers (#26825) — port to tool_dispatch_helpers
Original commit 395e9dd9e by Teknium targeted module-level _is_mcp_tool_parallel_safe
and _should_parallelize_tool_batch helpers in pre-refactor run_agent.py. Both
helpers now live in agent/tool_dispatch_helpers.py — re-applied to that
module.
The tools/mcp_tool.py portion (the public is_mcp_tool_parallel_safe API
+ _parallel_safe_servers tracking) merged cleanly from main via the prior
merge commit.
Co-authored-by: Teknium <127238744+teknium1@users.noreply.github.com>
This commit is contained in:
@@ -87,6 +87,19 @@ def _is_destructive_command(cmd: str) -> bool:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def _is_mcp_tool_parallel_safe(tool_name: str) -> bool:
|
||||||
|
"""Check if an MCP tool comes from a server with parallel tool calls enabled.
|
||||||
|
|
||||||
|
Lazy-imports from ``tools.mcp_tool`` to avoid circular dependencies.
|
||||||
|
Returns False if the MCP module is not available.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
from tools.mcp_tool import is_mcp_tool_parallel_safe
|
||||||
|
return is_mcp_tool_parallel_safe(tool_name)
|
||||||
|
except Exception:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def _should_parallelize_tool_batch(tool_calls) -> bool:
|
def _should_parallelize_tool_batch(tool_calls) -> bool:
|
||||||
"""Return True when a tool-call batch is safe to run concurrently."""
|
"""Return True when a tool-call batch is safe to run concurrently."""
|
||||||
if len(tool_calls) <= 1:
|
if len(tool_calls) <= 1:
|
||||||
@@ -126,7 +139,9 @@ def _should_parallelize_tool_batch(tool_calls) -> bool:
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if tool_name not in _PARALLEL_SAFE_TOOLS:
|
if tool_name not in _PARALLEL_SAFE_TOOLS:
|
||||||
return False
|
# Check if it's an MCP tool from a server that opted into parallel calls.
|
||||||
|
if not _is_mcp_tool_parallel_safe(tool_name):
|
||||||
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user