---
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
  - `name` string, required
  - `description` string, required
  - `repository` Repository, required
    - `url` string, uri, required
    - `source` string, required
    - `id` string, required
  - `iconUrl` string, uri — External icon URL. The server will fetch the icon from this URL and upload it to R2 storage. The response will contain the R2 URL.
  - `versionDetail` VersionDetail, required
    - `version` string, required
    - `releaseDate` string, required
    - `isLatest` boolean, 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

## Response `201`

Server created successfully

- ServerResponse
  - `server` ServerDetail, required
    - `name` string, required
    - `description` string, required
    - `repository` Repository, required
      - `url` string, uri, required
      - `source` string, required
      - `id` string, required
    - `iconUrl` string, uri
    - `documentationUrl` string, uri
    - `versionDetail` VersionDetail, required
      - `version` string, required
      - `releaseDate` string, required
      - `isLatest` boolean, 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

---

[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/ea044ebcf37a/schema)
