From c57fd666c95337a0455ab75fc3d10f4ce16673c4 Mon Sep 17 00:00:00 2001 From: airano Date: Thu, 19 Feb 2026 14:10:54 +0330 Subject: [PATCH] feat(registry): add smithery.yaml, server.json, and MCP Registry verification tag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - smithery.yaml: Smithery.ai configuration for PyPI install via uvx - server.json: Official MCP Registry manifest (io.github.airano-ir/mcphub) - README.md: add verification tag for MCP Registry publishing Part of D.4 — MCP Registry submissions Co-Authored-By: Claude Opus 4.6 --- README.md | 2 ++ server.json | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++ smithery.yaml | 64 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 138 insertions(+) create mode 100644 server.json create mode 100644 smithery.yaml diff --git a/README.md b/README.md index db76efa..f8c3952 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + + # MCP Hub
diff --git a/server.json b/server.json new file mode 100644 index 0000000..acd11fa --- /dev/null +++ b/server.json @@ -0,0 +1,72 @@ +{ + "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json", + "name": "io.github.airano-ir/mcphub", + "description": "Unified MCP server for managing WordPress, WooCommerce, Gitea, n8n, Supabase, OpenPanel, Appwrite, and Directus with 596 tools, multi-site support, and OAuth 2.1 authentication.", + "title": "MCP Hub", + "websiteUrl": "https://github.com/airano-ir/mcphub", + "repository": { + "url": "https://github.com/airano-ir/mcphub", + "source": "github" + }, + "version": "3.0.4", + "packages": [ + { + "registryType": "pypi", + "registryBaseUrl": "https://pypi.org", + "identifier": "mcphub-server", + "version": "3.0.4", + "runtimeHint": "uvx", + "transport": { + "type": "stdio" + }, + "environmentVariables": [ + { + "name": "MASTER_API_KEY", + "description": "Master API key for authentication (also used for dashboard login)", + "isRequired": true, + "isSecret": true + }, + { + "name": "WORDPRESS_SITE1_URL", + "description": "WordPress site URL (e.g., https://example.com)" + }, + { + "name": "WORDPRESS_SITE1_USERNAME", + "description": "WordPress admin username" + }, + { + "name": "WORDPRESS_SITE1_APP_PASSWORD", + "description": "WordPress Application Password", + "isSecret": true + }, + { + "name": "GITEA_SITE1_URL", + "description": "Gitea instance URL" + }, + { + "name": "GITEA_SITE1_TOKEN", + "description": "Gitea API token", + "isSecret": true + }, + { + "name": "N8N_SITE1_URL", + "description": "n8n instance URL" + }, + { + "name": "N8N_SITE1_API_KEY", + "description": "n8n API key", + "isSecret": true + }, + { + "name": "SUPABASE_SITE1_URL", + "description": "Supabase project URL" + }, + { + "name": "SUPABASE_SITE1_SERVICE_ROLE_KEY", + "description": "Supabase service role key", + "isSecret": true + } + ] + } + ] +} diff --git a/smithery.yaml b/smithery.yaml new file mode 100644 index 0000000..014f7f0 --- /dev/null +++ b/smithery.yaml @@ -0,0 +1,64 @@ +# Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml + +startCommand: + type: stdio + configSchema: + # JSON Schema defining the configuration options for the MCP. + type: object + required: + - masterApiKey + properties: + masterApiKey: + type: string + description: Master API key for authentication. Generate with python -c "import secrets; print(secrets.token_urlsafe(32))" + wordpressSite1Url: + type: string + description: WordPress site URL (e.g., https://example.com) + wordpressSite1Username: + type: string + description: WordPress admin username + wordpressSite1AppPassword: + type: string + description: WordPress Application Password (generate in WP admin > Users > Profile > Application Passwords) + giteaSite1Url: + type: string + description: Gitea instance URL (e.g., https://gitea.example.com) + giteaSite1Token: + type: string + description: Gitea API token + n8nSite1Url: + type: string + description: n8n instance URL (e.g., https://n8n.example.com) + n8nSite1ApiKey: + type: string + description: n8n API key + supabaseSite1Url: + type: string + description: Supabase project URL + supabaseSite1ServiceRoleKey: + type: string + description: Supabase service role key + commandFunction: + # A function that produces the CLI command to start the MCP on stdio. + |- + (config) => { + const env = { MASTER_API_KEY: config.masterApiKey }; + if (config.wordpressSite1Url) { + env.WORDPRESS_SITE1_URL = config.wordpressSite1Url; + env.WORDPRESS_SITE1_USERNAME = config.wordpressSite1Username || ''; + env.WORDPRESS_SITE1_APP_PASSWORD = config.wordpressSite1AppPassword || ''; + } + if (config.giteaSite1Url) { + env.GITEA_SITE1_URL = config.giteaSite1Url; + env.GITEA_SITE1_TOKEN = config.giteaSite1Token || ''; + } + if (config.n8nSite1Url) { + env.N8N_SITE1_URL = config.n8nSite1Url; + env.N8N_SITE1_API_KEY = config.n8nSite1ApiKey || ''; + } + if (config.supabaseSite1Url) { + env.SUPABASE_SITE1_URL = config.supabaseSite1Url; + env.SUPABASE_SITE1_SERVICE_ROLE_KEY = config.supabaseSite1ServiceRoleKey || ''; + } + return { command: 'uvx', args: ['mcphub-server'], env }; + }