upstream_servers
Manage upstream MCP servers: add, remove, update, and list. Includes Docker isolation and automatic quarantine to prevent tool poisoning attacks.
Instructions
Manage upstream MCP servers - add, remove, update, and list servers. Includes Docker isolation configuration and connection status monitoring. SECURITY: Newly added servers are automatically quarantined to prevent Tool Poisoning Attacks (TPAs). Use 'quarantine_security' tool to review and manage quarantined servers. NOTE: Unquarantining servers is only available through manual config editing or system tray UI for security.
Docker Isolation: Use 'isolation_json' parameter to configure per-server Docker images, CPU/memory limits, and network isolation. Example: {"enabled": true, "image": "node:20", "network_mode": "bridge"}.
SMART PATCHING (update/patch): Uses deep merge - only specify fields you want to change. Omitted fields are PRESERVED, not removed. Examples:
Enable server: {"operation": "patch", "name": "my-server", "enabled": true} - only enabled changes
Enable isolation: {"operation": "patch", "name": "my-server", "isolation_json": "{"enabled": true}"} - enables isolation with defaults
Update image: {"operation": "patch", "name": "my-server", "isolation_json": "{"image": "python:3.12"}"} - other isolation fields preserved
Add env var: env_json merges with existing vars
Replace args: args_json replaces entirely (arrays not merged)
Remove field: use 'null' (e.g., isolation_json: "null" removes isolation)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| args_json | No | Command arguments for stdio servers as a JSON array of strings (e.g., '["mcp-server-sqlite", "--db-path", "/path/to/db"]'). For update/patch: REPLACES all existing args (arrays are not merged). | |
| command | No | Command to run for stdio servers (e.g., 'uvx', 'python') | |
| enabled | No | Whether server should be enabled (default: true) | |
| env_json | No | Environment variables for stdio servers as JSON object (e.g., '{"API_KEY": "value"}'). For update/patch: MERGES with existing vars (new keys added, existing keys updated). | |
| headers_json | No | HTTP headers for authentication as JSON object (e.g., '{"Authorization": "Bearer token"}'). For update/patch: MERGES with existing headers (new keys added, existing keys updated). | |
| isolation_json | No | Docker isolation config as JSON object. MERGES with existing settings - only provided fields change. Use 'null' to remove isolation entirely. Example: '{"image": "python:3.12"}' updates only the image. | |
| lines | No | Number of lines to tail from server log (default: 50, max: 500) - used with tail_log operation | |
| name | No | Server name (required for add/remove/update/patch/tail_log operations) | |
| oauth_json | No | OAuth config as JSON object. MERGES with existing settings. Use 'null' to remove OAuth entirely. Fields: client_id, client_secret, scopes (array - replaces). | |
| operation | Yes | Operation: list, add, remove, update, patch, tail_log. 'update' and 'patch' use smart merge - only specified fields change, others preserved. For quarantine operations, use the 'quarantine_security' tool. | |
| protocol | No | Transport protocol: stdio, http, sse, streamable-http, auto (default: auto-detect) | |
| url | No | Server URL for HTTP/SSE servers (e.g., 'http://localhost:3001') |