mcporter/mcporter.schema.json
2026-05-14 18:29:43 +01:00

381 lines
13 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"
},
"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"
}