Update MCP Server

Update the supplied MCP server fields. The URL is immutable because it determines server identity; delete and recreate the server to change endpoints. Two fields do not follow the omitted-fields-are-retained rule. headers is replaced wholesale rather than merged: sending it drops every stored header it does not repeat, and the only way to keep a header is to resend it. Changing oauthClientId, or sending oauthClientSecret as null or a new value, revokes the stored OAuth grant and forces reauthorization; switching away from OAuth authentication revokes it too.

PATCH/api/v2/mcp-servers/{id}
X-API-Key<token>

Your Sim API key, personal or workspace-scoped. Generate one from the Sim dashboard under Settings > API Keys. A workspace API key is not accepted everywhere: operations that act on behalf of a specific human — administrative reads, secret access, and irreversible or governance-affecting writes — always reject it, whatever role the key carries. Each such operation says so in its own description, and the rejection surfaces as 403 unless the operation conceals unauthorized resources, in which case it is reported as 404. Use a personal API key for those.

In: header

Path Parameters

id*string

MCP server to retrieve, update, or delete.

Length1 <= length

Request Body

application/json

MCP server fields to change; omitted fields retain their stored values.

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://www.sim.ai/api/v2/mcp-servers/string" \  -H "Content-Type: application/json" \  -d '{    "workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",    "enabled": false  }'
{
  "data": {
    "id": "mcp-3f7a9c21",
    "name": "Docs server",
    "description": "Internal documentation tools",
    "transport": "streamable-http",
    "authType": "headers",
    "url": "https://mcp.example.com/sse",
    "timeout": 30000,
    "retries": 3,
    "enabled": false,
    "connectionStatus": "connected",
    "lastError": null,
    "toolCount": 7,
    "lastToolsRefresh": "2026-06-20T14:02:11.000Z",
    "lastConnected": "2026-06-20T14:02:11.000Z",
    "createdAt": "2026-06-01T09:14:00.000Z",
    "updatedAt": "2026-06-20T14:02:11.000Z",
    "hasHeaders": true,
    "headerNames": [
      "Authorization"
    ],
    "hasOauthClientSecret": false
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "The request is invalid."
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "The request is invalid."
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "The request is invalid."
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "The request is invalid."
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "The request is invalid."
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "The request is invalid."
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "The request is invalid."
  }
}