---
title: "Update an MCP server"
method: PUT
path: "/api/v1/servers/{name}"
tags: ["Servers"]
---

# Update an MCP server

`PUT /api/v1/servers/{name}`

## Request

- Base URL: `https://dashboard.sealgate.ai`
- URL: `https://dashboard.sealgate.ai/api/v1/servers/{name}`
- Auth: HTTP bearer

Update an MCP server's configuration. Requires the admin role.

## Request body

- UpdateServerRequest: Partial update for an MCP server; omitted fields are left unchanged.
  - `name` string, nullable: New MCP prefix name (alphanumeric only)
  - `display_name` string, nullable: New human-readable display name
  - `command` string, nullable: New server command
  - `args` string[], nullable: New command-line arguments
  - `env` object, nullable: New environment variables
  - `url` string, nullable: Remote server URL (direct mode)
  - `headers` object, nullable: Custom HTTP headers for remote servers
  - `enabled` boolean, nullable: Enable or disable the server
  - `icon_url` string, nullable: Manual override icon URL

## Response `200`

The updated server

- ServerDetail: Summary view of a connected MCP server.
  - `id` integer, required: Server ID
  - `name` string, required: Server MCP prefix name (alphanumeric)
  - `display_name` string, required: Human-readable display name
  - `command` string, required: Server command
  - `enabled` boolean, required: Whether the server is enabled at the admin/global level
  - `tool_count` integer, required: Number of registered tools/elements
  - `needs_config` boolean, required: Whether the server has unconfigured required template fields
  - `domain` string, required: Domain this server belongs to
  - `is_builtin` boolean: Whether this is the auto-provisioned builtin server
  - `user_enabled` boolean, nullable: User-level enablement override; null means no override
  - `parent_enabled` boolean, required: Effective enabled state from the role/global hierarchy, ignoring any user override
  - `user_locked` boolean: Whether the caller's enablement override is admin-locked
  - `config_warnings` string[]: Human-readable warnings about missing configuration
  - `icon_url` string, nullable: Remote icon URL
  - `runtime_health` ServerRuntimeHealth: Live runtime health of a mounted MCP server.
    - `state` 'ok' | 'starting' | 'degraded', required: Runtime state
    - `error_kind` 'auth_required' | 'forbidden' | 'rate_limited' | 'upstream_error' | 'http_error' | 'timeout' | 'unreachable' | 'mount_failed' | 'no_tools' | 'unknown' | 'null', nullable: Discriminating reason when state is degraded; null otherwise
    - `reason` string, nullable: Short user-facing label derived from error_kind
    - `detail` string, nullable: Longer error message tail
    - `last_check_at` string, date-time, nullable
    - `consecutive_failures` integer
    - `next_check_at` string, date-time, nullable
  - `authenticated_user_emails` string[]: Emails of users who have invoked tools on this server
  - `transport_type` string: Transport: 'http' (remote URL) or 'stdio_tunnel' (proxied via daemon)
  - `device_id` string, nullable: Human-readable device label for a bound stdio_tunnel device
  - `device_owner_email` string, nullable: Email of the device owner for a stdio_tunnel server
  - `elements` ServerElement[]: Server elements (tools, resources, prompts)
    - `id` integer, required: Element ID
    - `name` string, required: Element name (permission_key)
    - `compacted_name` string, nullable: Client-facing tool name after prefixing and length compaction
    - `type` string, required: Element type: tool, resource, or prompt
    - `permission_key` string, required: Permission key for this element
    - `server_name` string, required: Parent server name
  - `template_fields` TemplateFieldSchema[]: Template fields requiring configuration
    - `id` integer, required
    - `field_type` string, required: Field type: arg or env
    - `template_key` string, required
    - `description` string, nullable
    - `example` string, nullable
    - `required` boolean
    - `set_by_user` boolean
    - `has_admin_value` boolean
    - `has_user_value` boolean
  - `args` string[]: Command-line arguments
  - `env` object: Environment variables
  - `url` string, nullable: Remote server URL (direct mode)
  - `headers` object: Custom HTTP headers
  - `version` string, nullable: Server version
  - `from_marketplace_id` string, nullable: Marketplace ID this server was installed from

## Other responses

- `400`: The request was invalid
- `401`: Missing or invalid API key
- `403`: The caller's role is not permitted to perform this action
- `404`: The requested resource was not found
- `422`: Request validation failed

---

[API](https://skmtc.dev/sealgate/apis/sealgate-management-api.md) · [All operations](https://skmtc.dev/sealgate/apis/sealgate-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sealgate/apis/sealgate-management-api/revisions/c9ca2e599065?raw)
