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 /sse endpoint 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

  1. Update your MCP server or gateway to use Streamable HTTP output.

    • If you're using Supergateway (v3.2+), change your startup command from --outputTransport sse to --outputTransport streamableHttp. The endpoint will change from /sse to /mcp by default. You can customize the path with --streamableHttpPath if 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 \
      --cors
  2. Update 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/sse to https://your-server.com/mcp.

  3. 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: value format (e.g., Authorization: Bearer your-token-here).

  4. 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 --version to check.

  • HTTPS required: Your server must be accessible over HTTPS. HTTP connections are rejected.

  • Publicly accessible: Your server must be reachable from the internet — localhost and 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.