Admin API
The admin API is accessible to automate administration processes or to enable integration with third party applications.
Admin API Endpoint
Section titled “Admin API Endpoint”The Administration API is available over the following endpoint:
{BASE_URL}/api/v1The BASE_URL is the deployment URL. For Localhost it is http://localhost:3000.
All requests require JSON Body unless specified.
Authentication
Section titled “Authentication”The API accepts API keys that have been generated using the User Interface. Each API call should provide this key in the Authorization header as Bearer Token. An Example Request can be seen below.
POST {BASE_URL}/api/v1/clients/{serverName}Authorization: Bearer {ADMIN_API_KEY}Content-Type: application/jsonGenerate a token
Section titled “Generate a token”- Open the Admin API Integrations Page.

- Generate a new API Key.

Unpacking the response
Section titled “Unpacking the response”All responses are wrapped in the following envelope:
{ "success": true, "message": "The Action was performed successfully", "data": { ... }}The actual response is available within the data field.
MCP Server Management
Section titled “MCP Server Management”Create a new API Client
Section titled “Create a new API Client”You can create new API Clients for a server using this request.
POST {BASE_URL}/api/v1/clients/{serverId}| Field | Type | Default | Validation |
|---|---|---|---|
| name | string | “API Key” | 1-100 characters (trimmed) |
| description | string | “Created with the API” | Up to 500 characters(trimmed) |
| expiresInMinutes | number | 60 minutes | The time this client expires from time of creation. |
| Field | Definition |
|---|---|
| id | The API Client identifier |
| serverId | The MCP Server the client belongs to |
| integrationId | The admin API key that created the client. |
| expiresAt | The expiration time normalized to UTC ISO8601 |
| key | The API Key in plain text (only returned once) |
{ "success": true, "message": "Mcp server api key created successfully", "data": { "id": "6f1c2a9e-4b7d-4e2a-9c51-2d8f0b3a7e14", "name": "Claude Desktop", "description": "Work laptop", "serverId": "b0a4c3d2-1e5f-4a6b-8c7d-9e0f1a2b3c4d", "integrationId": "3d2c1b0a-9f8e-4d7c-6b5a-4f3e2d1c0b9a", "expiresAt": "2027-01-15T00:00:00.000Z", "createdAt": "2026-11-06T08:30:00.000Z", "updatedAt": "2026-11-06T08:30:00.000Z", "key": "eyJhbGciOi..." }}curl -X POST "https://mcp.example.com/api/v1/clients/weather" \ -H "Authorization: Bearer $MCP_EXPRESS_ADMIN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Claude Desktop", "description": "Work laptop", "expiresInMinutes": 60 }'const response = await fetch( `${process.env.MCP_EXPRESS_URL}/api/v1/clients/weather`, { method: 'POST', headers: { Authorization: `Bearer ${process.env.MCP_EXPRESS_ADMIN_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ name: 'Claude Desktop' }), })
const body = await response.json()if (!body.success) throw new Error(`${body.error.code}: ${body.error.message}`)
const clientKey = body.data.key // Store this now; it isn't shown again.import osimport requests
response = requests.post( f"{os.environ['MCP_EXPRESS_URL']}/api/v1/clients/weather", headers={"Authorization": f"Bearer {os.environ['MCP_EXPRESS_ADMIN_API_KEY']}"}, json={"name": "Claude Desktop"}, timeout=30,)body = response.json()if not body["success"]: raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
client_key = body["data"]["key"] # Store this now; it isn't shown again.