v0

v0 mcpServers API

The mcpServers API from v0 — 3 operation(s) for mcpservers.

OpenAPI Specification

v0-mcpservers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: v0 App agent mcpServers API
  version: '0'
  description: Full stack vibe coding API
  termsOfService: https://vercel.com/legal/api-terms
servers:
- url: https://api.v0.dev/v1
tags:
- name: mcpServers
paths:
  /mcp-servers:
    get:
      summary: List MCP Servers
      description: Returns a list of connected MCP servers for the current user. Use this to check if an MCP preset is already connected.
      operationId: mcpServers.list
      tags:
      - mcpServers
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    mcpServerId:
                      type: string
                      description: Unique identifier for the MCP server
                    name:
                      type: string
                      description: Display name of the MCP server
                    url:
                      type: string
                      description: URL of the MCP server
                    description:
                      description: Description of the MCP server
                      type: string
                    enabled:
                      type: boolean
                      description: Whether the MCP server is enabled
                  required:
                  - mcpServerId
                  - name
                  - url
                  - enabled
                  additionalProperties: false
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictError'
        '413':
          description: Payload Too Large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeError'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      security:
      - apiKey: []
  /mcp-servers/{mcpServerId}:
    get:
      summary: Get MCP Server
      description: Retrieves the details of a specific MCP server by its ID.
      operationId: mcpServers.getById
      tags:
      - mcpServers
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    const: mcp_server
                    description: The object type.
                  id:
                    type: string
                    description: The unique identifier for the MCP server.
                  name:
                    type: string
                    description: The display name of the MCP server.
                  url:
                    type: string
                    format: uri
                    description: The URL of the MCP server.
                  description:
                    description: An optional description of the MCP server.
                    type: string
                  enabled:
                    type: boolean
                    description: Whether the MCP server is enabled for use in chats.
                  auth:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - none
                        - bearer
                        - custom-headers
                        - oauth
                        description: The type of authentication configured.
                    required:
                    - type
                    additionalProperties: false
                    description: Authentication type for the MCP server. Sensitive values like tokens and headers are not returned.
                  scope:
                    type: string
                    enum:
                    - user
                    - team
                    description: The scope of the MCP server (user or team).
                  createdAt:
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                    description: The ISO timestamp when the MCP server was created.
                  updatedAt:
                    description: The ISO timestamp when the MCP server was last updated.
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                required:
                - object
                - id
                - name
                - url
                - enabled
                - auth
                - scope
                - createdAt
                additionalProperties: false
                description: Summary information about an MCP server.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictError'
        '413':
          description: Payload Too Large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeError'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      parameters:
      - name: mcpServerId
        in: path
        required: true
        schema:
          type: string
        description: The ID of the MCP server to retrieve.
      security:
      - apiKey: []
    patch:
      summary: Update MCP Server
      description: Updates the configuration of an existing MCP server, including its name, URL, description, enabled status, and authentication settings.
      operationId: mcpServers.update
      tags:
      - mcpServers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The display name of the MCP server.
                  type: string
                  minLength: 1
                  maxLength: 100
                url:
                  description: The URL of the MCP server.
                  type: string
                  maxLength: 500
                  format: uri
                description:
                  description: An optional description of the MCP server.
                  type: string
                  maxLength: 500
                enabled:
                  description: Whether the MCP server is enabled.
                  type: boolean
                auth:
                  description: Authentication configuration.
                  anyOf:
                  - type: object
                    properties:
                      type:
                        type: string
                        const: none
                        description: No authentication required.
                    required:
                    - type
                    additionalProperties: false
                  - type: object
                    properties:
                      type:
                        type: string
                        const: bearer
                        description: Bearer token authentication.
                      token:
                        type: string
                        minLength: 1
                        maxLength: 1000
                        description: The bearer token for authentication.
                    required:
                    - type
                    - token
                    additionalProperties: false
                  - type: object
                    properties:
                      type:
                        type: string
                        const: custom-headers
                        description: Custom headers authentication.
                      headers:
                        type: object
                        propertyNames:
                          type: string
                          maxLength: 100
                        additionalProperties:
                          type: string
                          maxLength: 500
                        description: Key-value pairs of custom headers to include in requests.
                    required:
                    - type
                    - headers
                    additionalProperties: false
                  - type: object
                    properties:
                      type:
                        type: string
                        const: oauth
                        description: OAuth 2.1 authentication.
                      config:
                        type: object
                        properties:
                          authorizationUrl:
                            type: string
                            format: uri
                            description: The OAuth authorization endpoint URL.
                          tokenUrl:
                            type: string
                            format: uri
                            description: The OAuth token endpoint URL.
                          registrationUrl:
                            description: The optional dynamic client registration endpoint URL.
                            type: string
                            format: uri
                          clientId:
                            type: string
                            minLength: 1
                            description: The OAuth client ID.
                          clientSecret:
                            description: The optional OAuth client secret. This value is stored securely and is never returned by the API.
                            type: string
                          scopes:
                            default: []
                            description: OAuth scopes to request during authorization.
                            type: array
                            items:
                              type: string
                          usePKCE:
                            default: true
                            description: Whether to use PKCE for the authorization code flow.
                            type: boolean
                          issuer:
                            description: The optional issuer identifier for mix-up protection.
                            type: string
                          resource:
                            description: The optional RFC 8707 resource indicator. For MCP servers, this is usually the MCP server URL.
                            type: string
                          clientIdMetadataDocumentSupported:
                            description: Whether the authorization server supports Client ID Metadata Documents.
                            type: boolean
                        required:
                        - authorizationUrl
                        - tokenUrl
                        - clientId
                        additionalProperties: false
                        description: OAuth configuration for the MCP server.
                    required:
                    - type
                    - config
                    additionalProperties: false
                scope:
                  description: The scope of the MCP server.
                  type: string
                  enum:
                  - user
                  - team
              additionalProperties: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    const: mcp_server
                    description: The object type.
                  id:
                    type: string
                    description: The unique identifier for the MCP server.
                  name:
                    type: string
                    description: The display name of the MCP server.
                  url:
                    type: string
                    format: uri
                    description: The URL of the MCP server.
                  description:
                    description: An optional description of the MCP server.
                    type: string
                  enabled:
                    type: boolean
                    description: Whether the MCP server is enabled for use in chats.
                  auth:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                        - none
                        - bearer
                        - custom-headers
                        - oauth
                        description: The type of authentication configured.
                    required:
                    - type
                    additionalProperties: false
                    description: Authentication type for the MCP server. Sensitive values like tokens and headers are not returned.
                  scope:
                    type: string
                    enum:
                    - user
                    - team
                    description: The scope of the MCP server (user or team).
                  createdAt:
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                    description: The ISO timestamp when the MCP server was created.
                  updatedAt:
                    description: The ISO timestamp when the MCP server was last updated.
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                required:
                - object
                - id
                - name
                - url
                - enabled
                - auth
                - scope
                - createdAt
                additionalProperties: false
                description: Summary information about an MCP server.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictError'
        '413':
          description: Payload Too Large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeError'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      parameters:
      - name: mcpServerId
        in: path
        required: true
        schema:
          type: string
        description: The ID of the MCP server to update.
      security:
      - apiKey: []
    delete:
      summary: Delete MCP Server
      description: Deletes an MCP server based on its ID. This action is irreversible and will also remove any associated OAuth tokens.
      operationId: mcpServers.delete
      tags:
      - mcpServers
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    const: mcp_server
                  id:
                    type: string
                    description: The ID of the deleted MCP server.
                  deleted:
                    type: boolean
                    const: true
                    description: Indicates the server was deleted.
                required:
                - object
                - id
                - deleted
                additionalProperties: false
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictError'
        '413':
          description: Payload Too Large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeError'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      parameters:
      - name: mcpServerId
        in: path
        required: true
        schema:
          type: string
        description: The ID of the MCP server to delete.
      security:
      - apiKey: []
  /mcp-servers/{mcpServerId}/oauth/authorize:
    post:
      summary: Create MCP Server OAuth Authorization URL
      description: Creates an OAuth authorization URL for an OAuth MCP server. Redirect the user to the returned URL, and the Platform API OAuth callback will store the resulting tokens before redirecting to your returnUrl.
      operationId: mcpServers.createOAuthAuthorizationUrl
      tags:
      - mcpServers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                returnUrl:
                  type: string
                  format: uri
                  description: An absolute URL in your application where v0 redirects after OAuth completes. HTTPS is required in production.
              required:
              - returnUrl
              additionalProperties: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    const: mcp_server_oauth_authorization
                    description: The object type.
                  mcpServerId:
                    type: string
                    description: The MCP server being authorized.
                  url:
                    type: string
                    format: uri
                    description: The provider authorization URL to redirect the user to.
                  state:
                    type: string
                    description: The OAuth state value. This expires after 5 minutes.
                  expiresAt:
                    type: string
                    format: date-time
                    pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                    description: The ISO timestamp when the authorization URL expires.
                required:
                - object
                - mcpServerId
                - url
                - state
                - expiresAt
                additionalProperties: false
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictError'
        '413':
          description: Payload Too Large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayloadTooLargeError'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
      parameters:
      - name: mcpServerId
        in: path
        required: true
        schema:
          type: string
        description: The ID of the OAuth MCP server to authorize.
      security:
      - apiKey: []
