---
title: "Servers"
description: "Manage your MCP servers."
---

import { Card, Cards } from 'mintlify';

<Card
  title="GET /api/servers"
  href="#get-all-servers"
>
  Get a list of all MCP servers.
</Card>

<Card
  title="POST /api/servers"
  href="#create-a-new-server"
>
  Create a new MCP server.
</Card>

<Card
  title="PUT /api/servers/:name"
  href="#update-a-server"
>
  Update an existing MCP server.
</Card>

<Card
  title="DELETE /api/servers/:name"
  href="#delete-a-server"
>
  Delete an MCP server.
</Card>

<Card
  title="POST /api/servers/:name/toggle"
  href="#toggle-a-server"
>
  Toggle the enabled state of a server.
</Card>

<Card
  title="POST /api/servers/:serverName/tools/:toolName/toggle"
  href="#toggle-a-tool"
>
  Toggle the enabled state of a tool.
</Card>

<Card
  title="PUT /api/servers/:serverName/tools/:toolName/description"
  href="#update-tool-description"
>
  Update the description of a tool.
</Card>

<Card
  title="PUT /api/system-config"
  href="#update-system-config"
>
  Update system configuration settings.
</Card>

<Card
  title="GET /api/settings"
  href="#get-settings"
>
  Get all server settings and configurations.
</Card>

---

### Get All Servers

Retrieves a list of all configured MCP servers, including their status and available tools.

- **Endpoint**: `/api/servers`
- **Method**: `GET`
- **Response**:
  ```json
  {
    "success": true,
    "data": [
      {
        "name": "example-server",
        "status": "connected",
        "tools": [
          {
            "name": "tool1",
            "description": "Description of tool 1"
          }
        ],
        "config": {
          "type": "stdio",
          "command": "node",
          "args": ["server.js"]
        }
      }
    ]
  }
  ```

---

### Create a New Server

Adds a new MCP server to the configuration.

- **Endpoint**: `/api/servers`
- **Method**: `POST`
- **Body**:
  ```json
  {
    "name": "my-new-server",
    "config": {
      "type": "stdio",
      "command": "python",
      "args": ["-u", "my_script.py"],
      "owner": "admin"
    }
  }
  ```
  - `name` (string, required): The unique name for the server.
  - `config` (object, required): The server configuration object.
    - `type` (string): `stdio`, `sse`, `streamable-http`, or `openapi`.
    - `command` (string): Command to execute for `stdio` type.
    - `args` (array of strings): Arguments for the command.
    - `url` (string): URL for `sse`, `streamable-http`, or `openapi` types.
    - `openapi` (object): OpenAPI configuration.
      - `url` (string): URL to the OpenAPI schema.
      - `schema` (object): The OpenAPI schema object itself.
    - `headers` (object): Headers to send with requests for `sse`, `streamable-http`, and `openapi` types.
    - `keepAliveInterval` (number): Keep-alive interval in milliseconds for `sse` type. Defaults to 60000.
    - `owner` (string): The owner of the server. Defaults to the current user or 'admin'.

---

### Update a Server

Updates the configuration of an existing MCP server.

- **Endpoint**: `/api/servers/:name`
- **Method**: `PUT`
- **Parameters**:
  - `:name` (string, required): The name of the server to update.
- **Body**:
  ```json
  {
    "config": {
      "type": "stdio",
      "command": "node",
      "args": ["new_server.js"]
    }
  }
  ```
  - `config` (object, required): The updated server configuration object. See "Create a New Server" for details.

---

### Delete a Server

Removes an MCP server from the configuration.

- **Endpoint**: `/api/servers/:name`
- **Method**: `DELETE`
- **Parameters**:
  - `:name` (string, required): The name of the server to delete.

---

### Toggle a Server

Enables or disables an MCP server.

- **Endpoint**: `/api/servers/:name/toggle`
- **Method**: `POST`
- **Parameters**:
  - `:name` (string, required): The name of the server to toggle.
- **Body**:
  ```json
  {
    "enabled": true
  }
  ```
  - `enabled` (boolean, required): `true` to enable the server, `false` to disable it.

---

### Toggle a Tool

Enables or disables a specific tool on a server.

- **Endpoint**: `/api/servers/:serverName/tools/:toolName/toggle`
- **Method**: `POST`
- **Parameters**:
  - `:serverName` (string, required): The name of the server.
  - `:toolName` (string, required): The name of the tool.
- **Body**:
  ```json
  {
    "enabled": true
  }
  ```
  - `enabled` (boolean, required): `true` to enable the tool, `false` to disable it.

---

### Update Tool Description

Updates the description of a specific tool.

- **Endpoint**: `/api/servers/:serverName/tools/:toolName/description`
- **Method**: `PUT`
- **Parameters**:
  - `:serverName` (string, required): The name of the server.
  - `:toolName` (string, required): The name of the tool.
- **Body**:
  ```json
  {
    "description": "New tool description"
  }
  ```
  - `description` (string, required): The new description for the tool.

---

### Update System Config

Updates the system-wide configuration settings.

- **Endpoint**: `/api/system-config`
- **Method**: `PUT`
- **Body**:
  ```json
  {
    "openaiApiKey": "sk-...",
    "openaiBaseUrl": "https://api.openai.com/v1",
    "modelName": "gpt-4",
    "temperature": 0.7,
    "maxTokens": 2048
  }
  ```
  - All fields are optional. Only provided fields will be updated.

---

### Get Settings

Retrieves all server settings and configurations.

- **Endpoint**: `/api/settings`
- **Method**: `GET`
- **Response**:
  ```json
  {
    "success": true,
    "data": {
      "servers": [...],
      "groups": [...],
      "systemConfig": {...}
    }
  }
  ```

**Note**: For detailed prompt management, see the [Prompts API](/api-reference/prompts) documentation.
