You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: core/schemas/mcp.go
+2Lines changed: 2 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -175,6 +175,7 @@ type MCPClientConfig struct {
175
175
IsPingAvailable*bool`json:"is_ping_available,omitempty"`// Whether the MCP server supports ping for health checks (nil/true = ping; false = listTools). Defaults to true.
176
176
ToolSyncInterval time.Duration`json:"tool_sync_interval,omitempty"`// Per-client override for tool sync interval (0 = use global, negative = disabled)
177
177
ToolPricingmap[string]float64`json:"tool_pricing,omitempty"`// Tool pricing for each tool (cost per execution)
178
+
Disabledbool`json:"disabled"`// Whether the client is intentionally disabled (stops connection and workers)
178
179
ConfigHashstring`json:"-"`// Config hash for reconciliation (not serialized)
179
180
AllowOnAllVirtualKeysbool`json:"allow_on_all_virtual_keys"`// Whether to allow the MCP client to run on all virtual keys
180
181
@@ -360,6 +361,7 @@ const (
360
361
MCPConnectionStateDisconnectedMCPConnectionState="disconnected"// Client is not connected
361
362
MCPConnectionStateErrorMCPConnectionState="error"// Client is in an error state, and cannot be used
362
363
MCPConnectionStatePendingToolsMCPConnectionState="pending_tools"// Connected but tools not yet populated
364
+
MCPConnectionStateDisabledMCPConnectionState="disabled"// Client is intentionally disabled by the user
363
365
)
364
366
365
367
// MCPClientState represents a connected MCP client with its configuration and tools.
Copy file name to clipboardExpand all lines: docs/mcp/connecting-to-servers.mdx
+38Lines changed: 38 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -921,6 +921,44 @@ if err != nil {
921
921
922
922
---
923
923
924
+
## Disabling and Re-enabling Clients
925
+
926
+
You can temporarily disable an MCP client without removing it. When disabled, Bifrost shuts down the client's connection, health monitor, and tool syncer. The client entry is preserved and its tools are invisible to inference requests until it is re-enabled.
927
+
928
+
<Tabs>
929
+
<Tabtitle="Web UI">
930
+
931
+
Use the **Enabled** toggle in the MCP Server Catalog table to disable or re-enable a client with a single click. The toggle shows a loading spinner while the API call is in flight and automatically reflects the updated state.
932
+
933
+

934
+
935
+
</Tab>
936
+
<Tabtitle="Gateway API">
937
+
938
+
```bash
939
+
# Disable a client
940
+
curl -X PUT http://localhost:8080/api/mcp/client/{id} \
941
+
-H "Content-Type: application/json" \
942
+
-d '{"disabled": true}'
943
+
944
+
# Re-enable a client (reconnects automatically)
945
+
curl -X PUT http://localhost:8080/api/mcp/client/{id} \
946
+
-H "Content-Type: application/json" \
947
+
-d '{"disabled": false}'
948
+
```
949
+
950
+
</Tab>
951
+
<Tabtitle="config.json">
952
+
953
+
The `disabled` field is a runtime API state and **cannot** be set in `config.json`. Clients defined in `config.json` always start enabled. Use the Web UI or Gateway API to disable a client after it has been created.
954
+
955
+
</Tab>
956
+
</Tabs>
957
+
958
+
The `disabled` state persists across restarts — a disabled client is loaded into memory on boot but its connection is not established until it is explicitly re-enabled. Config changes (name, tools, headers) sent in the same PUT request as a `disabled` change are applied before the connection is shut down or re-established.
Copy file name to clipboardExpand all lines: docs/openapi/paths/management/mcp.yaml
+1Lines changed: 1 addition & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -126,6 +126,7 @@ client-by-id:
126
126
Updates an existing MCP client's configuration.
127
127
Unlike client creation, tool_pricing can be included to set per-tool execution costs since tools are already fetched.
128
128
Optionally provide vk_configs to manage which virtual keys have access to this MCP server and with which tools. When provided, this fully replaces all existing VK assignments in a single atomic transaction.
129
+
Set disabled: true to shut down the client's connection and workers without removing it. Set disabled: false to reconnect a previously disabled client.
0 commit comments