components:
  schemas:
    InternalServerError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
              const: internal_server_error
          required:
          - message
          - type
          additionalProperties: false
      required:
      - error
      additionalProperties: false
    ForbiddenError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
              const: forbidden_error
          required:
          - message
          - type
          additionalProperties: false
      required:
      - error
      additionalProperties: false
    NotFoundError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
              const: not_found_error
          required:
          - message
          - type
          additionalProperties: false
      required:
      - error
      additionalProperties: false
    TooManyRequestsError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
              const: too_many_requests_error
          required:
          - message
          - type
          additionalProperties: false
      required:
      - error
      additionalProperties: false
    UnauthorizedError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
              const: unauthorized_error
          required:
          - message
          - type
          additionalProperties: false
      required:
      - error
      additionalProperties: false
    UnprocessableEntityError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
              const: unprocessable_entity_error
          required:
          - message
          - type
          additionalProperties: false
      required:
      - error
      additionalProperties: false
    PayloadTooLargeError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
              const: payload_too_large_error
          required:
          - message
          - type
          additionalProperties: false
      required:
      - error
      additionalProperties: false
    ConflictError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
              const: conflict_error
          required:
          - message
          - type
          additionalProperties: false
      required:
      - error
      additionalProperties: false
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: Your v0 API key. Get one at https://v0.app/chat/settings/keys
externalDocs:
  description: Find more info here
  url: https://vercel.com/docs/v0/api