Documentation Index
Fetch the complete documentation index at: https://docs.getbifrost.ai/llms.txt
Use this file to discover all available pages before exploring further.
This feature is only available on
v1.4.0-prerelease1 and above.This feature is only available in the Gateway deployment. It is not available when using Bifrost as a Go SDK.
Overview
Bifrost can act as an MCP server, exposing all your connected MCP tools to external MCP clients like Claude Desktop, Cursor, or any other MCP-compatible application. This enables a powerful pattern:- Connect Bifrost to multiple MCP servers (filesystem, web search, databases, etc.)
- Expose all those tools through a single MCP endpoint
- External clients connect to Bifrost and get access to all aggregated tools
Endpoints
| Endpoint | Method | Purpose |
|---|---|---|
/mcp | POST | JSON-RPC 2.0 messages for tool discovery and execution |
/mcp | GET | Server-Sent Events (SSE) for persistent connections |
POST /mcp (JSON-RPC)
Handle JSON-RPC 2.0 messages for tool listing and execution:GET /mcp (SSE)
Establish a persistent SSE connection for real-time communication:connection/openedmessage on connect- Keeps connection alive until client disconnects
External MCP Client Integration
The/mcp endpoint supports any MCP-compatible client that can communicate via HTTP or SSE:
- Claude Desktop - macOS and Windows desktop application
- Cursor - IDE with MCP support
- Custom Applications - Any app implementing the MCP protocol
- Browser Extensions - Tools with MCP client capability
Virtual Key Authentication
Bifrost supports per-Virtual Key MCP servers, allowing you to expose different tools to different clients.Global Server (No Virtual Key)
Whenenforce_auth_on_inference is false, requests without a Virtual Key use the global MCP server with all available tools.
Virtual Key-Specific Servers
When using Virtual Keys, each VK gets its own MCP server with filtered tools based on its configuration. Authenticate with Virtual Key:Tool Filtering for MCP Clients
Control which tools are exposed to MCP clients using Virtual Keys:Per-Virtual Key Tool Access
Configure which tools each Virtual Key can access:Tool Auto-Execution Is Client-Side in Gateway Mode
Thetools_to_auto_execute field on an MCP client config controls whether Bifrost auto-runs a tool call vs. surfacing it for manual approval. This setting only applies in Agent Mode — when Bifrost is also running the LLM loop and gating tool calls between model turns.
When you use Bifrost purely as an MCP Gateway (the setup this page covers — Claude Desktop, Cursor, Cline, or any other MCP host connecting to Bifrost over /mcp), Bifrost has no LLM loop and no concept of “auto-execute vs. wait for approval.” Bifrost just exposes tools over the MCP protocol; the host application is the one running the agent loop, deciding whether each tools/call requires user confirmation, and surfacing the approval UI.
Configure the auto-approval policy in your MCP client’s own settings:
- Claude Desktop: tool-approval is per-tool in the host’s settings.
- Cursor / Cline / Continue: each has its own “auto-approve” or “trust” lists in the MCP integration config.
- Custom MCP hosts: the SDK you’re using (mark3labs/mcp-go, @modelcontextprotocol/sdk-typescript, etc.) typically exposes a callback for tool-call confirmation that you wire up yourself.
tools_to_auto_execute set on the Bifrost MCP client config will be silently ignored in gateway mode — it isn’t an error, just a no-op.
Advanced Gateway Features
Health Monitoring
Bifrost automatically monitors the health of connected MCP clients: How it works:- Ping Mechanism: Every 10 seconds (configurable), sends a ping to each connected client
- Check Timeout: Each ping has a 5-second timeout
- Failure Threshold: After 5 consecutive failed pings, client is marked as
disconnected - State Tracking: Real-time state updates (connected ↔ disconnected)
- Manual Reconnection: Once disconnected, requires manual reconnect via API or UI
Request ID Tracking
For Agent Mode operations, Bifrost can track intermediate tool executions:Dynamic Tool Discovery
Tools are discovered from MCP servers during:- Client Connection - Initial ListTools request
- Runtime Updates - When server tool list changes
- Configuration Changes - When tools_to_execute is updated
Per-User Auth on the Gateway
When at least one upstream MCP server is configured withper_user_oauth or per_user_headers, the /mcp endpoint serves per-user credentials lazily. Bifrost is not an OAuth Authorization Server — there is no .well-known/oauth-protected-resource discovery and no inbound consent screen. Inbound MCP clients identify themselves via headers:
x-bf-vk: <vk>(orAuthorization: Bearer <vk>/x-api-key: <vk>) — VK-mode identityx-bf-mcp-session-id: <opaque-string>— session-mode identity (client-asserted, must be re-sent on every call)- Enterprise SSO — user-mode identity, attached automatically by the auth middleware
mcp_auth_required tool result with an inline URL the user must visit. The payload carries a kind discriminator:
kind: "oauth"→authorize_urlpoints at the upstream provider’s consent page (via a Bifrost intermediate)kind: "headers"→submit_urlpoints at a Bifrost form where the user enters their header values
- User-mode flows require the bound SSO user — anyone else opening the URL gets a
403. User-owned VKs auto-promote to user-mode. - VK-mode and session-mode flows are openable by anyone holding the URL. By default they still require a Bifrost dashboard session in the browser; turn on
mcp_enable_temp_token_authto let anonymous browsers complete them via a short-lived#t=<temp-token>URL fragment.
Claude Code may proactively POST
/register (RFC 7591 DCR) on claude mcp add and log SDK auth failed: …. Bifrost intentionally does not implement an OAuth stub for that probe; the /mcp connection itself works. See the Claude Code bug report for context.Public URL configuration when behind a proxy
The URLs Bifrost surfaces (consent pages, header-submission pages, and theredirect_uri it registers with upstream OAuth providers) are derived from the request’s Host header by default. Behind a reverse proxy, that’s the proxy’s internal address rather than its public one. Override with:
mcp_external_client_url— what Bifrost registers as theredirect_uriwith upstream OAuth providers
Recommended: disable auto tool injection
When Bifrost serves both inbound LLM requests and acts as an upstream MCP server (this page), the same tools can end up being injected twice — once because the LLM Gateway auto-includes every configured MCP tool on every inference request, and once because the inbound MCP client itself fetched the tool list from/mcp. The model sees the same tool name from two sources and may behave erratically (duplicate tool calls, refusal, or confused arguments).
Turn Disable Auto Tool Injection on in your client config. MCP tools will then only be attached to inference requests when the caller explicitly opts in via the x-bf-mcp-include-tools request header (and the calling Virtual Key still has to allow them). Outbound MCP clients (Claude Desktop, Cursor, etc.) keep working because they discover tools through /mcp directly.
- Web UI
- API
- config.json
- Navigate to Settings → MCP in the sidebar
- Toggle Disable Auto Tool Injection on
- Click Save

Security Considerations
1. Enable Virtual Key Enforcement
Always enableenforce_auth_on_inference in production:
2. Use HTTPS
Deploy Bifrost behind a reverse proxy (nginx, Cloudflare, etc.) with TLS enabled:3. Limit Tool Access
Use Virtual Keys to limit which tools each client can access. Follow the principle of least privilege.4. Network Restrictions
Consider network-level restrictions to limit which IPs can access the MCP endpoint.Troubleshooting
No tools showing up
No tools showing up
- Verify MCP clients are connected in Bifrost
- Check that
tools_to_executeincludes the expected tools - If using Virtual Keys, verify the VK has MCP tool access configured
Virtual Key authentication failing
Virtual Key authentication failing
- Ensure the Virtual Key exists and is active
- Check the header format (Bearer prefix for Authorization)
- Verify
enforce_auth_on_inferencesetting matches your setup
Next Steps
Tool Filtering
Control which tools are available per request
Virtual Key MCP Tools
Configure per-VK tool access

