From 54375065d5c52d9cd0cf8502897d2ec2caf4583c Mon Sep 17 00:00:00 2001 From: Zamil Majdy Date: Mon, 9 Feb 2026 14:51:49 +0400 Subject: [PATCH] fix(mcp): Reshape execution input for MCPToolBlock like AgentExecutorBlock The dynamic get_input_defaults returns only tool_arguments, so the execution engine loses block-level fields like server_url. Reconstruct the full Input from node.input_default and set tool_arguments from the resolved dynamic input, matching the AgentExecutorBlock pattern. --- autogpt_platform/backend/backend/executor/manager.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/autogpt_platform/backend/backend/executor/manager.py b/autogpt_platform/backend/backend/executor/manager.py index 8362dae828..e3c528e3c7 100644 --- a/autogpt_platform/backend/backend/executor/manager.py +++ b/autogpt_platform/backend/backend/executor/manager.py @@ -18,6 +18,7 @@ from redis.asyncio.lock import Lock as AsyncRedisLock from backend.blocks.agent import AgentExecutorBlock from backend.blocks.io import AgentOutputBlock +from backend.blocks.mcp.block import MCPToolBlock from backend.data import redis_client as redis from backend.data.block import ( BlockInput, @@ -229,6 +230,10 @@ async def execute_node( _input_data.nodes_input_masks = nodes_input_masks _input_data.user_id = user_id input_data = _input_data.model_dump() + elif isinstance(node_block, MCPToolBlock): + _mcp_data = MCPToolBlock.Input(**node.input_default) + _mcp_data.tool_arguments = input_data + input_data = _mcp_data.model_dump() data.inputs = input_data # Execute the node