393 lines
14 KiB
JSON
393 lines
14 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"type": "object",
|
|
"properties": {
|
|
"mcpServers": {
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"description": {
|
|
"description": "Human-readable description of the server",
|
|
"type": "string"
|
|
},
|
|
"baseUrl": {
|
|
"description": "Base URL for HTTP/SSE transport (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"base_url": {
|
|
"description": "Base URL for HTTP/SSE transport (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"description": "Server URL for HTTP/SSE transport",
|
|
"type": "string"
|
|
},
|
|
"serverUrl": {
|
|
"description": "Server URL for HTTP/SSE transport (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"server_url": {
|
|
"description": "Server URL for HTTP/SSE transport (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"command": {
|
|
"description": "Command to spawn for stdio transport (string or array of arguments)",
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"executable": {
|
|
"description": "Executable path for stdio transport",
|
|
"type": "string"
|
|
},
|
|
"args": {
|
|
"description": "Arguments to pass to the stdio command",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"cwd": {
|
|
"description": "Working directory for stdio servers. A leading ~ is expanded to $HOME; relative paths resolve against the config file directory",
|
|
"type": "string"
|
|
},
|
|
"headers": {
|
|
"description": "HTTP headers for requests. Supports ${VAR}, ${VAR:-fallback}, and $env:VAR placeholders",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"env": {
|
|
"description": "Environment variables for stdio commands. Supports ${VAR} and ${VAR:-fallback} placeholders",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"auth": {
|
|
"description": "Authentication method (e.g., \"oauth\")",
|
|
"type": "string"
|
|
},
|
|
"tokenCacheDir": {
|
|
"description": "Directory for caching OAuth tokens (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"token_cache_dir": {
|
|
"description": "Directory for caching OAuth tokens (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"clientName": {
|
|
"description": "Client identifier for server telemetry (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"client_name": {
|
|
"description": "Client identifier for server telemetry (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"oauthClientId": {
|
|
"description": "Pre-registered OAuth client id (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"oauth_client_id": {
|
|
"description": "Pre-registered OAuth client id (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"oauthClientSecret": {
|
|
"description": "Pre-registered OAuth client secret (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"oauth_client_secret": {
|
|
"description": "Pre-registered OAuth client secret (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"oauthClientSecretEnv": {
|
|
"description": "Environment variable containing the OAuth client secret",
|
|
"type": "string"
|
|
},
|
|
"oauth_client_secret_env": {
|
|
"description": "Environment variable containing the OAuth client secret",
|
|
"type": "string"
|
|
},
|
|
"oauthTokenEndpointAuthMethod": {
|
|
"description": "OAuth token endpoint auth method, e.g. client_secret_post",
|
|
"type": "string"
|
|
},
|
|
"oauth_token_endpoint_auth_method": {
|
|
"description": "OAuth token endpoint auth method, e.g. client_secret_post",
|
|
"type": "string"
|
|
},
|
|
"oauthRedirectUrl": {
|
|
"description": "Custom OAuth redirect URL (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"oauth_redirect_url": {
|
|
"description": "Custom OAuth redirect URL (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"oauthScope": {
|
|
"description": "OAuth scope override (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"oauth_scope": {
|
|
"description": "OAuth scope override (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"oauthCommand": {
|
|
"description": "Custom OAuth command configuration for stdio servers (camelCase)",
|
|
"type": "object",
|
|
"properties": {
|
|
"args": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Arguments for the OAuth command"
|
|
}
|
|
},
|
|
"required": ["args"],
|
|
"additionalProperties": false
|
|
},
|
|
"oauth_command": {
|
|
"description": "Custom OAuth command configuration for stdio servers (snake_case)",
|
|
"type": "object",
|
|
"properties": {
|
|
"args": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Arguments for the OAuth command"
|
|
}
|
|
},
|
|
"required": ["args"],
|
|
"additionalProperties": false
|
|
},
|
|
"bearerToken": {
|
|
"description": "Static bearer token for authentication (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"bearer_token": {
|
|
"description": "Static bearer token for authentication (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"bearerTokenEnv": {
|
|
"description": "Environment variable name containing the bearer token (camelCase)",
|
|
"type": "string"
|
|
},
|
|
"bearer_token_env": {
|
|
"description": "Environment variable name containing the bearer token (snake_case)",
|
|
"type": "string"
|
|
},
|
|
"refresh": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tokenEndpoint": {
|
|
"description": "OAuth token endpoint used to refresh access tokens",
|
|
"type": "string"
|
|
},
|
|
"token_endpoint": {
|
|
"description": "OAuth token endpoint used to refresh access tokens",
|
|
"type": "string"
|
|
},
|
|
"clientIdEnv": {
|
|
"description": "Environment variable containing the OAuth client id",
|
|
"type": "string"
|
|
},
|
|
"client_id_env": {
|
|
"description": "Environment variable containing the OAuth client id",
|
|
"type": "string"
|
|
},
|
|
"clientSecretEnv": {
|
|
"description": "Environment variable containing the OAuth client secret",
|
|
"type": "string"
|
|
},
|
|
"client_secret_env": {
|
|
"description": "Environment variable containing the OAuth client secret",
|
|
"type": "string"
|
|
},
|
|
"clientAuthMethod": {
|
|
"description": "OAuth token endpoint client auth method",
|
|
"type": "string"
|
|
},
|
|
"client_auth_method": {
|
|
"description": "OAuth token endpoint client auth method",
|
|
"type": "string"
|
|
},
|
|
"refreshSkewSeconds": {
|
|
"description": "Refresh before expiry by this many seconds",
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"refresh_skew_seconds": {
|
|
"description": "Refresh before expiry by this many seconds",
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"accessTokenEnv": {
|
|
"description": "STDIO env var that receives the refreshed access token",
|
|
"type": "string"
|
|
},
|
|
"access_token_env": {
|
|
"description": "STDIO env var that receives the refreshed access token",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "Refreshable bearer token settings"
|
|
},
|
|
"httpFetch": {
|
|
"description": "HTTP fetch implementation for Streamable HTTP/SSE requests",
|
|
"type": "string",
|
|
"enum": ["default", "node-http1"]
|
|
},
|
|
"http_fetch": {
|
|
"description": "HTTP fetch implementation for Streamable HTTP/SSE requests",
|
|
"type": "string",
|
|
"enum": ["default", "node-http1"]
|
|
},
|
|
"lifecycle": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"const": "keep-alive",
|
|
"description": "Keep the server connection alive"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"const": "ephemeral",
|
|
"description": "Connect only when needed"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"const": "keep-alive"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"const": "ephemeral"
|
|
}
|
|
],
|
|
"description": "Connection lifecycle mode"
|
|
},
|
|
"idleTimeoutMs": {
|
|
"description": "Idle timeout in milliseconds before disconnecting",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": ["mode"],
|
|
"additionalProperties": false
|
|
}
|
|
],
|
|
"description": "Server connection lifecycle: keep-alive maintains persistent connections, ephemeral connects on-demand"
|
|
},
|
|
"logging": {
|
|
"description": "Logging configuration for the server",
|
|
"type": "object",
|
|
"properties": {
|
|
"daemon": {
|
|
"description": "Daemon-specific logging configuration",
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "Enable daemon logging for this server",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"allowedTools": {
|
|
"description": "Only these exact tool names are exposed (camelCase)",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"allowed_tools": {
|
|
"description": "Only these exact tool names are exposed (snake_case)",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"blockedTools": {
|
|
"description": "These exact tool names are hidden and blocked (camelCase)",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"blocked_tools": {
|
|
"description": "These exact tool names are hidden and blocked (snake_case)",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"description": "MCP server definition supporting both HTTP/SSE and stdio transports"
|
|
},
|
|
"description": "Map of server names to their configurations"
|
|
},
|
|
"daemonIdleTimeoutMs": {
|
|
"description": "Idle timeout in milliseconds before shutting down an inactive daemon",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"daemon_idle_timeout_ms": {
|
|
"description": "Idle timeout in milliseconds before shutting down an inactive daemon",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"imports": {
|
|
"description": "Editor configurations to import servers from. Omit to use defaults, or set to [] to disable imports",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": ["cursor", "claude-code", "claude-desktop", "codex", "windsurf", "opencode", "vscode"],
|
|
"description": "Supported editor/client configurations to import MCP servers from"
|
|
}
|
|
},
|
|
"$schema": {
|
|
"type": "string",
|
|
"description": "JSON Schema URL for IDE validation and autocomplete"
|
|
}
|
|
},
|
|
"required": ["mcpServers"],
|
|
"additionalProperties": false,
|
|
"description": "mcporter configuration file schema",
|
|
"$id": "https://raw.githubusercontent.com/steipete/mcporter/main/mcporter.schema.json"
|
|
}
|