---
title: "Create MCP Server"
method: POST
path: "/api/v1/servers"
tags: ["Servers"]
---

# Create MCP Server

`POST /api/v1/servers`

Create a new MCP server. If iconUrl is provided, the server will fetch the icon from the external URL and upload it to R2 storage. The response will contain the R2 URL.

## Request body

- ServerCreate
  - `scope` string, required — The scope of the MCP server
  - `packageName` string, required — The package name of the MCP server
  - `displayName` string, required — The display name of the MCP server
  - `description` string, required — Description of the MCP server
  - `repository` Repository, required
    - `url` string, uri, required
    - `source` string, required
  - `iconUrl` string, uri — External icon URL (will be fetched and stored in R2)
  - `documentationUrl` string, uri — URL to the documentation
  - `version` string, required — Version of the MCP server
  - `packages` Package[] — Package configurations
    - `registryName` string, required
    - `name` string, required
    - `version` string, required
    - `runtimeHint` string
    - `runtimeArguments` Argument[]
      - `type` 'positional' | 'named', required
      - `name` string
      - `isRepeated` boolean
      - `valueHint` string
      - `description` string
      - `isRequired` boolean
      - `format` 'string' | 'number' | 'boolean' | 'file_path'
      - `value` string
      - `isSecret` boolean
      - `default` string
      - `choices` string[]
      - `template` string
      - `properties` object
      - `variables` object
    - `packageArguments` Argument[]
      - `type` 'positional' | 'named', required
      - `name` string
      - `isRepeated` boolean
      - `valueHint` string
      - `description` string
      - `isRequired` boolean
      - `format` 'string' | 'number' | 'boolean' | 'file_path'
      - `value` string
      - `isSecret` boolean
      - `default` string
      - `choices` string[]
      - `template` string
      - `properties` object
      - `variables` object
    - `environmentVariables` KeyValueInput[]
      - `name` string, required
      - `description` string
      - `isRequired` boolean
      - `format` 'string' | 'number' | 'boolean' | 'file_path'
      - `value` string
      - `isSecret` boolean
      - `default` string
      - `choices` string[]
      - `template` string
      - `properties` object
      - `variables` object
  - `remotes` Remote[] — Remote configurations
    - `transportType` string, required
    - `url` string, uri, required
    - `headers` KeyValueInput[]
      - `name` string, required
      - `description` string
      - `isRequired` boolean
      - `format` 'string' | 'number' | 'boolean' | 'file_path'
      - `value` string
      - `isSecret` boolean
      - `default` string
      - `choices` string[]
      - `template` string
      - `properties` object
      - `variables` object

## Response `201`

Server created successfully

- ServerResponse
  - `server` ServerDetail, required
    - `scope` string, required
    - `packageName` string, required
    - `displayName` string, required
    - `description` string, required
    - `repository` Repository, required
      - `url` string, uri, required
      - `source` string, required
    - `iconUrl` string, uri
    - `documentationUrl` string, uri
    - `version` string, required
    - `updatedAt` string, date-time, required
    - `packages` Package[]
      - `registryName` string, required
      - `name` string, required
      - `version` string, required
      - `runtimeHint` string
      - `runtimeArguments` Argument[]
        - `type` 'positional' | 'named', required
        - `name` string
        - `isRepeated` boolean
        - `valueHint` string
        - `description` string
        - `isRequired` boolean
        - `format` 'string' | 'number' | 'boolean' | 'file_path'
        - `value` string
        - `isSecret` boolean
        - `default` string
        - `choices` string[]
        - `template` string
        - `properties` object
        - `variables` object
      - `packageArguments` Argument[]
        - `type` 'positional' | 'named', required
        - `name` string
        - `isRepeated` boolean
        - `valueHint` string
        - `description` string
        - `isRequired` boolean
        - `format` 'string' | 'number' | 'boolean' | 'file_path'
        - `value` string
        - `isSecret` boolean
        - `default` string
        - `choices` string[]
        - `template` string
        - `properties` object
        - `variables` object
      - `environmentVariables` KeyValueInput[]
        - `name` string, required
        - `description` string
        - `isRequired` boolean
        - `format` 'string' | 'number' | 'boolean' | 'file_path'
        - `value` string
        - `isSecret` boolean
        - `default` string
        - `choices` string[]
        - `template` string
        - `properties` object
        - `variables` object
    - `remotes` Remote[]
      - `transportType` string, required
      - `url` string, uri, required
      - `headers` KeyValueInput[]
        - `name` string, required
        - `description` string
        - `isRequired` boolean
        - `format` 'string' | 'number' | 'boolean' | 'file_path'
        - `value` string
        - `isSecret` boolean
        - `default` string
        - `choices` string[]
        - `template` string
        - `properties` object
        - `variables` object
    - `id` string, required

## Other responses

- `400` — Invalid request data
- `401` — Unauthorized - authentication required
- `500` — Internal server error

## Changes

- **2025-11-10** `dd3fac5bdb5c` — 7 breaking, 3 warning, 6 info
  - added the new required request property `displayName`
  - added the new required request property `packageName`
  - added the new required request property `scope`
  - added the new required request property `version`
  - …12 more

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

---

[API](https://skmtc.dev/corespeed-io/apis/mcp-store-api.md) · [All operations](https://skmtc.dev/corespeed-io/apis/mcp-store-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/corespeed-io/mcp-store-api/revisions/dd3fac5bdb5c/schema)
