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 };
+ }