call-tool
Execute tools from any MCP server to bypass tool limits and reduce AI errors by accessing specific functionality when needed.
Instructions
Call a specific tool from a specific server
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| serverName | Yes | Name of the MCP server to call tool from | |
| toolName | Yes | Name of the tool to call | |
| toolArgs | Yes | Arguments to pass to the tool |
Implementation Reference
- src/index.ts:91-121 (handler)Handler function that executes the 'call-tool' logic: parses arguments, calls serverManager.callTool on the specified server and tool, and returns the result as JSON or an error message.async (args, extra) => { try { const { serverName, toolName, toolArgs } = args; const result = await serverManager.callTool( serverName, toolName, toolArgs ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Tool call failed: ${ (error as Error).message }`, }, ], isError: true, }; } }
- src/types.ts:27-35 (schema)Zod schema defining the input parameters for the 'call-tool' tool: serverName (string), toolName (string), toolArgs (record of unknown).export const CallToolParamsSchema = z.object({ serverName: z .string() .describe("Name of the MCP server to call tool from"), toolName: z.string().describe("Name of the tool to call"), toolArgs: z .record(z.unknown()) .describe("Arguments to pass to the tool"), });
- src/index.ts:83-122 (registration)Registration of the 'call-tool' tool on the MCP server using server.tool(), specifying name, description, schema (referencing CallToolParamsSchema), and handler function.server.tool( "call-tool", "Call a specific tool from a specific server", { serverName: CallToolParamsSchema.shape.serverName, toolName: CallToolParamsSchema.shape.toolName, toolArgs: CallToolParamsSchema.shape.toolArgs, }, async (args, extra) => { try { const { serverName, toolName, toolArgs } = args; const result = await serverManager.callTool( serverName, toolName, toolArgs ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Tool call failed: ${ (error as Error).message }`, }, ], isError: true, }; } } );
- src/server-manager.ts:205-215 (helper)Supporting method in McpServerManager that proxies the tool call to the underlying MCP Client instance for the given server.async callTool( serverName: string, toolName: string, args: Record<string, unknown> ): Promise<any> { const client = this.getClient(serverName); return await client.callTool({ name: toolName, arguments: args, }); }