# Generate MCP URL with custom parameters

**Documentation:** /reference/api-reference/mcp/postMcpServersGenerate

Generates a Model Control Protocol (MCP) URL for an existing server with custom query parameters. The URL includes user-specific parameters and configuration flags that control the behavior of the MCP connection.

---

## POST `/api/v3/mcp/servers/generate`

**Endpoint:** `https://backend.composio.dev/api/v3/mcp/servers/generate`

**Summary:** Generate MCP URL with custom parameters

Generates a Model Control Protocol (MCP) URL for an existing server with custom query parameters. The URL includes user-specific parameters and configuration flags that control the behavior of the MCP connection.

### Authentication

**ApiKeyAuth** - API Key in `header` header `x-api-key` OR **UserApiKeyAuth** - API Key in `header` header `x-user-api-key`

### Request Body

**Schema:**

- `mcp_server_id` (string) *(required)*: Unique identifier of the MCP server to generate URL for
- `managed_auth_by_composio` (boolean): Flag indicating if Composio manages authentication
- `user_ids` (array<string>): List of user identifiers for whom the URL is generated
- `connected_account_ids` (array<string>): List of connected account identifiers

**Example:**

```json
{
  "mcp_server_id": "string",
  "managed_auth_by_composio": false,
  "user_ids": [
    "string"
  ],
  "connected_account_ids": [
    "string"
  ]
}
```

### Responses

#### 200 - Successfully generated MCP URL. Returns the complete URL with all specified query parameters.

**Response Schema:**

- `mcp_url` (string) *(required)*: Base MCP URL without any query parameters
- `connected_account_urls` (array<string>) *(required)*: List of URLs generated for each connected account ID
- `user_ids_url` (array<string>) *(required)*: List of URLs generated for each user ID

**Example Response:**

```json
{
  "mcp_url": "string",
  "connected_account_urls": [
    "string"
  ],
  "user_ids_url": [
    "string"
  ]
}
```

#### 400 - Bad request. The request body may be invalid or missing required parameters.

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 401 - Unauthorized. Authentication is required or the provided credentials are invalid.

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 403 - Forbidden. The authenticated user does not have permission to access this MCP server.

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 404 - MCP server not found. No server with the specified ID exists or it has been deleted.

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 500 - Internal server error. An unexpected error occurred while processing the request.

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

### Example cURL Request

```bash
curl -X POST "https://backend.composio.dev/api/v3/mcp/servers/generate" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mcp_server_id": "string",
    "managed_auth_by_composio": false,
    "user_ids": [
      "string"
    ],
    "connected_account_ids": [
      "string"
    ]
  }'
```