---
title: Update MCP Server
description: Updates the configuration of an existing MCP server, including its name, URL, authentication, or enabled status. Supports partial updates.
product: Platform API
type: reference
prerequisites:
  - /docs/api/platform/quickstart
related:
  - /docs/api/platform/guides/oauth-mcp-servers
---

# Update MCP Server



<EndpointDisplay method="patch" path="/mcp-servers/{mcpServerId}" />

## Usage [#usage]

<CustomCodeBlock languages="['TypeScript', 'cURL']" defaultLanguage="TypeScript">
  <CodeVariant
    language="TypeScript"
    title="TypeScript Example"
    code="`import { v0 } from 'v0-sdk'

const result = await v0.mcpServers.update({
  mcpServerId: 'mcp_123',
  name: 'Updated MCP Server',
  enabled: false,
})

console.log(result)`"
  />

  <CodeVariant
    language="cURL"
    title="cURL Example"
    code="`curl -X PATCH https://api.v0.dev/v1/mcp-servers/mcp_123 \
  -H &#x22;Authorization: Bearer $V0_API_KEY&#x22; \
  -H &#x22;Content-Type: application/json&#x22; \
  -d '{
    &#x22;name&#x22;: &#x22;Updated MCP Server&#x22;,
    &#x22;enabled&#x22;: false
  }'`"
  />
</CustomCodeBlock>

## API Signature [#api-signature]

### Request [#request]

#### Path Parameters [#path-parameters]

<APISignature
  parameters="[
  {
    &#x22;name&#x22;: &#x22;mcpServerId&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;The ID of the MCP server to update. Provided as a path parameter.&#x22;
  }
]"
/>

#### Body [#body]

<APISignature
  parameters="[
  {
    &#x22;name&#x22;: &#x22;name&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;A new name for the MCP server. Must be between 1 and 100 characters.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;url&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;A new URL for the MCP server endpoint. Must be a valid URL and use HTTPS in production. Maximum 500 characters.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;description&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;A new description for the MCP server. Maximum 500 characters.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;enabled&#x22;,
    &#x22;type&#x22;: &#x22;boolean&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;Whether the MCP server should be enabled.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;auth&#x22;,
    &#x22;type&#x22;: &#x22;object&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;New authentication configuration for the MCP server.&#x22;,
    &#x22;deprecated&#x22;: false,
    &#x22;properties&#x22;: [
      {
        &#x22;name&#x22;: &#x22;type&#x22;,
        &#x22;type&#x22;: &#x22;'none' | 'bearer' | 'custom-headers' | 'oauth'&#x22;,
        &#x22;required&#x22;: true,
        &#x22;description&#x22;: &#x22;The authentication method. Use 'oauth' for OAuth MCP servers, 'bearer' for token-based auth, or 'custom-headers' for key-value header pairs.&#x22;,
        &#x22;deprecated&#x22;: false
      },
      {
        &#x22;name&#x22;: &#x22;token&#x22;,
        &#x22;type&#x22;: &#x22;string&#x22;,
        &#x22;required&#x22;: false,
        &#x22;description&#x22;: &#x22;The bearer token. Required when type is 'bearer'. Maximum 1000 characters.&#x22;,
        &#x22;deprecated&#x22;: false
      },
      {
        &#x22;name&#x22;: &#x22;headers&#x22;,
        &#x22;type&#x22;: &#x22;Record<string, string>&#x22;,
        &#x22;required&#x22;: false,
        &#x22;description&#x22;: &#x22;Key-value pairs of custom headers. Required when type is 'custom-headers'. Maximum 10 headers.&#x22;,
        &#x22;deprecated&#x22;: false
      },
      {
        &#x22;name&#x22;: &#x22;config&#x22;,
        &#x22;type&#x22;: &#x22;object&#x22;,
        &#x22;required&#x22;: false,
        &#x22;description&#x22;: &#x22;OAuth configuration. Required when type is 'oauth'. The server needs an active user authorization through the Platform API OAuth flow before it can be used.&#x22;,
        &#x22;deprecated&#x22;: false,
        &#x22;properties&#x22;: [
          {
            &#x22;name&#x22;: &#x22;authorizationUrl&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;The OAuth authorization endpoint URL.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;tokenUrl&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;The OAuth token endpoint URL.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;registrationUrl&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;The optional dynamic client registration endpoint URL.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;clientId&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: true,
            &#x22;description&#x22;: &#x22;The OAuth client ID.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;clientSecret&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;The optional OAuth client secret. This value is stored securely and is never returned by the API.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;scopes&#x22;,
            &#x22;type&#x22;: &#x22;string[]&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;OAuth scopes to request during authorization. Defaults to an empty array.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;usePKCE&#x22;,
            &#x22;type&#x22;: &#x22;boolean&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;Whether to use PKCE for the authorization code flow. Defaults to true.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;issuer&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;Optional issuer identifier for mix-up protection.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;resource&#x22;,
            &#x22;type&#x22;: &#x22;string&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;Optional RFC 8707 resource indicator. For MCP servers, this is usually the MCP server URL.&#x22;,
            &#x22;deprecated&#x22;: false
          },
          {
            &#x22;name&#x22;: &#x22;clientIdMetadataDocumentSupported&#x22;,
            &#x22;type&#x22;: &#x22;boolean&#x22;,
            &#x22;required&#x22;: false,
            &#x22;description&#x22;: &#x22;Whether the authorization server supports Client ID Metadata Documents.&#x22;,
            &#x22;deprecated&#x22;: false
          }
        ]
      }
    ]
  },
  {
    &#x22;name&#x22;: &#x22;scope&#x22;,
    &#x22;type&#x22;: &#x22;'user' | 'team'&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;Whether the server should be scoped to the user or a team.&#x22;,
    &#x22;deprecated&#x22;: false
  }
]"
/>

