Skip to content

MCP Proxies

MCP proxy management operations

Create a new MCP proxy

POST /mcp-proxies

Code samples

curl -X POST https://localhost:9243/api/v0.9/mcp-proxies \
  -H 'Authorization: Bearer {access_token}' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d @payload.json

Deploy a new MCP proxy configuration.

Payload

{
  "id": "weather-mcp-proxy",
  "displayName": "Weather Server",
  "description": "An MCP server which provides weather information",
  "version": "v1.0",
  "projectId": "default-project",
  "context": "/",
  "vhost": "mcp.gw.com",
  "upstream": {
    "main": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    },
    "sandbox": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    }
  },
  "mcpSpecVersion": "2025-06-18",
  "policies": [
    {
      "executionCondition": "request.header.x-custom == 'enabled'",
      "name": "SET_HEADER",
      "params": {
        "key": "MyHeader",
        "value": "MyValue"
      },
      "version": "v1"
    }
  ],
  "kind": "Mcp",
  "capabilities": {
    "tools": [
      {}
    ],
    "resources": [
      {}
    ],
    "prompts": [
      {}
    ]
  },
  "associatedGateways": [
    {
      "id": "prod-eu"
    },
    {
      "id": "prod-us"
    }
  ]
}

Authentication

Parameters

Name In Type Required Description
body body MCPProxy true none

Example responses

201 Response

