From c254c61935e0811afbe383741d3dd03ef3cd3c8c Mon Sep 17 00:00:00 2001 From: MQ Date: Tue, 22 Apr 2025 22:02:09 +0200 Subject: [PATCH] add tool call timeout --- src/mcp/const.ts | 1 + src/mcp/server.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mcp/const.ts b/src/mcp/const.ts index a3cba339..f0aa3d91 100644 --- a/src/mcp/const.ts +++ b/src/mcp/const.ts @@ -1,2 +1,3 @@ export const MAX_TOOL_NAME_LENGTH = 64; export const SERVER_ID_LENGTH = 8; +export const EXTERNAL_TOOL_CALL_TIMEOUT_MSEC = 120_000; // 2 minutes diff --git a/src/mcp/server.ts b/src/mcp/server.ts index 8e1e6633..57da0caf 100644 --- a/src/mcp/server.ts +++ b/src/mcp/server.ts @@ -5,7 +5,7 @@ import type { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js'; -import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'; +import { CallToolRequestSchema, CallToolResultSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'; import type { ActorCallOptions } from 'apify-client'; import log from '@apify/log'; @@ -28,6 +28,7 @@ import { import { actorNameToToolName } from '../tools/utils.js'; import type { ActorMCPTool, ActorTool, HelperTool, ToolWrap } from '../types.js'; import { createMCPClient } from './client.js'; +import { EXTERNAL_TOOL_CALL_TIMEOUT_MSEC } from './const.js'; import { processParamsGetTools } from './utils.js'; type ActorsMcpServerOptions = { @@ -223,6 +224,8 @@ export class ActorsMcpServer { const res = await client.callTool({ name: serverTool.originToolName, arguments: args, + }, CallToolResultSchema, { + timeout: EXTERNAL_TOOL_CALL_TIMEOUT_MSEC, }); return { ...res };