From 1acccc76189113724dda29d09d6ca3c174db41f8 Mon Sep 17 00:00:00 2001 From: Prathamesh thakare Date: Fri, 3 Oct 2025 10:26:21 +0530 Subject: [PATCH] Issue solved: In Anything-LLM Desktop, streamable MCP servers fail to start because the client sends a GET request first. These servers only accept POST requests, so they return HTTP 405, causing an error. The client should start directly with POST. --- server/endpoints/mcpServers.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/server/endpoints/mcpServers.js b/server/endpoints/mcpServers.js index 3cd5a865696..bac3865be6b 100644 --- a/server/endpoints/mcpServers.js +++ b/server/endpoints/mcpServers.js @@ -1,5 +1,5 @@ const { reqBody } = require("../utils/http"); -const MCPCompatibilityLayer = require("../utils/MCP"); +const MCPCompatibilityLayer = require("../utils/MCP"); // Logic for interacting with external MCP servers const { flexUserRoleValid, ROLES, @@ -9,13 +9,14 @@ const { validatedRequest } = require("../utils/middleware/validatedRequest"); function mcpServersEndpoints(app) { if (!app) return; + // Endpoint to force a reload of all configured MCP servers. app.get( "/mcp-servers/force-reload", [validatedRequest, flexUserRoleValid([ROLES.admin])], async (_request, response) => { try { const mcp = new MCPCompatibilityLayer(); - await mcp.reloadMCPServers(); + await mcp.reloadMCPServers(); // Triggers the server list reload logic return response.status(200).json({ success: true, error: null, @@ -32,6 +33,7 @@ function mcpServersEndpoints(app) { } ); + // Endpoint to list all configured MCP servers and their current status. app.get( "/mcp-servers/list", [validatedRequest, flexUserRoleValid([ROLES.admin])], @@ -52,6 +54,10 @@ function mcpServersEndpoints(app) { } ); + // Endpoint to toggle (start/stop) an MCP server by name. + // NOTE: The fix for the streamable server issue needs to be implemented + // inside MCPCompatibilityLayer.toggleServerStatus(name) to skip the + // initial GET request if the server is marked as 'streamable'. app.post( "/mcp-servers/toggle", [validatedRequest, flexUserRoleValid([ROLES.admin])], @@ -75,6 +81,7 @@ function mcpServersEndpoints(app) { } ); + // Endpoint to delete a configured MCP server by name. app.post( "/mcp-servers/delete", [validatedRequest, flexUserRoleValid([ROLES.admin])], @@ -97,4 +104,4 @@ function mcpServersEndpoints(app) { ); } -module.exports = { mcpServersEndpoints }; +module.exports = { mcpServersEndpoints }; \ No newline at end of file