> ## 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.

# Add MCP client

> Adds a new MCP client with the specified configuration.
Note: tool_pricing is not available when creating a new client as tools are fetched after client creation.




## OpenAPI

````yaml /openapi/openapi.json post /api/mcp/client
openapi: 3.1.0
info:
  title: Bifrost API
  description: >
    Bifrost HTTP Transport API for AI model inference and gateway management.


    This API provides a unified interface for interacting with multiple AI
    providers

    including OpenAI, Anthropic, Bedrock, Gemini, and more through a single API,

    along with comprehensive management APIs for configuring and monitoring the
    gateway.


    ## API Structure


    ### Unified Inference API (`/v1/*`)

    The primary API using Bifrost's unified format. Model parameters use the
    format

    `provider/model` (e.g., `openai/gpt-4`, `anthropic/claude-3-opus`).


    ### Async Inference API (`/v1/async/*`)

    Submit inference requests for asynchronous execution. Returns a job ID
    immediately

    and allows polling for results. Supports all inference types except batches,
    files,

    and containers.


    ### Provider Integration APIs

    Native provider-format APIs for drop-in compatibility:

    - `/openai/*` - OpenAI-compatible API

    - `/anthropic/*` - Anthropic-compatible API

    - `/genai/*` - Google GenAI (Gemini) compatible API

    - `/bedrock/*` - AWS Bedrock compatible API

    - `/cohere/*` - Cohere compatible API


    ### Framework Integration APIs

    Multi-provider proxy endpoints for AI frameworks:

    - `/litellm/*` - LiteLLM proxy with all provider formats

    - `/langchain/*` - LangChain compatible endpoints

    - `/pydanticai/*` - PydanticAI compatible endpoints


    ### Management APIs (`/api/*`)

    APIs for managing and monitoring the Bifrost gateway:

    - `/api/config` - Configuration management

    - `/api/providers` - Provider and API key management

    - `/api/plugins` - Plugin management

    - `/api/governance/*` - Virtual keys, teams, customers, budgets, rate
    limits, routing rules, and pricing overrides

    - `/api/logs` - Log search and analytics

    - `/api/mcp/*` - MCP (Model Context Protocol) client management

    - `/api/session/*` - Authentication and session management

    - `/api/cache/*` - Cache management

    - `/health` - Health check endpoint


    ## Fallbacks

    Requests can include fallback models that will be tried if the primary model
    fails.
  version: 1.0.0
  contact:
    name: Contact Us
    url: https://getmaxim.ai/bifrost
  license:
    name: Apache 2.0
    url: https://opensource.org/licenses/Apache-2.0
