Skip to content
Start here

Update a MCP Server

client.zeroTrust.access.aiControls.mcp.servers.update(stringid, ServerUpdateParams { account_id, auth_credentials, description, 3 more } params, RequestOptionsoptions?): ServerUpdateResponse { id, auth_type, hostname, 16 more }
PUT/accounts/{account_id}/access/ai-controls/mcp/servers/{id}

Updates an MCP portal configuration.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
MCP Portals Write
ParametersExpand Collapse
id: string

server id

maxLength32
minLength1
params: ServerUpdateParams { account_id, auth_credentials, description, 3 more }
account_id: string

Path param

auth_credentials?: string

Body param

description?: string | null

Body param

maxLength512
name?: string

Body param

maxLength350
updated_prompts?: Array<UpdatedPrompt>

Body param

name: string
alias?: string
maxLength40
description?: string
enabled?: boolean
updated_tools?: Array<UpdatedTool>

Body param

name: string
alias?: string
maxLength40
description?: string
enabled?: boolean
ReturnsExpand Collapse
ServerUpdateResponse { id, auth_type, hostname, 16 more }
id: string

server id

maxLength32
minLength1
auth_type: "oauth" | "bearer" | "unauthenticated"
One of the following:
"oauth"
"bearer"
"unauthenticated"
hostname: string
formaturi
name: string
maxLength350
prompts: Array<Record<string, unknown>>
tools: Array<Record<string, unknown>>
created_at?: string
formatdate-time
created_by?: string
description?: string | null
maxLength512
error?: string
error_details?: ErrorDetails { cause, is_upstream, mcp_code, 2 more }
cause?: string

Underlying error message

is_upstream?: boolean

True = MCP server returned an error. False = couldn’t reach the server

mcp_code?: number

MCP protocol error code

retryable?: boolean

Whether the error is transient and worth retrying

status_code?: number

HTTP status code from the server

is_shared_oauth_callback_enabled?: boolean

When true, the gateway worker uses the shared Cloudflare-owned OAuth callback endpoint as the redirect_uri for upstream on-behalf OAuth, instead of the customer portal hostname. Operators manage this internal rollout flag through admin endpoints. Effective behavior is gated by the gateway worker’s per-env rollout mode KV key.

last_successful_sync?: string
formatdate-time
last_synced?: string
formatdate-time
modified_at?: string
formatdate-time
modified_by?: string
status?: string
updated_prompts?: Array<UpdatedPrompt>
name: string
alias?: string
maxLength40
description?: string
enabled?: boolean
updated_tools?: Array<UpdatedTool>
name: string
alias?: string
maxLength40
description?: string
enabled?: boolean

Update a MCP Server

import Cloudflare from 'cloudflare';

const client = new Cloudflare({
  apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted
});

const server = await client.zeroTrust.access.aiControls.mcp.servers.update('my-mcp-server', {
  account_id: 'a86a8f5c339544d7bdc89926de14fb8c',
});

console.log(server.id);
{
  "result": {
    "id": "my-mcp-server",
    "auth_type": "unauthenticated",
    "hostname": "https://example.com/mcp",
    "name": "My MCP Server",
    "prompts": [
      {
        "foo": "bar"
      }
    ],
    "tools": [
      {
        "foo": "bar"
      }
    ],
    "created_at": "2019-12-27T18:11:19.117Z",
    "created_by": "created_by",
    "description": "This is one remote mcp server",
    "error": "error",
    "error_details": {
      "cause": "cause",
      "is_upstream": true,
      "mcp_code": 0,
      "retryable": true,
      "status_code": 0
    },
    "is_shared_oauth_callback_enabled": true,
    "last_successful_sync": "2019-12-27T18:11:19.117Z",
    "last_synced": "2019-12-27T18:11:19.117Z",
    "modified_at": "2019-12-27T18:11:19.117Z",
    "modified_by": "modified_by",
    "status": "status",
    "updated_prompts": [
      {
        "name": "name",
        "alias": "my-custom-alias",
        "description": "description",
        "enabled": true
      }
    ],
    "updated_tools": [
      {
        "name": "name",
        "alias": "my-custom-alias",
        "description": "description",
        "enabled": true
      }
    ]
  },
  "success": true
}
Returns Examples
{
  "result": {
    "id": "my-mcp-server",
    "auth_type": "unauthenticated",
    "hostname": "https://example.com/mcp",
    "name": "My MCP Server",
    "prompts": [
      {
        "foo": "bar"
      }
    ],
    "tools": [
      {
        "foo": "bar"
      }
    ],
    "created_at": "2019-12-27T18:11:19.117Z",
    "created_by": "created_by",
    "description": "This is one remote mcp server",
    "error": "error",
    "error_details": {
      "cause": "cause",
      "is_upstream": true,
      "mcp_code": 0,
      "retryable": true,
      "status_code": 0
    },
    "is_shared_oauth_callback_enabled": true,
    "last_successful_sync": "2019-12-27T18:11:19.117Z",
    "last_synced": "2019-12-27T18:11:19.117Z",
    "modified_at": "2019-12-27T18:11:19.117Z",
    "modified_by": "modified_by",
    "status": "status",
    "updated_prompts": [
      {
        "name": "name",
        "alias": "my-custom-alias",
        "description": "description",
        "enabled": true
      }
    ],
    "updated_tools": [
      {
        "name": "name",
        "alias": "my-custom-alias",
        "description": "description",
        "enabled": true
      }
    ]
  },
  "success": true
}