{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://github.com/himorishige/hatago-hub/schemas/config.schema.json", "title": "Hatago MCP Hub Configuration", "description": "Configuration schema for Hatago MCP Hub - Lightweight MCP server management", "type": "object", "properties": { "version": { "type": "number", "description": "Configuration version", "const": 1 }, "logLevel": { "type": "string", "description": "Logging level", "enum": [ "debug", "info", "warn", "error" ], "default": "info" }, "http": { "type": "object", "description": "HTTP server configuration", "properties": { "port": { "type": "number", "description": "Port to listen on", "default": 3000 }, "host": { "type": "string", "description": "Host to bind to", "default": "localhost" } } }, "timeouts": { "type": "object", "description": "Global timeout defaults", "properties": { "connectMs": { "type": "number", "minimum": 1000, "maximum": 300000, "default": 5000, "description": "Connection timeout in milliseconds" }, "requestMs": { "type": "number", "minimum": 1000, "maximum": 300000, "default": 30000, "description": "Request timeout in milliseconds" }, "keepAliveMs": { "type": "number", "minimum": 1000, "maximum": 300000, "default": 20000, "description": "Keep-alive timeout in milliseconds" } } }, "mcpServers": { "type": "object", "description": "MCP servers configuration (Claude Code compatible)", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "http", "sse" ], "description": "Server type (optional for HTTP, required for SSE)" }, "command": { "type": "string", "description": "Command to execute for STDIO servers" }, "args": { "type": "array", "items": { "type": "string" }, "description": "Command arguments" }, "cwd": { "type": "string", "description": "Working directory for STDIO servers" }, "url": { "type": "string", "description": "URL for HTTP/SSE servers" }, "headers": { "type": "object", "additionalProperties": { "type": "string" }, "description": "HTTP headers for remote servers" }, "env": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Environment variables" }, "timeouts": { "type": "object", "description": "Server-specific timeout overrides", "properties": { "connectMs": { "type": "number", "minimum": 1000, "maximum": 300000, "default": 5000, "description": "Connection timeout in milliseconds" }, "requestMs": { "type": "number", "minimum": 1000, "maximum": 300000, "default": 30000, "description": "Request timeout in milliseconds" }, "keepAliveMs": { "type": "number", "minimum": 1000, "maximum": 300000, "default": 20000, "description": "Keep-alive timeout in milliseconds" } } }, "disabled": { "type": "boolean", "description": "Whether this server is disabled", "default": false }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Tags for grouping servers (e.g., \"dev\", \"production\", \"開発\")" } } } } }, "extends": { "oneOf": [ { "type": "string", "description": "Single parent configuration file path" }, { "type": "array", "items": { "type": "string" }, "description": "Multiple parent configuration file paths (merged in order)" } ], "description": "Parent configuration files to inherit from" }, "required": [ "version" ] }