Install a Streamable HTTP MCP server

Streamable HTTP MCP servers run as remote services — you connect to them via a URL rather than running a local process. Examples include Supabase, PostHog, and other cloud-hosted MCP endpoints.


What is a Streamable HTTP server?

The MCP specification defines two transport types for servers:

  • stdio — a local process that your AI tool launches and communicates with over stdin/stdout. These are the most common type.
  • Streamable HTTP — a remote HTTP endpoint (previously called "HTTP/SSE"). Your AI tool connects to a URL and streams results over the connection. No local process needed.

Streamable HTTP servers are identified by a URL instead of a command. In a config file they look like:

{
  "mcpServers": {
    "supabase": {
      "url": "https://mcp.supabase.com/mcp"
    }
  }
}
Note on naming. The MCP spec renamed "HTTP/SSE transport" to "Streamable HTTP" in version 0.7 (early 2025). You may see both terms used interchangeably in documentation and tools. They refer to the same thing.

Step 1 — Find your server's URL

Providers that offer Streamable HTTP MCP servers publish their endpoint URL in their documentation. For example:

  • Supabase https://mcp.supabase.com/mcp (requires authorization header)
  • PostHoghttps://mcp.posthog.com/mcp

The URL may require an API key passed as a header. Check the provider's docs.

Step 2 — Install with MCPBolt (recommended)

The fastest way to install is with the MCPBolt menu bar app. Open it, click the paste bar, and paste the URL:

https://mcp.supabase.com/mcp

MCPBolt auto-detects that this is a Streamable HTTP server, picks a server name from the URL, and lets you select which tools to install it into. It writes the correct config for every tool you pick.

If the server requires an authorization header, paste the full JSON config instead (see Step 3 below).

Step 3 — Manual install (any tool)

If you prefer to edit config files manually, here is the correct format for each tool:

Claude Desktop / Cursor / Windsurf / Gemini CLI / Roo / opencode

File: ~/Library/Application Support/Claude/claude_desktop_config.json (for Claude Desktop) or the tool-specific path.

{
  "mcpServers": {
    "supabase": {
      "url": "https://mcp.supabase.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Claude Code (project scope)

File: .mcp.json in your project root. Same format as Claude Desktop.

VS Code

File: .vscode/mcp.json (project) or VS Code user settings.

{
  "servers": {
    "supabase": {
      "type": "http",
      "url": "https://mcp.supabase.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN"
      }
    }
  }
}

Zed

Add to Zed's settings.json under context_servers:

{
  "context_servers": {
    "supabase": {
      "url": "https://mcp.supabase.com/mcp",
      "settings": {}
    }
  }
}

Codex CLI

File: ~/.codex/config.toml

[[mcp_servers]]
name = "supabase"
url = "https://mcp.supabase.com/mcp"

Continue

File: ~/.continue/config.yaml

mcpServers:
  - name: supabase
    url: https://mcp.supabase.com/mcp

Troubleshooting

  • 401 Unauthorized — The server requires authentication. Add your API key as an Authorization header.
  • Connection refused / timeout — The URL may be incorrect, or the service may be temporarily unavailable. Check the provider's status page.
  • Server shows red in MCPBolt — The health check failed. This usually means the URL is reachable but the server returned an error, often a missing auth header.
💡
Use the converter. Not sure what format your config needs to be in? Try the MCPBolt Config Converter — paste the URL and get the right format for every tool instantly.