---
title: "POST /api/mcp/servers"
method: POST
path: "/api/mcp/servers"
tags: ["mcp"]
---

# POST /api/mcp/servers

`POST /api/mcp/servers`

## Request body

- union
  - object
    - `transport` 'remote', nullable
    - `name` string, required
    - `family` string, nullable
    - `description` string, nullable
    - `endpoint` string, required
    - `remoteTransport` 'streamable-http' | 'sse' | 'auto', nullable
    - `versionNegotiation` 'auto' | 'legacy', nullable
    - `slug` string, nullable
    - `queryParams` object, nullable
    - `headers` object, nullable
    - `authenticationTemplate` union[], nullable
      - union
        - object
          - `slug` string, nullable
          - `kind` 'none', required
        - object
          - `slug` string, nullable
          - `kind` 'oauth2', required
          - `scopes` string[], nullable
          - `enterpriseIdentityProvider` EnterpriseIdentityProviderDescriptor — The registered OAuth app that stands for the enterprise identity provider minting an integration's ID-JAGs.
            - `client` string, required
            - `clientOwner` 'org' | 'user', required
        - object
          - `slug` string, nullable
          - `type` 'apiKey', required
          - `label` string, nullable
          - `headers` object, nullable
          - `queryParams` object, nullable
    - `auth` union
      - object
        - `kind` 'none', required
      - object
        - `kind` 'header', required
        - `headerName` string, required
        - `prefix` string, nullable
      - object
        - `kind` 'oauth2', required
  - object
    - `transport` 'stdio', required
    - `name` string, required
    - `family` string, nullable
    - `description` string, nullable
    - `command` string, required
    - `args` string[], nullable
    - `envVars` string[], nullable
    - `env` object, nullable
    - `staticEnv` object, nullable
    - `cwd` string, nullable
    - `versionNegotiation` 'legacy' | 'auto', nullable
    - `spawnPerCall` boolean, nullable
    - `appServer` object, nullable
      - `server` string, required
      - `surface` 'sky' | 'browser', nullable
      - `modulePath` string, nullable
    - `slug` string, nullable

## Response `200`

Success

- object
  - `slug` string, required

## Other responses

- `400` — McpConnectionError | McpToolDiscoveryError
- `409` — IntegrationAlreadyExistsError
- `500` — InternalError

## Changes

> 8 revisions in range; 6 could not be searched.

- **2026-08-30** `03ae66214fb3` — 1 breaking, 3 info
  - removed `subschema #1, subschema #2` from the request body `anyOf` list
  - added `subschema #1, subschema #2` to the request body `anyOf` list
  - added the optional property `anyOf[#/components/schemas/McpToolDiscoveryError]/modernContractViolation` to the response with the `400` status
  - added the optional property `anyOf[#/components/schemas/McpToolDiscoveryError]/reauthorizationRequired` to the response with the `400` status

[Change history](https://skmtc.dev/executor/apis/executor-api/changes/api/mcp/servers/post.md)

---

[API](https://skmtc.dev/executor/apis/executor-api.md) · [All operations](https://skmtc.dev/executor/apis/executor-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/executor/executor-api/revisions/03ae66214fb3/schema)
