https://linen.dev logo
COMPOSIO_CREATE_PLAN: McpError: MCP error -32001: ...
# 🖥│support-forum
d
Hey, I am using the new router tool, and this happens often;
Copy code
ts
Error calling tool COMPOSIO_CREATE_PLAN: McpError: MCP error -32001: Request timed out

ToolException: Error calling tool COMPOSIO_CREATE_PLAN: McpError: MCP error -32001: Request timed out
    at _callTool (/Users/danielfrey/projects/syntrics/node_modules/.pnpm/@langchain+mcp-
a
Got it, we are working to improve the latency of the planning tool.
Which MCP client are you using?
d
@Karan the new planner
a
Yes, can you pls share the MCP client (cursor / Claude Code / Custom etc)?
d
LangGraph
any ideas when this will be solved? it takes extremly long to get a plan currently and it times out a lot.
a
It should be out by end of week.
d
okay! thanks.
@karan_91106 is there any workaround here that I can do? this really blocks me right now. and the app is in production blocking users.
cc @Rahul
a
Hi @danielfrey2280. I would recommend adding a master prompt to avoid using this tool as we may deprecate it in the future. I'd suggest refraining from using tool-router in production as it's experimental. If you need to continue using it, please mark the feature as beta for your users to set proper expectations.
d
That is really unfortunate to hear that you might deprecate this, it is super essential for my use case. Is it possible that you could share more on your implementation and perhaps I will do it myself? or some other way that we can keep this?
r
so the idea is to move something like cursors/codex plan, mostly a noop tool the client llm uses to generate a plan with max context we might attach some semantic information related to the plan it generates so not necessarily completely no-op
d
@Rahul I figured it out! there was an annoying bug in LanGraph ignoring my timeout config. I finally managed to let it now wait and, yes it takes 1-3 mins to get the plan, but at least no errors on my side.
r
can you send me that config? maybe we can put it up on the discussion or something like that
d
you mean to sure the workaround I did? LangGraph didn't accept config.timeout (as it normally should) on my ToolNode, so I had to wrap my tools manually with a timeout. Like this:
Copy code
ts
 const tools = await client.getTools();

    // Wrap each tool's func to ensure timeout is always passed to _callTool
    const toolsWithTimeout = tools.map((tool) => {
      // Type assertion to access internal func property
      const mutableTool = tool as DynamicStructuredTool & {
        defaultConfig?: RunnableConfig;
        func?: (...args: unknown[]) => Promise<unknown>;
      };

      // Wrap the internal func that _callTool receives its config from
      if (mutableTool.func) {
        const originalFunc = mutableTool.func.bind(mutableTool);

        mutableTool.func = async (...args: unknown[]) => {
          // The signature is: func(args, runManager, config)
          // We need to inject timeout into the config (third parameter)
          const [toolArgs, runManager, config] = args;

          const configWithTimeout = {
            ...(config as RunnableConfig),
            timeout: (config as RunnableConfig)?.timeout ?? MCP_CLIENT_TIMEOUT,
          };

          return originalFunc(toolArgs, runManager, configWithTimeout);
        };
      }

      // Ensure defaultConfig exists
      if (!mutableTool.defaultConfig) {
        mutableTool.defaultConfig = { timeout: MCP_CLIENT_TIMEOUT };
      } else if (!mutableTool.defaultConfig.timeout) {
        mutableTool.defaultConfig = {
          ...mutableTool.defaultConfig,
          timeout: MCP_CLIENT_TIMEOUT,
        };
      }

      return tool;
@Rahul @abhishekpatil4 I just noticed MCP server is no longer exposing COMPOSIO_CREATE_PLAN - > is there a recent change that caused this?
@composiohq đź‘€
a
Hey, after testing the tool internally, we found that plan creation works better when integrated directly with the search tool and have removed it. The search tool improvement is work in progress and will be live soon. Sorry for not sending out a notice on this change.
d
Hey Abhishek, I appreciate the update, but I have to be honest removing a tool that’s already being used in active workflows before the replacement is ready feels quite unprofessional. I understand it’s still experimental, but some level of versioning or deprecation notice is really important for those depending on it. We need to be able to rely on consistent interfaces, or at least have a proper migration path when changes like this happen. Can you please clarify if there’s a way to re-enable the previous version or a timeline for when the new version will be ready?