### Response [#response]

<APISignature
  parameters="[
  {
    &#x22;name&#x22;: &#x22;id&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;A unique identifier for the MCP server.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;object&#x22;,
    &#x22;type&#x22;: &#x22;'mcp_server'&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;Fixed value identifying this object as an MCP server.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;name&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;The name of the MCP server.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;url&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;The URL of the MCP server endpoint.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;description&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;The description of the MCP server.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;enabled&#x22;,
    &#x22;type&#x22;: &#x22;boolean&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;Whether the MCP server is currently enabled.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;auth&#x22;,
    &#x22;type&#x22;: &#x22;object&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;The authentication configuration. Only the type is returned; sensitive values are redacted.&#x22;,
    &#x22;deprecated&#x22;: false,
    &#x22;properties&#x22;: [
      {
        &#x22;name&#x22;: &#x22;type&#x22;,
        &#x22;type&#x22;: &#x22;'none' | 'bearer' | 'custom-headers' | 'oauth'&#x22;,
        &#x22;required&#x22;: true,
        &#x22;description&#x22;: &#x22;The authentication method used by the server.&#x22;,
        &#x22;deprecated&#x22;: false
      }
    ]
  },
  {
    &#x22;name&#x22;: &#x22;scope&#x22;,
    &#x22;type&#x22;: &#x22;'user' | 'team'&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;Whether the server is scoped to the user or a team.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;createdAt&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: true,
    &#x22;description&#x22;: &#x22;The ISO 8601 timestamp when the server was created.&#x22;,
    &#x22;deprecated&#x22;: false
  },
  {
    &#x22;name&#x22;: &#x22;updatedAt&#x22;,
    &#x22;type&#x22;: &#x22;string&#x22;,
    &#x22;required&#x22;: false,
    &#x22;description&#x22;: &#x22;The ISO 8601 timestamp when the server was last updated.&#x22;,
    &#x22;deprecated&#x22;: false
  }
]"
/>
