When to use HTTP transport
Most users should stick with stdio. Use HTTP when your client requires it or when you need network access.
Enabling HTTP transport
Set theTRANSPORT environment variable to http:
--transport CLI flag:
Configuration
Custom listen address
To change the port or bind to a specific interface:Bearer authentication
When HTTP transport is enabled, Isthmus requires a bearer token. Every request to the/mcp endpoint must include an Authorization header with the token:
Setting the token
Set the bearer token via environment variable or CLI flag:How it works
- The token is compared using constant-time comparison (
crypto/subtle.ConstantTimeCompare) to prevent timing attacks - Requests with a missing, malformed, or incorrect
Authorizationheader receive401 Unauthorized - Only the
Bearerscheme is accepted —Basic,Digest, and other schemes are rejected - Health check endpoints (
/healthand/ready) are not behind bearer auth — orchestrators need unauthenticated access to these
Generating a secure token
Use a cryptographically random token:Health check endpoints
When running in HTTP mode, Isthmus exposes two unauthenticated health check endpoints for container orchestrators (Kubernetes, ECS, Docker Compose):Kubernetes example
Server hardening
The HTTP server includes production-grade timeouts and error handling:MCP client configuration
Clients that support HTTP
For MCP clients that support the Streamable HTTP transport, point them at the Isthmus HTTP endpoint with the bearer token in the headers:Running Isthmus separately
With HTTP transport, Isthmus runs as a standalone process — not as a subprocess of the MCP client. Start it in a terminal or as a system service:Streamable HTTP
Isthmus uses the Streamable HTTP transport from the MCP specification. This is a modern HTTP-based transport that supports:- Standard HTTP request/response for tool calls
- Server-Sent Events (SSE) for streaming responses
- Session management for stateful interactions
Graceful shutdown
The HTTP server shuts down gracefully onSIGTERM or SIGINT:
- Stops accepting new connections
- Waits up to 5 seconds for in-flight requests to complete
- Closes the listener
Feature parity
HTTP and stdio transports have full feature parity. All MCP tools, policy engine, column masking, SQL validation, audit logging, and OpenTelemetry work identically regardless of transport.Security considerations
When using HTTP transport, keep in mind:- Bearer auth is mandatory — Isthmus refuses to start in HTTP mode without a token
- Bind to localhost (
127.0.0.1) in development to prevent external access - Use TLS in production — bearer tokens are sent in plaintext over HTTP. Use a reverse proxy (nginx, Caddy, Envoy) for TLS termination, or tunnel through SSH
- Use a reverse proxy for rate limiting if Isthmus is exposed beyond localhost
- All other safety layers (SQL validation, read-only transactions, row limits, column masking) still apply regardless of transport