My Custom MCP Server Won’t Connect — I’m Using an SSE Endpoint and Getting “Tools Are Unavailable”
Last updated: April 14, 2026
This happens when your custom MCP server uses the older SSE (Server-Sent Events) transport instead of Streamable HTTP. Gumloop connects to custom MCP servers exclusively over Streamable HTTP, so an SSE-only endpoint will fail to connect. Switch your server to expose a Streamable HTTP endpoint (typically
/mcp) and update the URL in Gumloop.
Symptoms
You see
The following MCP servers could not be connected and their tools are unavailable: [server_name]. Do not attempt to use tools from these servers.The connection shows "indexing" for a long time and then fails.
Your server's
/sseendpoint returns 200 when tested directly (e.g., via curl or browser), but Gumloop still can't connect.You're using a gateway or wrapper (e.g., Supergateway, mcp-proxy) configured with
--outputTransport sse.
Cause
Gumloop connects to custom MCP servers using the Streamable HTTP transport, which communicates via POST requests carrying JSON-RPC payloads. The older SSE transport uses GET requests to establish a long-lived event stream — these two protocols are incompatible at the HTTP method level.
When Gumloop tries to connect to an SSE endpoint using Streamable HTTP, the handshake fails and the server is marked as unavailable. The "indexing" phase you see is Gumloop attempting to connect and retrieve the server's tool list — when the transport doesn't match, this times out after retries.
How to Fix It
Update your MCP server or gateway to use Streamable HTTP output.
If you're using Supergateway (v3.2+), change your startup command from
--outputTransport sseto--outputTransport streamableHttp. The endpoint will change from/sseto/mcpby default. You can customize the path with--streamableHttpPathif needed.If you're using another MCP gateway or proxy, check its documentation for Streamable HTTP support and update accordingly.
Example Supergateway command:
npx supergateway \ --stdio "node your-mcp-server.js" \ --outputTransport streamableHttp \ --port 8000 \ --corsUpdate the URL in Gumloop. Go to Settings → Credentials, find your custom MCP server credential, and change the URL from the old SSE path to the new Streamable HTTP path — for example, from
https://your-server.com/ssetohttps://your-server.com/mcp.Configure authentication. You have two options:
Put your token in the Access Token / API Key field — Gumloop automatically sends it as an
Authorization: Bearer <token>header.Or use the Additional Header field in
Header-Name: valueformat (e.g.,Authorization: Bearer your-token-here).
Click Connect to save the updated credential.
How Do I Know It Worked?
The credential saves without error.
When you open an agent chat with this MCP server attached, the tools appear in the agent's available tools and you no longer see the "could not be connected" warning.
You can ask your agent to "list available tools" and it should return the tools from your custom server.
Common Gotchas
Supergateway version: Streamable HTTP output requires Supergateway v3.2 or later. Run
npx supergateway --versionto check.HTTPS required: Your server must be accessible over HTTPS. HTTP connections are rejected.
Publicly accessible: Your server must be reachable from the internet —
localhostand private network URLs won't work. If you need to expose a local server, use a tunneling service like ngrok or Cloudflare Tunnels.Anthropic models and custom headers: If you're using Claude models, note that Anthropic's native MCP execution does not forward custom headers set in the Additional Header field. Use the Access Token / API Key field instead, or switch to OpenAI, Gemini, or Groq models. See the header handling table in the docs for details.
Related Docs
Still Need Help?
If this didn't resolve your issue, reach out to support at support@gumloop.com.