servers:
  - url: '{baseUrl}'
    description: Your Bifrost instance
    variables:
      baseUrl:
        default: http://localhost:8080
        description: Base URL of your Bifrost instance (e.g. https://bifrost.mycompany.com)
security:
  - BearerAuth: []
  - BasicAuth: []
  - ApiKeyAuth: []
tags:
  - name: Models
    description: Model listing and information
  - name: Chat Completions
    description: Chat-based text generation
  - name: Text Completions
    description: Text completion generation
  - name: Responses
    description: OpenAI Responses API compatible endpoints
  - name: OCR
    description: Optical character recognition for documents and images
  - name: Rerank
    description: Document reranking by relevance to a query
  - name: Embeddings
    description: Text embedding generation
  - name: Images
    description: Image generations, editing, and variations
  - name: Videos
    description: Video generation and management
  - name: Audio
    description: Speech synthesis and transcription
  - name: Count Tokens
    description: Token counting utilities
  - name: Batch
    description: Batch processing operations
  - name: Files
    description: File management operations
  - name: Containers
    description: Container management operations
  - name: Async Jobs
    description: Asynchronous job submission and retrieval endpoints
  - name: OpenAI Integration
    description: OpenAI-compatible API endpoints (/openai/*)
  - name: Azure Integration
    description: Azure OpenAI integration endpoints
  - name: Anthropic Integration
    description: Anthropic-compatible API endpoints (/anthropic/*)
  - name: GenAI Integration
    description: Google GenAI (Gemini) compatible API endpoints (/genai/*)
  - name: Bedrock Integration
    description: AWS Bedrock compatible API endpoints (/bedrock/*)
  - name: Cohere Integration
    description: Cohere compatible API endpoints (/cohere/*)
  - name: LiteLLM Integration
    description: LiteLLM proxy endpoints with multi-provider support (/litellm/*)
  - name: LangChain Integration
    description: LangChain compatible endpoints with multi-provider support (/langchain/*)
  - name: PydanticAI Integration
    description: >-
      PydanticAI compatible endpoints with multi-provider support
      (/pydanticai/*)
  - name: Health
    description: Health check endpoints
  - name: Configuration
    description: Configuration management endpoints
  - name: Session
    description: Session and authentication endpoints
  - name: Providers
    description: Provider management endpoints
  - name: Plugins
    description: Plugin management endpoints
  - name: MCP
    description: Model Context Protocol endpoints
  - name: Governance
    description: Virtual keys, teams, and customers management
  - name: Logging
    description: Log search and management endpoints
  - name: Cache
    description: Cache management endpoints
paths:
  /api/mcp/client:
    post:
      tags:
        - MCP
      summary: Add MCP client
      description: >
        Adds a new MCP client with the specified configuration.

        Note: tool_pricing is not available when creating a new client as tools
        are fetched after client creation.
      operationId: addMCPClient
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - allOf:
                    - type: object
                      required:
                        - name
                        - connection_type
                      properties:
                        client_id:
                          type: string
                          description: >-
                            Unique identifier for the MCP client (optional,
                            auto-generated if not provided)
                        name:
                          type: string
                          description: Display name for the MCP client
                        is_code_mode_client:
                          type: boolean
                        is_ping_available:
                          type: boolean
                          default: true
                          description: >
                            Whether the MCP server supports ping for health
                            checks.

                            If true, uses lightweight ping method for health
                            checks.

                            If false, uses listTools method for health checks
                            instead.
                        connection_type:
                          type: string
                          enum:
                            - http
                            - stdio
                            - sse
                            - inprocess
                          description: Connection type for MCP client
                        auth_type:
                          type: string
                          enum:
                            - none
                            - headers
                            - oauth
                            - per_user_oauth
                          description: Authentication type for the MCP connection
                        oauth_config_id:
                          type: string
                          description: >
                            OAuth config ID for OAuth authentication.

                            Set after OAuth flow is completed. References the
                            oauth_configs table.

                            Only relevant when auth_type is "oauth".
                        headers:
                          type: object
                          additionalProperties:
                            type: string
                          description: |
                            Custom headers to include in requests.
                            Only used when auth_type is "headers".
                        oauth_config:
                          $ref: '#/components/schemas/OAuthConfigRequest'
                          description: >
                            OAuth configuration for initiating OAuth flow.

                            Only include this when creating a client with
                            auth_type "oauth".

                            This will trigger the OAuth flow and return an
                            authorization URL.
                        tools_to_execute:
                          type: array
                          items:
                            type: string
                          description: >
                            Include-only list for tools.

                            ["*"] => all tools are included

                            [] => no tools are included

                            ["tool1", "tool2"] => include only the specified
                            tools
                        tools_to_auto_execute:
                          type: array
                          items:
                            type: string
                          description: >
                            List of tools that can be auto-executed without user
                            approval.

                            Must be a subset of tools_to_execute.

                            ["*"] => all executable tools can be auto-executed

                            [] => no tools are auto-executed

                            ["tool1", "tool2"] => only specified tools can be
                            auto-executed
                        allow_on_all_virtual_keys:
                          type: boolean
                          default: false
                          description: >
                            When true, this MCP client's tools are available to
                            all virtual keys by default,

                            without requiring an explicit virtual key
                            assignment.

                            An explicit virtual key config always overrides this
                            setting for that key.
                    - type: object
                      required:
                        - connection_string
                      properties:
                        connection_type:
                          type: string
                          enum:
                            - http
                        connection_string:
                          type: string
                          description: HTTP URL (required for HTTP connection type)
                - allOf:
                    - type: object
                      required:
                        - name
                        - connection_type
                      properties:
                        client_id:
                          type: string
                          description: >-
                            Unique identifier for the MCP client (optional,
                            auto-generated if not provided)
                        name:
                          type: string
                          description: Display name for the MCP client
                        is_code_mode_client:
                          type: boolean
                        is_ping_available:
                          type: boolean
                          default: true
                          description: >
                            Whether the MCP server supports ping for health
                            checks.

                            If true, uses lightweight ping method for health
                            checks.

                            If false, uses listTools method for health checks
                            instead.
                        connection_type:
                          type: string
                          enum:
                            - http
                            - stdio
                            - sse
                            - inprocess
                          description: Connection type for MCP client
                        auth_type:
                          type: string
                          enum:
                            - none
                            - headers
                            - oauth
                            - per_user_oauth
                          description: Authentication type for the MCP connection
                        oauth_config_id:
                          type: string
                          description: >
                            OAuth config ID for OAuth authentication.

                            Set after OAuth flow is completed. References the
                            oauth_configs table.

                            Only relevant when auth_type is "oauth".
                        headers:
                          type: object
                          additionalProperties:
                            type: string
                          description: |
                            Custom headers to include in requests.
                            Only used when auth_type is "headers".
                        oauth_config:
                          $ref: '#/components/schemas/OAuthConfigRequest'
                          description: >
                            OAuth configuration for initiating OAuth flow.

                            Only include this when creating a client with
                            auth_type "oauth".

                            This will trigger the OAuth flow and return an
                            authorization URL.
                        tools_to_execute:
                          type: array
                          items:
                            type: string
                          description: >
                            Include-only list for tools.

                            ["*"] => all tools are included

                            [] => no tools are included

                            ["tool1", "tool2"] => include only the specified
                            tools
                        tools_to_auto_execute:
                          type: array
                          items:
                            type: string
                          description: >
                            List of tools that can be auto-executed without user
                            approval.

                            Must be a subset of tools_to_execute.

                            ["*"] => all executable tools can be auto-executed

                            [] => no tools are auto-executed

                            ["tool1", "tool2"] => only specified tools can be
                            auto-executed
                        allow_on_all_virtual_keys:
                          type: boolean
                          default: false
                          description: >
                            When true, this MCP client's tools are available to
                            all virtual keys by default,

                            without requiring an explicit virtual key
                            assignment.

                            An explicit virtual key config always overrides this
                            setting for that key.
                    - type: object
                      required:
                        - connection_string
                      properties:
                        connection_type:
                          type: string
                          enum:
                            - sse
                        connection_string:
                          type: string
                          description: SSE URL (required for SSE connection type)
                - allOf:
                    - type: object
                      required:
                        - name
                        - connection_type
                      properties:
                        client_id:
                          type: string
                          description: >-
                            Unique identifier for the MCP client (optional,
                            auto-generated if not provided)
                        name:
                          type: string
                          description: Display name for the MCP client
                        is_code_mode_client:
                          type: boolean
                        is_ping_available:
                          type: boolean
                          default: true
                          description: >
                            Whether the MCP server supports ping for health
                            checks.

                            If true, uses lightweight ping method for health
                            checks.

                            If false, uses listTools method for health checks
                            instead.
                        connection_type:
                          type: string
                          enum:
                            - http
                            - stdio
                            - sse
                            - inprocess
                          description: Connection type for MCP client
                        auth_type:
                          type: string
                          enum:
                            - none
                            - headers
                            - oauth
                            - per_user_oauth
                          description: Authentication type for the MCP connection
                        oauth_config_id:
                          type: string
                          description: >
                            OAuth config ID for OAuth authentication.

                            Set after OAuth flow is completed. References the
                            oauth_configs table.

                            Only relevant when auth_type is "oauth".
                        headers:
                          type: object
                          additionalProperties:
                            type: string
                          description: |
                            Custom headers to include in requests.
                            Only used when auth_type is "headers".
                        oauth_config:
                          $ref: '#/components/schemas/OAuthConfigRequest'
                          description: >
                            OAuth configuration for initiating OAuth flow.

                            Only include this when creating a client with
                            auth_type "oauth".

                            This will trigger the OAuth flow and return an
                            authorization URL.
                        tools_to_execute:
                          type: array
                          items:
                            type: string
                          description: >
                            Include-only list for tools.

                            ["*"] => all tools are included

                            [] => no tools are included

                            ["tool1", "tool2"] => include only the specified
                            tools
                        tools_to_auto_execute:
                          type: array
                          items:
                            type: string
                          description: >
                            List of tools that can be auto-executed without user
                            approval.

                            Must be a subset of tools_to_execute.

                            ["*"] => all executable tools can be auto-executed

                            [] => no tools are auto-executed

                            ["tool1", "tool2"] => only specified tools can be
                            auto-executed
                        allow_on_all_virtual_keys:
                          type: boolean
                          default: false
                          description: >
                            When true, this MCP client's tools are available to
                            all virtual keys by default,

                            without requiring an explicit virtual key
                            assignment.

                            An explicit virtual key config always overrides this
                            setting for that key.
                    - type: object
                      required:
                        - stdio_config
                      properties:
                        connection_type:
                          type: string
                          enum:
                            - stdio
                        stdio_config:
                          type: object
                          description: >-
                            STDIO configuration (required for STDIO connection
                            type)
                          properties:
                            command:
                              type: string
                              description: Executable command to run
                            args:
                              type: array
                              items:
                                type: string
                              description: Command line arguments
                            envs:
                              type: array
                              items:
                                type: string
                              description: Environment variables required
              discriminator:
                propertyName: connection_type
                mapping:
                  http: '#/MCPClientCreateRequestHTTP'
                  sse: '#/MCPClientCreateRequestSSE'
                  stdio: '#/MCPClientCreateRequestSTDIO'
              description: >
                MCP client configuration for creating a new client (tool_pricing
                not available at creation).

                The schema varies based on connection_type:

                - HTTP/SSE: connection_string is required

                - STDIO: stdio_config is required

                - InProcess: server instance must be provided programmatically
                (Go package only)
      responses:
        '200':
          description: MCP client added successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BifrostError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BifrostError'
components:
  schemas:
    OAuthConfigRequest:
      type: object
      description: OAuth configuration for MCP client creation
      properties:
        client_id:
          type: string
          description: >
            OAuth client ID. Optional if client supports dynamic client
            registration (RFC 7591).

            If not provided, the server_url must be set for OAuth discovery and
            dynamic registration.
        client_secret:
          type: string
          description: >
            OAuth client secret. Optional for public clients using PKCE or
            clients obtained via dynamic registration.
        authorize_url:
          type: string
          description: >
            OAuth authorization endpoint URL. Optional - will be discovered from
            server_url if not provided.
        token_url:
          type: string
          description: >
            OAuth token endpoint URL. Optional - will be discovered from
            server_url if not provided.
        registration_url:
          type: string
          description: >
            Dynamic client registration endpoint URL (RFC 7591). Optional - will
            be discovered from server_url if not provided.
        scopes:
          type: array
          items:
            type: string
          description: >
            OAuth scopes requested. Optional - can be discovered from server_url
            if not provided.

            Example: ["read", "write"]
    SuccessResponse:
      type: object
      description: Generic success response
      properties:
        status:
          type: string
          example: success
        message:
          type: string
          example: Operation completed successfully
    BifrostError:
      type: object
      description: Error response from Bifrost
      properties:
        event_id:
          type: string
        type:
          type: string
        is_bifrost_error:
          type: boolean
        status_code:
          type: integer
        error:
          $ref: '#/components/schemas/ErrorField'
        extra_fields:
          $ref: '#/components/schemas/BifrostErrorExtraFields'
    ErrorField:
      type: object
      properties:
        type:
          type: string
        code:
          type: string
        message:
          type: string
        param:
          type: string
        event_id:
          type: string
    BifrostErrorExtraFields:
      type: object
      properties:
        provider:
          $ref: '#/components/schemas/ModelProvider'
        model_requested:
          type: string
        request_type:
          type: string
    ModelProvider:
      type: string
      description: AI model provider identifier
      enum:
        - openai
        - azure
        - anthropic
        - bedrock
        - cohere
        - vertex
        - vllm
        - mistral
        - ollama
        - groq
        - sgl
        - parasail
        - perplexity
        - replicate
        - cerebras
        - gemini
        - openrouter
        - elevenlabs
        - huggingface
        - nebius
        - xai
        - runway
        - fireworks
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >
        Bearer token authentication. Use your provider API key or Bifrost
        authentication token.

        Virtual keys (prefixed with `sk-bf-`) can also be passed here.
    BasicAuth:
      type: http
      scheme: basic
      description: |
        Basic authentication using username and password.
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: |
        API key authentication via the `x-api-key` header.
        Virtual keys (prefixed with `sk-bf-`) can also be passed here.

````