MCP Tools getting called as a tool function rather...
# support
c
Our MCP tools were working very well up until a few days ago, and now we are getting error: MCP error -32603: Tool not found It seems like its not listing the available tools in the MCP server. It is calling them as a regular function
v
Thank you for the details. To help diagnose the "Tool not found" error, could you confirm if there have been any recent changes to your MCP tool configuration or the MCP server URL in your assistant setup? Even a small change can affect tool discovery. If possible, please double-check that the MCP tool is still correctly added to your assistant and that the server URL is valid and accessible, as described in the [MCP integration documentation](https://docs.vapi.ai/tools/mcp). Let me know if anything was recently updated or changed in your configuration. Source: - [MCP integration documentation](https://docs.vapi.ai/tools/mcp)
c
Working Call ID: 0199be9c-bcaf-7bb6-8f5e-0dd71eaf2855 Example error call ID: 019a81b5-914d-7dd5-a8aa-109938ecbc22 019a81a5-9e51-7dd3-8ebc-2f7ee8864849 Now: { "role": "tool_calls", "time": 1763112777925, "message": "", "toolCalls": [ { "id": "call_nLK4kKIop16VAKP1OV60fijO", "type": "function", "function": { "name": "mcpTools", "arguments": "{}" } } ], "secondsFromStart": 23.785 }, { "name": "mcpTools", "role": "tool_call_result", "time": 1763112779524, "result": "{\"error\": \"MCP error -32603: Tool not found\"}", "toolCallId": "call_nLK4kKIop16VAKP1OV60fijO", "secondsFromStart": 25.384 } Before (working): { "role": "tool_calls", "time": 1759839620598, "message": "", "toolCalls": [ { "id": "call_q219ebYUE9WysDk1oqMVJxUX", "type": "function", "function": { "name": "n8n-Send_SMS_to_Customer", "arguments": "{\n \"golf_course_name\": \"Red Barn Golf Course\",\n \"message_action\": \"Here's the link to book a TopTracer bay online. You can reserve by the hour, and each bay accommodates up to 8 players. Visit our website to book your time!\",\n \"customer_phone_number\": \"16504415689\",\n \"customer_name\": \"Chris\"\n}" } } ], "secondsFromStart": 51.417 }, { "name": "n8n-Send_SMS_to_Customer", "role": "tool_call_result", "time": 1759839622180, "result": "[\n {\n \"type\": \"text\",\n \"text\": \"[{\\\"message\\\":\\\"Workflow was started\\\"}]\"\n }\n]", "toolCallId": "call_q219ebYUE9WysDk1oqMVJxUX", "secondsFromStart": 52.999 }
I've tested using the official MCP tool inspector and its working as expected. No change in our MCP tool setup
Update: Its only working if I put the actual tool name (that's in the MCP tool list) and define the tool name and arguments in the prompt! However, this completely defeats the purpose of using MCP servers!
I've tested with different MCP server configurations - n8n and a custom Node MCP server - same issue
m
It sounds like the assistant isn’t detecting your MCP tool list anymore, which is why every call is falling back to the generic mcpTools function. This usually points to a handshake issue where the MCP server isn’t returning its tools during initialization. I can help you verify the handshake, inspect the server’s capabilities response, and confirm whether the tools array is being exposed correctly. Quick question: when you connect directly to the MCP server, does it return the full tools list in the initialize payload? Share that part of the log and I can trace exactly where the breakdown is happening. @Chris
c
@Manja manna Thank you for your reply. We are returning: "protocolVersion": "2024-11-05", "capabilities": { "tools": { "listChanged": true } }, "serverInfo": { "name": "courserev-mcp-sms-action-tools", "version": "1.0.0" } } However, according to MCP protocol - the tools are never returned in the original initialization - only after a list/tools is called: https://modelcontextprotocol.io/specification/2025-06-18/server/tools This is our MCP server: https://courserev-mcp-sms-action-tools-prod-v1-us-1001486881949.us-east1.run.app/mcp
m
Thanks for the update. Your server is initializing correctly, but the assistant isn’t firing the tools/list call anymore, which is why everything falls back to the generic mcpTools function. I can help troubleshoot this by checking the full handshake, testing your tools/list response directly, and confirming the tool schema matches what the assistant expects. I’ll also review the assistant’s configuration to see why auto-discovery stopped. If you want, we can take this privately and walk through it together so we can get it fixed quickly. @Chris
c
@Manja manna ok great let's continue in private message
c
Hi Chris, To integrate MCP tools with your AI services, you can connect your client to the Vapi MCP server. Here are some key steps: 1. **Setup**: - Get your API key from the Vapi dashboard. - Configure your client with this API key for authentication. 2. **Connecting to MCP Server**: - Use either streamable-HTTP or SSE for connecting to the server: - **Streamable-HTTP**:
https://mcp.vapi.ai/mcp
- **SSE**:
https://mcp.vapi.ai/sse
- Pass your API key as a bearer token in the headers. 3. **Using MCP with Clients**: - For Node.js, you can use the
@modelcontextprotocol/sdk
for interfacing with the MCP. - Use the
Client
class to connect, list tools, and perform actions such as creating calls or listing assistants. 4. **Example Integration**: - For connecting and listing available tools, use the code snippet provided in the [Vapi MCP Server documentation](https://docs.vapi.ai/sdk/mcp-server). This setup should help you manage assistants, automate voice tasks, and efficiently use Vapi tools with MCP.
c
No, we are trying to use the reverse - to have Vapi connect to our MCP tools for a Vapi Assistant
c
Please try running another test call with your MCP server tool. There was an update with a fix that addresses some issues with MCP connections
r
@kyle @Vapi @Vapi Support Bot Hi, I’m facing an issue while connecting an MCP client using mcptool over the SHTTP protocol. Whenever I send a message to the /mcp endpoint, the client makes three sequential requests: The first request has the method initialize The second request has the method notifications/initialized The third request has the method tools/list This entire sequence is triggered every time a message is sent from the assistant or a tool is invoked. Below is the request-handling code I am currently using: public async Task HandleRequest(HttpContext ctx) { var body = await new StreamReader(ctx.Request.Body).ReadToEndAsync(); var request = JsonSerializer.Deserialize(body); // Log the request method and headers var callId = ctx.Request.Headers["X-Call-Id"].FirstOrDefault(); var chatId = ctx.Request.Headers["X-Chat-Id"].FirstOrDefault(); Console.WriteLine($"MCP Request: {request.method} (Call: {callId}, Chat: {chatId})"); object response = request.method switch { "initialize" => HandleInitialize(request), "notifications/initialized" => HandleInitialized(request), "tools/list" => HandleToolsList(request), "tools/call" => await HandleToolCall(request), _ => CreateErrorResponse(request.id, -32601, "Method not found") }; // Notifications do not require a response if (request.method.StartsWith("notifications/")) { ctx.Response.StatusCode = 200; return; } ctx.Response.StatusCode = 200; ctx.Response.ContentType = "application/json"; await ctx.Response.WriteAsJsonAsync(response); } I would appreciate clarification on whether this repeated initialization and tool discovery behavior is expected when using mcptool with SHTTP, and if there is a recommended way to avoid re-running this sequence for every message.
v
This repeated initialization and tool discovery sequence is expected when using MCP tools with Vapi over SHTTP. Each tool invocation creates a new connection, triggering the
initialize
,
notifications/initialized
, and
tools/list
requests every time. There is currently no supported way to avoid this sequence—it's part of how Vapi dynamically discovers and injects tools for each call or chat session. Reference: See the "How MCP Works" section in the documentation for more details. Source: - [MCP Tool Integration Documentation](https://docs.vapi.ai/tools/mcp)
c
Let us know if you need further assistance
3 Views