{
  "id": "weather-mcp-proxy",
  "displayName": "Weather Server",
  "description": "An MCP server which provides weather information",
  "createdBy": "john.doe",
  "readOnly": false,
  "updatedBy": "john.doe",
  "version": "v1.0",
  "projectId": "default-project",
  "context": "/",
  "vhost": "mcp.gw.com",
  "upstream": {
    "main": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    },
    "sandbox": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    }
  },
  "mcpSpecVersion": "2025-06-18",
  "policies": [
    {
      "executionCondition": "request.header.x-custom == 'enabled'",
      "name": "SET_HEADER",
      "params": {
        "key": "MyHeader",
        "value": "MyValue"
      },
      "version": "v1"
    }
  ],
  "kind": "Mcp",
  "capabilities": {
    "tools": [
      {}
    ],
    "resources": [
      {}
    ],
    "prompts": [
      {}
    ]
  },
  "associatedGateways": [
    {
      "id": "prod-eu"
    },
    {
      "id": "prod-us"
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

400 Response

{
  "status": "error",
  "code": "VALIDATION_FAILED",
  "message": "The request failed validation.",
  "errors": [
    {
      "field": "<name of the offending field>",
      "message": "<reason this field failed validation>"
    }
  ]
}

401 Response

{
  "status": "error",
  "code": "UNAUTHORIZED",
  "message": "Authorization header is required, or the token is invalid or expired."
}

403 Response

{
  "status": "error",
  "code": "FORBIDDEN",
  "message": "You do not have permission to perform this action."
}

409 Response

{
  "status": "error",
  "code": "CONFLICT",
  "message": "The request conflicts with the current state of the resource."
}

500 Response

{
  "status": "error",
  "code": "INTERNAL_ERROR",
  "message": "An unexpected error occurred.",
  "trackingId": "4f1c6f2e-8a4b-4c93-b1de-9f2f6f0c2a11"
}

Responses

Status Meaning Description Schema
201 Created MCP proxy created successfully MCPProxy
400 Bad Request Bad Request. Invalid request or validation error. Error
401 Unauthorized Unauthorized. Authentication credentials are missing or invalid. Error
403 Forbidden Forbidden. The authenticated user does not have permission to access this resource. Error
409 Conflict Conflict. The request conflicts with the current state of the resource. Error
500 Internal Server Error Internal Server Error. Error

Response Headers

Status Header Type Format Description
201 Location string uri URL of the newly created resource.

List all MCP proxies

GET /mcp-proxies

Code samples

curl -X GET https://localhost:9243/api/v0.9/mcp-proxies?projectId=default-project \
  -H 'Authorization: Bearer {access_token}' \
  -H 'Accept: application/json'

Retrieve a list of all MCP proxies for a project. Requires the projectId query parameter.

Authentication

Parameters

Name In Type Required Description
projectId query string true Project ID consisting of the handle (unique slug identifier) of the Project whose resources should be returned.
limit query integer false Maximum number of items to return per page.
offset query integer false Zero-based index of the first item to return.

Detailed descriptions

projectId: Project ID consisting of the handle (unique slug identifier) of the Project whose resources should be returned.

Example responses

200 Response

{
  "count": 2,
  "list": [
    {
      "id": "weather-mcp-proxy",
      "displayName": "Weather Server",
      "description": "An MCP server which provides weather information",
      "createdBy": "john.doe",
      "context": "/weather-mcp-proxy",
      "version": "v1.0",
      "projectId": "default-project",
      "status": "deployed",
      "mcpSpecVersion": "2025-11-25",
      "createdAt": "2025-11-25T10:30:00Z",
      "updatedAt": "2025-11-25T10:30:00Z",
      "readOnly": false
    }
  ],
  "pagination": {
    "total": 10,
    "offset": 0,
    "limit": 10
  }
}

401 Response

{
  "status": "error",
  "code": "UNAUTHORIZED",
  "message": "Authorization header is required, or the token is invalid or expired."
}

500 Response

{
  "status": "error",
  "code": "INTERNAL_ERROR",
  "message": "An unexpected error occurred.",
  "trackingId": "4f1c6f2e-8a4b-4c93-b1de-9f2f6f0c2a11"
}

Responses

Status Meaning Description Schema
200 OK List of MCP proxies MCPProxyListResponse
401 Unauthorized Unauthorized. Authentication credentials are missing or invalid. Error
500 Internal Server Error Internal Server Error. Error

Get MCP proxy by unique identifier

GET /mcp-proxies/{mcpProxyId}

Code samples

curl -X GET https://localhost:9243/api/v0.9/mcp-proxies/{mcpProxyId} \
  -H 'Authorization: Bearer {access_token}' \
  -H 'Accept: application/json'

Retrieve the complete configuration for a specific MCP proxy.

Authentication

Parameters

Name In Type Required Description
mcpProxyId path string true Unique identifier of the MCP proxy

Example responses

200 Response

{
  "id": "weather-mcp-proxy",
  "displayName": "Weather Server",
  "description": "An MCP server which provides weather information",
  "createdBy": "john.doe",
  "readOnly": false,
  "updatedBy": "john.doe",
  "version": "v1.0",
  "projectId": "default-project",
  "context": "/",
  "vhost": "mcp.gw.com",
  "upstream": {
    "main": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    },
    "sandbox": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    }
  },
  "mcpSpecVersion": "2025-06-18",
  "policies": [
    {
      "executionCondition": "request.header.x-custom == 'enabled'",
      "name": "SET_HEADER",
      "params": {
        "key": "MyHeader",
        "value": "MyValue"
      },
      "version": "v1"
    }
  ],
  "kind": "Mcp",
  "capabilities": {
    "tools": [
      {}
    ],
    "resources": [
      {}
    ],
    "prompts": [
      {}
    ]
  },
  "associatedGateways": [
    {
      "id": "prod-eu"
    },
    {
      "id": "prod-us"
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

401 Response

{
  "status": "error",
  "code": "UNAUTHORIZED",
  "message": "Authorization header is required, or the token is invalid or expired."
}

404 Response

{
  "status": "error",
  "code": "NOT_FOUND",
  "message": "The specified resource does not exist."
}

500 Response

{
  "status": "error",
  "code": "INTERNAL_ERROR",
  "message": "An unexpected error occurred.",
  "trackingId": "4f1c6f2e-8a4b-4c93-b1de-9f2f6f0c2a11"
}

Responses

Status Meaning Description Schema
200 OK MCP proxy details MCPProxy
401 Unauthorized Unauthorized. Authentication credentials are missing or invalid. Error
404 Not Found Not Found. The specified resource does not exist. Error
500 Internal Server Error Internal Server Error. Error

Update an existing MCP proxy

PUT /mcp-proxies/{mcpProxyId}

Code samples

curl -X PUT https://localhost:9243/api/v0.9/mcp-proxies/{mcpProxyId} \
  -H 'Authorization: Bearer {access_token}' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d @payload.json

Update the configuration of an existing MCP proxy.

Payload

{
  "id": "weather-mcp-proxy",
  "displayName": "Weather Server",
  "description": "An MCP server which provides weather information",
  "version": "v1.0",
  "projectId": "default-project",
  "context": "/",
  "vhost": "mcp.gw.com",
  "upstream": {
    "main": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    },
    "sandbox": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    }
  },
  "mcpSpecVersion": "2025-06-18",
  "policies": [
    {
      "executionCondition": "request.header.x-custom == 'enabled'",
      "name": "SET_HEADER",
      "params": {
        "key": "MyHeader",
        "value": "MyValue"
      },
      "version": "v1"
    }
  ],
  "kind": "Mcp",
  "capabilities": {
    "tools": [
      {}
    ],
    "resources": [
      {}
    ],
    "prompts": [
      {}
    ]
  },
  "associatedGateways": [
    {
      "id": "prod-eu"
    },
    {
      "id": "prod-us"
    }
  ]
}

Authentication

Parameters

Name In Type Required Description
mcpProxyId path string true Unique identifier of the MCP proxy
body body MCPProxy true none

Example responses

200 Response

{
  "id": "weather-mcp-proxy",
  "displayName": "Weather Server",
  "description": "An MCP server which provides weather information",
  "createdBy": "john.doe",
  "readOnly": false,
  "updatedBy": "john.doe",
  "version": "v1.0",
  "projectId": "default-project",
  "context": "/",
  "vhost": "mcp.gw.com",
  "upstream": {
    "main": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    },
    "sandbox": {
      "url": "http://prod-backend:5000/api/v2",
      "auth": {
        "type": "api-key",
        "header": "X-API-Key",
        "value": "my-api-key-value"
      }
    }
  },
  "mcpSpecVersion": "2025-06-18",
  "policies": [
    {
      "executionCondition": "request.header.x-custom == 'enabled'",
      "name": "SET_HEADER",
      "params": {
        "key": "MyHeader",
        "value": "MyValue"
      },
      "version": "v1"
    }
  ],
  "kind": "Mcp",
  "capabilities": {
    "tools": [
      {}
    ],
    "resources": [
      {}
    ],
    "prompts": [
      {}
    ]
  },
  "associatedGateways": [
    {
      "id": "prod-eu"
    },
    {
      "id": "prod-us"
    }
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

400 Response

{
  "status": "error",
  "code": "VALIDATION_FAILED",
  "message": "The request failed validation.",
  "errors": [
    {
      "field": "<name of the offending field>",
      "message": "<reason this field failed validation>"
    }
  ]
}

401 Response

{
  "status": "error",
  "code": "UNAUTHORIZED",
  "message": "Authorization header is required, or the token is invalid or expired."
}

403 Response

{
  "status": "error",
  "code": "FORBIDDEN",
  "message": "You do not have permission to perform this action."
}

404 Response

{
  "status": "error",
  "code": "NOT_FOUND",
  "message": "The specified resource does not exist."
}

500 Response

{
  "status": "error",
  "code": "INTERNAL_ERROR",
  "message": "An unexpected error occurred.",
  "trackingId": "4f1c6f2e-8a4b-4c93-b1de-9f2f6f0c2a11"
}

Responses

Status Meaning Description Schema
200 OK MCP proxy updated successfully MCPProxy
400 Bad Request Bad Request. Invalid request or validation error. Error
401 Unauthorized Unauthorized. Authentication credentials are missing or invalid. Error
403 Forbidden Forbidden. The authenticated user does not have permission to access this resource. Error
404 Not Found Not Found. The specified resource does not exist. Error
500 Internal Server Error Internal Server Error. Error

Delete an MCP proxy

DELETE /mcp-proxies/{mcpProxyId}

Code samples

curl -X DELETE https://localhost:9243/api/v0.9/mcp-proxies/{mcpProxyId} \
  -H 'Authorization: Bearer {access_token}' \
  -H 'Accept: application/json'

Remove an MCP proxy.

Authentication

Parameters

Name In Type Required Description
mcpProxyId path string true Unique identifier of the MCP proxy

Example responses

400 Response

{
  "status": "error",
  "code": "VALIDATION_FAILED",
  "message": "The request failed validation.",
  "errors": [
    {
      "field": "<name of the offending field>",
      "message": "<reason this field failed validation>"
    }
  ]
}

401 Response

{
  "status": "error",
  "code": "UNAUTHORIZED",
  "message": "Authorization header is required, or the token is invalid or expired."
}

403 Response

{
  "status": "error",
  "code": "FORBIDDEN",
  "message": "You do not have permission to perform this action."
}

404 Response

{
  "status": "error",
  "code": "NOT_FOUND",
  "message": "The specified resource does not exist."
}

500 Response

{
  "status": "error",
  "code": "INTERNAL_ERROR",
  "message": "An unexpected error occurred.",
  "trackingId": "4f1c6f2e-8a4b-4c93-b1de-9f2f6f0c2a11"
}

Responses

Status Meaning Description Schema
204 No Content MCP proxy deleted successfully None
400 Bad Request Bad Request. Invalid request or validation error. Error
401 Unauthorized Unauthorized. Authentication credentials are missing or invalid. Error
403 Forbidden Forbidden. The authenticated user does not have permission to access this resource. Error
404 Not Found Not Found. The specified resource does not exist. Error
500 Internal Server Error Internal Server Error. Error

Fetch server info from MCP proxy backend services

POST /mcp-proxies/fetch-server-info

Code samples

curl -X POST https://localhost:9243/api/v0.9/mcp-proxies/fetch-server-info \
  -H 'Authorization: Bearer {access_token}' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d @payload.json

Fetches server information from the backend services of an MCP proxy. This is used to validate connectivity and retrieve metadata about the backend services.

Payload

{
  "url": "https://mcp.server.com/mcp",
  "proxyId": "my-mcp-proxy",
  "auth": {
    "type": "api-key",
    "header": "X-API-Key",
    "value": "my-api-key-value"
  }
}

Authentication

Parameters

Name In Type Required Description
body body MCPServerInfoFetchRequest true Target MCP server to introspect — either a direct url (with optional auth), or a proxyId to refetch using a stored proxy configuration.

Example responses

200 Response

{
  "serverInfo": {},
  "tools": [
    {}
  ],
  "resources": [
    {}
  ],
  "prompts": [
    {}
  ]
}

400 Response

{
  "status": "error",
  "code": "VALIDATION_FAILED",
  "message": "The request failed validation.",
  "errors": [
    {
      "field": "<name of the offending field>",
      "message": "<reason this field failed validation>"
    }
  ]
}

401 Response

{
  "status": "error",
  "code": "UNAUTHORIZED",
  "message": "Authorization header is required, or the token is invalid or expired."
}

404 Response

{
  "status": "error",
  "code": "NOT_FOUND",
  "message": "The specified resource does not exist."
}

500 Response

{
  "status": "error",
  "code": "INTERNAL_ERROR",
  "message": "An unexpected error occurred.",
  "trackingId": "4f1c6f2e-8a4b-4c93-b1de-9f2f6f0c2a11"
}

Responses

Status Meaning Description Schema
200 OK Server info retrieved successfully MCPServerInfoFetchResponse
400 Bad Request Bad Request. Invalid request or validation error. Error
401 Unauthorized Unauthorized. Authentication credentials are missing or invalid. Error
404 Not Found Not Found. The specified resource does not exist. Error
500 Internal Server Error Internal Server Error. Error