# Add an MCP server for the person, from the catalog or by URL.

Source: <https://everruns.com/docs/api/operations/add_user_mcp_server/>

POST

/v1/virtual-users/{identity\_id}/mcp-servers

Select code samplecURL (shell:curl)

```js
const url = 'https://app.everruns.com/api/v1/virtual-users/example/mcp-servers';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"api_key":"example","auth_mode":"none","catalog":"linear","deferred":true,"description":"example","enabled":true,"headers":"example","name":"my-notes","url":"https://mcp.example.com/mcp"}'
};


try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```sh
curl --request POST \
  --url https://app.everruns.com/api/v1/virtual-users/example/mcp-servers \
  --header 'Content-Type: application/json' \
  --data '{ "api_key": "example", "auth_mode": "none", "catalog": "linear", "deferred": true, "description": "example", "enabled": true, "headers": "example", "name": "my-notes", "url": "https://mcp.example.com/mcp" }'
```

* Production APIapp.everruns.com/api/v1/virtual-users/{identity\_id}/mcp-servers

## Parameters

### Path Parameters

**identity\_id**

required

string

`me` or a virtual user id

## Request Bodyrequired

Media typeapplication/json

Add a user MCP server. Give `catalog` to add a catalog preset, or `name` and `url` to add a custom server.

object

**api\_key**

API key for a custom `api_key` server. Never returned.

string | null

**auth\_mode**

One of:

* string

  Sign-in for a custom server. Defaults to `api_key` when `api_key` is given, otherwise `none`.

  string

  Allowed values: none api\_key oauth

  ##### Example

  ```plaintext
  api_key
  ```

* null

  null

**catalog**

Catalog preset name to add.

string | null

##### Example

```plaintext
linear
```

**deferred**

Load the server’s tools on demand. Defaults to true.

boolean | null

**description**

string | null

**enabled**

Defaults to true.

boolean | null

**headers**

Literal headers for a custom server. Never returned.

object | null

**name**

Name for a custom server; also the tool prefix agents see.

string | null

##### Example

```plaintext
my-notes
```

**url**

HTTPS endpoint of a custom server.

string | null

##### Example

```plaintext
https://mcp.example.com/mcp
```

## Responses

### 201

Created

Media typeapplication/json

An MCP server a person added for themselves.

object

**auth\_mode**

required

MCP server authentication mode.

string

Allowed values: none api\_key oauth

**catalog\_name**

Catalog preset name, for servers added from the catalog.

string | null

**connection**

required

Sign-in state of a user MCP server.

object

**connected\_at**

string | null format: date-time

**provider**

Connection provider to pass to the authorize endpoint (`/v1/virtual-users/{id}/connections/{provider}/authorize`) when the server signs in with OAuth.

string | null

**status**

required

Whether the person has signed in to a user MCP server.

string

Allowed values: connected not\_connected not\_needed

**created\_at**

required

string format: date-time

**deferred**

required

Whether the server loads on demand: agents see one line for it and list its tools only once they search for them. Off lists its tools from the start of every turn.

boolean

**description**

string | null

**enabled**

required

Disabled servers are kept but never offered to agents.

boolean

**header\_names**

Names of the literal headers sent with each request. Values are write-only.

Array\<string>

**id**

required

string

**name**

required

string

**presentation**

One of:

* object

  Title, icon, and links published by the remote server.

  object

  **description**

  string | null

  **documentation\_url**

  string | null

  **fetched\_at**

  string | null format: date-time

  **icons**

  Array\<object>

  object

  **mime\_type**

  string | null

  **sizes**

  Array\<string>

  **src**

  required

  `https` URL on the MCP server’s origin, or a raster `data:` URI.

  string

  **theme**

  One of:

  * string

    string

    Allowed values: light dark

  * null

    null

  **sources**

  Which documents contributed. Not shown in the UI.

  Array\<string>

  **title**

  string | null

  **version**

  string | null

  **website\_url**

  string | null

* null

  string

  Allowed values: light dark

* string

  null

* null

  null

**source**

required

Where a user MCP server came from.

string

Allowed values: catalog custom

**updated\_at**

required

string format: date-time

**url**

required

string

##### Example

```json
{
  "auth_mode": "none",
  "connection": {
    "status": "connected"
  },
  "id": "mcp_01933b5a00007000800000000000001",
  "presentation": {
    "icons": [
      {
        "theme": "light"
      }
    ],
    "title": "GitHub MCP Server",
    "website_url": "https://github.com"
  },
  "source": "catalog"
}
```

### 400

Invalid request

### 401

Authentication required

### 403

Permission denied

### 409

Name already used