mcphub-server 3.3.0__tar.gz → 3.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mcphub_server-3.3.0/mcphub_server.egg-info → mcphub_server-3.6.0}/PKG-INFO +38 -73
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/README.md +36 -71
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/__init__.py +1 -8
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/dashboard/routes.py +125 -113
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/endpoints/config.py +3 -4
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/endpoints/factory.py +4 -4
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/endpoints/registry.py +1 -5
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/health.py +7 -23
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/plugin_visibility.py +2 -2
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/settings.py +2 -2
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/site_api.py +20 -15
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/site_manager.py +9 -177
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/connect.html +2 -2
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/projects/list.html +8 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/service.html +25 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/sites/add.html +15 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0/mcphub_server.egg-info}/PKG-INFO +38 -73
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/mcphub_server.egg-info/SOURCES.txt +2 -4
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/mcphub_server.egg-info/requires.txt +1 -1
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/mcphub_server.egg-info/top_level.txt +0 -1
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/handlers/issues.py +26 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/handlers/pull_requests.py +7 -6
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/handlers/webhooks.py +110 -0
- mcphub_server-3.6.0/plugins/openpanel/__init__.py +11 -0
- mcphub_server-3.6.0/plugins/openpanel/client.py +640 -0
- mcphub_server-3.6.0/plugins/openpanel/handlers/__init__.py +48 -0
- mcphub_server-3.6.0/plugins/openpanel/handlers/clients.py +191 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/openpanel/handlers/events.py +87 -15
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/openpanel/handlers/export.py +113 -328
- mcphub_server-3.6.0/plugins/openpanel/handlers/profiles.py +186 -0
- mcphub_server-3.6.0/plugins/openpanel/handlers/projects.py +177 -0
- mcphub_server-3.6.0/plugins/openpanel/handlers/reports.py +88 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/openpanel/handlers/system.py +3 -33
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/openpanel/handlers/utils.py +1 -1
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/openpanel/plugin.py +30 -59
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/client.py +3 -4
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/plugin.py +1 -1
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/pyproject.toml +3 -4
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/server.py +14 -44
- mcphub_server-3.6.0/tests/test_gitea_plugin.py +1135 -0
- mcphub_server-3.6.0/tests/test_openpanel_plugin.py +767 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_plugin_visibility.py +7 -5
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_site_manager.py +1 -64
- mcphub_server-3.3.0/core/project_manager.py +0 -259
- mcphub_server-3.3.0/plugins/openpanel/__init__.py +0 -14
- mcphub_server-3.3.0/plugins/openpanel/client.py +0 -1028
- mcphub_server-3.3.0/plugins/openpanel/handlers/__init__.py +0 -44
- mcphub_server-3.3.0/plugins/openpanel/handlers/clients.py +0 -252
- mcphub_server-3.3.0/plugins/openpanel/handlers/dashboards.py +0 -467
- mcphub_server-3.3.0/plugins/openpanel/handlers/funnels.py +0 -388
- mcphub_server-3.3.0/plugins/openpanel/handlers/profiles.py +0 -451
- mcphub_server-3.3.0/plugins/openpanel/handlers/projects.py +0 -344
- mcphub_server-3.3.0/plugins/openpanel/handlers/reports.py +0 -537
- mcphub_server-3.3.0/server_multi.py +0 -1153
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/LICENSE +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/admin_utils.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/api_keys.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/audit_log.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/auth.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/config_snippets.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/context.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/dashboard/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/dashboard/auth.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/database.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/encryption.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/endpoints/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/endpoints/middleware.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/i18n.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/middleware/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/oauth/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/oauth/client_registry.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/oauth/csrf.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/oauth/pkce.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/oauth/schemas.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/oauth/server.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/oauth/storage.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/oauth/token_manager.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/rate_limiter.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/base.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/404.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/api-keys/list.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/audit-logs/list.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/auth-login.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/base.html +3 -3
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/health/index.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/health/projects-partial.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/index.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/login.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/oauth-clients/list.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/partials/head_assets.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/profile.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/projects/detail.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/services_list.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/settings/index.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/sites/edit.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/sites/list.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/dashboard/user-oauth-clients.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/oauth/authorize.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/templates/oauth/error.html +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/tool_generator.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/tool_registry.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/user_auth.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/user_endpoints.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/core/user_keys.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/mcphub_server.egg-info/dependency_links.txt +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/mcphub_server.egg-info/entry_points.txt +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/client.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/handlers/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/handlers/databases.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/handlers/documents.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/handlers/functions.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/handlers/messaging.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/handlers/storage.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/handlers/system.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/handlers/teams.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/handlers/users.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/appwrite/plugin.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/base.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/client.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/access.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/automation.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/collections.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/content.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/dashboards.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/files.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/items.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/system.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/handlers/users.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/directus/plugin.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/client.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/handlers/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/handlers/repositories.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/handlers/users.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/plugin.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/schemas/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/schemas/common.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/schemas/issue.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/schemas/pull_request.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/schemas/repository.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/schemas/user.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/gitea/schemas/webhook.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/client.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/handlers/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/handlers/credentials.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/handlers/executions.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/handlers/projects.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/handlers/system.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/handlers/tags.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/handlers/users.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/handlers/variables.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/handlers/workflows.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/n8n/plugin.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/client.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/handlers/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/handlers/admin.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/handlers/auth.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/handlers/database.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/handlers/functions.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/handlers/storage.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/handlers/system.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/supabase/plugin.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/woocommerce/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/woocommerce/plugin.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/comments.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/coupons.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/customers.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/media.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/menus.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/orders.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/posts.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/products.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/reports.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/seo.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/site.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/taxonomy.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/users.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/handlers/wp_cli.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/plugin.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/plugin_old_backup.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/schemas/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/schemas/common.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/schemas/media.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/schemas/order.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/schemas/post.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/schemas/product.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/schemas/seo.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress/wp_cli.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/handlers/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/handlers/bulk.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/handlers/database.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/handlers/system.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/schemas/__init__.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/schemas/bulk.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/schemas/database.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/plugins/wordpress_advanced/schemas/system.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/setup.cfg +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_admin_system.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_api_keys.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_auth.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_auth_logic.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_config_snippets.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_dashboard.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_database.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_dynamic_endpoints_integration.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_encryption.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_f3_admin_stats.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_f3_last_tested.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_f3_service_pages.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_oauth_basic_auth.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_oauth_client_registry.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_oauth_integration.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_oauth_pkce.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_oauth_resource.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_oauth_revoke.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_oauth_schemas.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_oauth_storage.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_oauth_token_manager.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_rate_limiter.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_site_api.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_tenant_isolation.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_tool_registry.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_user_auth.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_user_endpoints.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_user_keys.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_woocommerce_plugin.py +0 -0
- {mcphub_server-3.3.0 → mcphub_server-3.6.0}/tests/test_wordpress_plugin.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcphub-server
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.6.0
|
|
4
4
|
Summary: AI-native management hub for WordPress, WooCommerce, and self-hosted services via Model Context Protocol (MCP)
|
|
5
5
|
Author-email: MCP Hub <contact@mcphub.dev>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -24,7 +24,7 @@ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
|
|
|
24
24
|
Requires-Python: >=3.11
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: fastmcp<
|
|
27
|
+
Requires-Dist: fastmcp<4.0.0,>=3.0.0
|
|
28
28
|
Requires-Dist: httpx>=0.25.0
|
|
29
29
|
Requires-Dist: aiohttp>=3.9.0
|
|
30
30
|
Requires-Dist: pydantic>=2.5.0
|
|
@@ -63,7 +63,7 @@ Connect your sites, stores, repos, and databases — manage them all through Cla
|
|
|
63
63
|
[](https://pypi.org/project/mcphub-server/)
|
|
64
64
|
[](https://hub.docker.com/r/airano/mcphub)
|
|
65
65
|
[]()
|
|
66
|
-
[]()
|
|
67
67
|
[](https://github.com/airano-ir/mcphub/actions/workflows/ci.yml)
|
|
68
68
|
|
|
69
69
|
</div>
|
|
@@ -98,7 +98,7 @@ MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
|
98
98
|
|
|
99
99
|
---
|
|
100
100
|
|
|
101
|
-
##
|
|
101
|
+
## 565 Tools Across 9 Plugins
|
|
102
102
|
|
|
103
103
|
| Plugin | Tools | What You Can Do |
|
|
104
104
|
|--------|-------|-----------------|
|
|
@@ -108,11 +108,11 @@ MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
|
108
108
|
| **Gitea** | 56 | Repos, issues, pull requests, releases, webhooks, organizations |
|
|
109
109
|
| **n8n** | 56 | Workflows, executions, credentials, variables, audit |
|
|
110
110
|
| **Supabase** | 70 | Database, auth, storage, edge functions, realtime |
|
|
111
|
-
| **OpenPanel** |
|
|
111
|
+
| **OpenPanel** | 42 | Events, export, insights, profiles, projects, system |
|
|
112
112
|
| **Appwrite** | 100 | Databases, auth, storage, functions, teams, messaging |
|
|
113
113
|
| **Directus** | 100 | Collections, items, users, files, flows, permissions |
|
|
114
114
|
| **System** | 24 | Health monitoring, API keys, OAuth management, audit |
|
|
115
|
-
| **Total** | **
|
|
115
|
+
| **Total** | **565** | Constant count — scales to unlimited sites |
|
|
116
116
|
|
|
117
117
|
---
|
|
118
118
|
|
|
@@ -124,14 +124,14 @@ MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
|
124
124
|
git clone https://github.com/airano-ir/mcphub.git
|
|
125
125
|
cd mcphub
|
|
126
126
|
cp env.example .env
|
|
127
|
-
# Edit .env — set MASTER_API_KEY
|
|
127
|
+
# Edit .env — set MASTER_API_KEY, then add sites via the web dashboard
|
|
128
128
|
docker compose up -d
|
|
129
129
|
```
|
|
130
130
|
|
|
131
131
|
### Option 2: Docker Hub (No Clone)
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
|
-
# Create a .env file with
|
|
134
|
+
# Create a .env file with MASTER_API_KEY (see "Configure Your Sites" below)
|
|
135
135
|
docker run -d --name mcphub -p 8000:8000 --env-file .env airano/mcphub:latest
|
|
136
136
|
```
|
|
137
137
|
|
|
@@ -142,7 +142,7 @@ git clone https://github.com/airano-ir/mcphub.git
|
|
|
142
142
|
cd mcphub
|
|
143
143
|
pip install -e .
|
|
144
144
|
cp env.example .env
|
|
145
|
-
# Edit .env
|
|
145
|
+
# Edit .env — set MASTER_API_KEY
|
|
146
146
|
python server.py --transport streamable-http --port 8000
|
|
147
147
|
```
|
|
148
148
|
|
|
@@ -161,41 +161,28 @@ You should see the login page. Log in with your `MASTER_API_KEY` or via **GitHub
|
|
|
161
161
|
|
|
162
162
|
### Try It Now (No Setup Required)
|
|
163
163
|
|
|
164
|
-
**Don't want to self-host?**
|
|
164
|
+
**Don't want to self-host?** Use the hosted instance at **[mcp.example.com](https://mcp.example.com)**:
|
|
165
165
|
|
|
166
166
|
1. Log in with **GitHub** or **Google**
|
|
167
167
|
2. Add your sites via the dashboard (My Sites → Add Service)
|
|
168
168
|
3. Go to **Connect** page — generate config for your AI client
|
|
169
169
|
4. Copy-paste the config into Claude Desktop, VS Code, or Claude Code
|
|
170
170
|
|
|
171
|
-
Your personal MCP endpoint: `https://mcp.
|
|
171
|
+
Your personal MCP endpoint: `https://mcp.example.com/u/{your-user-id}/{alias}/mcp`
|
|
172
172
|
|
|
173
173
|
---
|
|
174
174
|
|
|
175
175
|
### Configure Your Sites
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
Sites are managed via the **web dashboard** — no environment variables needed.
|
|
178
|
+
|
|
179
|
+
1. Set `MASTER_API_KEY` in your `.env` file
|
|
180
|
+
2. Start the server and open the dashboard
|
|
181
|
+
3. Add sites with their credentials (URL, username, password/token)
|
|
178
182
|
|
|
179
183
|
```bash
|
|
180
|
-
#
|
|
184
|
+
# .env — only system configuration needed
|
|
181
185
|
MASTER_API_KEY=your-secure-key-here
|
|
182
|
-
|
|
183
|
-
# WordPress Site
|
|
184
|
-
WORDPRESS_SITE1_URL=https://myblog.com
|
|
185
|
-
WORDPRESS_SITE1_USERNAME=admin
|
|
186
|
-
WORDPRESS_SITE1_APP_PASSWORD=xxxx xxxx xxxx xxxx
|
|
187
|
-
WORDPRESS_SITE1_ALIAS=myblog
|
|
188
|
-
|
|
189
|
-
# WooCommerce Store
|
|
190
|
-
WOOCOMMERCE_STORE1_URL=https://mystore.com
|
|
191
|
-
WOOCOMMERCE_STORE1_CONSUMER_KEY=ck_xxxxx
|
|
192
|
-
WOOCOMMERCE_STORE1_CONSUMER_SECRET=cs_xxxxx
|
|
193
|
-
WOOCOMMERCE_STORE1_ALIAS=mystore
|
|
194
|
-
|
|
195
|
-
# Gitea Instance
|
|
196
|
-
GITEA_REPO1_URL=https://git.example.com
|
|
197
|
-
GITEA_REPO1_TOKEN=your_gitea_token
|
|
198
|
-
GITEA_REPO1_ALIAS=mygitea
|
|
199
186
|
```
|
|
200
187
|
|
|
201
188
|
<details>
|
|
@@ -207,45 +194,25 @@ GITEA_REPO1_ALIAS=mygitea
|
|
|
207
194
|
|----------|----------|---------|-------------|
|
|
208
195
|
| `MASTER_API_KEY` | Recommended | Auto-generated | Master API key for admin access |
|
|
209
196
|
| `LOG_LEVEL` | No | `INFO` | Logging level (DEBUG, INFO, WARNING, ERROR) |
|
|
197
|
+
| `ENCRYPTION_KEY` | For Live Platform | — | AES-256-GCM key for credential encryption |
|
|
210
198
|
| `OAUTH_JWT_SECRET_KEY` | For OAuth | — | JWT secret for ChatGPT auto-registration (not needed for Claude/Cursor) |
|
|
211
199
|
| `OAUTH_BASE_URL` | For OAuth | — | Public URL of your server (not needed for Claude/Cursor) |
|
|
212
|
-
| `OAUTH_JWT_ALGORITHM` | No | `HS256` | JWT algorithm |
|
|
213
|
-
| `OAUTH_ACCESS_TOKEN_TTL` | No | `3600` | Access token TTL in seconds |
|
|
214
|
-
| `OAUTH_REFRESH_TOKEN_TTL` | No | `604800` | Refresh token TTL in seconds |
|
|
215
|
-
| `OAUTH_STORAGE_TYPE` | No | `json` | Token storage type |
|
|
216
|
-
| `OAUTH_STORAGE_PATH` | No | `/app/data` | Data directory path |
|
|
217
200
|
|
|
218
201
|
> **OAuth** is only needed for ChatGPT Remote MCP auto-registration. For Claude Desktop, Claude Code, Cursor, and VS Code — just use `MASTER_API_KEY` with Bearer token auth.
|
|
219
202
|
|
|
220
|
-
**Plugin
|
|
221
|
-
|
|
222
|
-
| Plugin | Required Keys | Optional Keys |
|
|
223
|
-
|--------|--------------|---------------|
|
|
224
|
-
| `WORDPRESS` | `URL`, `USERNAME`, `APP_PASSWORD` | `ALIAS`, `CONTAINER` |
|
|
225
|
-
| `WOOCOMMERCE` | `URL`, `CONSUMER_KEY`, `CONSUMER_SECRET` | `ALIAS` |
|
|
226
|
-
| `WORDPRESS_ADVANCED` | `URL`, `USERNAME`, `APP_PASSWORD`, `CONTAINER` | `ALIAS` |
|
|
227
|
-
| `GITEA` | `URL`, `TOKEN` | `ALIAS` |
|
|
228
|
-
| `N8N` | `URL`, `API_KEY` | `ALIAS` |
|
|
229
|
-
| `SUPABASE` | `URL`, `SERVICE_ROLE_KEY` | `ALIAS` |
|
|
230
|
-
| `OPENPANEL` | `URL`, `CLIENT_ID`, `CLIENT_SECRET` | `ALIAS` |
|
|
231
|
-
| `APPWRITE` | `URL`, `API_KEY`, `PROJECT_ID` | `ALIAS` |
|
|
232
|
-
| `DIRECTUS` | `URL`, `TOKEN` | `ALIAS` |
|
|
233
|
-
|
|
234
|
-
> **CONTAINER**: Docker container name of your WordPress site. Optional for WordPress (enables WP-CLI tools like cache flush, transient management). **Required** for WordPress Advanced (all 22 tools use WP-CLI). Find your container: `docker ps --filter name=wordpress`. Also requires Docker socket mount.
|
|
203
|
+
**Plugin Credential Reference** — when adding sites via dashboard, you'll need:
|
|
235
204
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
WORDPRESS_SHOP_ALIAS=shop
|
|
248
|
-
```
|
|
205
|
+
| Plugin | Required Credentials | Notes |
|
|
206
|
+
|--------|---------------------|-------|
|
|
207
|
+
| WordPress | URL, Username, App Password | [How to create App Password](https://wordpress.org/documentation/article/application-passwords/) |
|
|
208
|
+
| WooCommerce | URL, Consumer Key, Consumer Secret | WooCommerce → Settings → Advanced → REST API |
|
|
209
|
+
| WordPress Advanced | URL, Username, App Password, Container | Container = Docker container name (for WP-CLI) |
|
|
210
|
+
| Gitea | URL, Token | Settings → Applications → Personal Access Token |
|
|
211
|
+
| n8n | URL, API Key | Settings → API → Create API Key |
|
|
212
|
+
| Supabase | URL, Service Role Key | Supabase Dashboard → Settings → API |
|
|
213
|
+
| OpenPanel | URL, Client ID, Client Secret | OpenPanel Dashboard → Project Settings |
|
|
214
|
+
| Appwrite | URL, API Key, Project ID | Appwrite Console → Settings → API Keys |
|
|
215
|
+
| Directus | URL, Static Token | Directus Admin → Settings |
|
|
249
216
|
|
|
250
217
|
</details>
|
|
251
218
|
|
|
@@ -347,7 +314,7 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
347
314
|
## Architecture
|
|
348
315
|
|
|
349
316
|
```
|
|
350
|
-
/mcp → Admin endpoint (all
|
|
317
|
+
/mcp → Admin endpoint (all 565 tools)
|
|
351
318
|
/system/mcp → System tools only (24 tools)
|
|
352
319
|
/wordpress/mcp → WordPress tools (67 tools)
|
|
353
320
|
/woocommerce/mcp → WooCommerce tools (28 tools)
|
|
@@ -355,21 +322,21 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
355
322
|
/gitea/mcp → Gitea tools (56 tools)
|
|
356
323
|
/n8n/mcp → n8n tools (56 tools)
|
|
357
324
|
/supabase/mcp → Supabase tools (70 tools)
|
|
358
|
-
/openpanel/mcp → OpenPanel tools (
|
|
325
|
+
/openpanel/mcp → OpenPanel tools (42 tools)
|
|
359
326
|
/appwrite/mcp → Appwrite tools (100 tools)
|
|
360
327
|
/directus/mcp → Directus tools (100 tools)
|
|
361
328
|
/project/{alias}/mcp → Per-project endpoint (auto-injects site)
|
|
362
329
|
/u/{user_id}/{alias}/mcp → Per-user endpoint (hosted/OAuth users)
|
|
363
330
|
```
|
|
364
331
|
|
|
365
|
-
**Recommendation**: Use plugin-specific endpoints instead of `/mcp` (
|
|
332
|
+
**Recommendation**: Use plugin-specific endpoints instead of `/mcp` (565 tools) to minimize token usage.
|
|
366
333
|
|
|
367
334
|
| Endpoint | Use Case | Tools |
|
|
368
335
|
|----------|----------|------:|
|
|
369
336
|
| `/u/{user_id}/{alias}/mcp` | Hosted users (OAuth login) | 22-100 |
|
|
370
337
|
| `/project/{alias}/mcp` | Single-site workflow (recommended) | 22-100 |
|
|
371
338
|
| `/{plugin}/mcp` | Multi-site management | 23-101 |
|
|
372
|
-
| `/mcp` | Admin & discovery only |
|
|
339
|
+
| `/mcp` | Admin & discovery only | 565 |
|
|
373
340
|
|
|
374
341
|
### Security
|
|
375
342
|
|
|
@@ -388,21 +355,19 @@ Some MCP Hub tools require companion WordPress plugins:
|
|
|
388
355
|
| Tools | Requirement |
|
|
389
356
|
|-------|-------------|
|
|
390
357
|
| SEO tools (`wordpress_get_post_seo`, etc.) | [Airano MCP SEO Bridge](https://wordpress.org/plugins/airano-mcp-seo-bridge/) ([GitHub](wordpress-plugin/airano-mcp-seo-bridge/)) + Rank Math or Yoast SEO |
|
|
391
|
-
| WP-CLI tools (15 tools: `wp_cache_*`, `wp_db_*`, etc.) | Docker socket + `CONTAINER`
|
|
392
|
-
| WordPress Advanced database/system tools | Docker socket + `CONTAINER`
|
|
358
|
+
| WP-CLI tools (15 tools: `wp_cache_*`, `wp_db_*`, etc.) | Docker socket + `CONTAINER` config |
|
|
359
|
+
| WordPress Advanced database/system tools | Docker socket + `CONTAINER` config |
|
|
393
360
|
| OpenPanel analytics integration | [OpenPanel Self-Hosted](wordpress-plugin/openpanel-self-hosted/) ([Download ZIP](wordpress-plugin/openpanel-self-hosted.zip)) |
|
|
394
|
-
| WooCommerce tools | WooCommerce plugin
|
|
361
|
+
| WooCommerce tools | WooCommerce plugin installed on your WordPress site |
|
|
395
362
|
|
|
396
363
|
**Docker socket** is needed for WP-CLI and WordPress Advanced system tools. Add to your docker-compose:
|
|
397
364
|
|
|
398
365
|
```yaml
|
|
399
366
|
volumes:
|
|
400
367
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
401
|
-
environment:
|
|
402
|
-
WORDPRESS_SITE1_CONTAINER: your-wp-container-name
|
|
403
368
|
```
|
|
404
369
|
|
|
405
|
-
Without Docker socket, WP-CLI tools return "not available" but all REST API tools work normally.
|
|
370
|
+
Set the `container` field when adding a WordPress site in the dashboard. Without Docker socket, WP-CLI tools return "not available" but all REST API tools work normally.
|
|
406
371
|
|
|
407
372
|
---
|
|
408
373
|
|
|
@@ -14,7 +14,7 @@ Connect your sites, stores, repos, and databases — manage them all through Cla
|
|
|
14
14
|
[](https://pypi.org/project/mcphub-server/)
|
|
15
15
|
[](https://hub.docker.com/r/airano/mcphub)
|
|
16
16
|
[]()
|
|
17
|
-
[]()
|
|
18
18
|
[](https://github.com/airano-ir/mcphub/actions/workflows/ci.yml)
|
|
19
19
|
|
|
20
20
|
</div>
|
|
@@ -49,7 +49,7 @@ MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
52
|
-
##
|
|
52
|
+
## 565 Tools Across 9 Plugins
|
|
53
53
|
|
|
54
54
|
| Plugin | Tools | What You Can Do |
|
|
55
55
|
|--------|-------|-----------------|
|
|
@@ -59,11 +59,11 @@ MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
|
59
59
|
| **Gitea** | 56 | Repos, issues, pull requests, releases, webhooks, organizations |
|
|
60
60
|
| **n8n** | 56 | Workflows, executions, credentials, variables, audit |
|
|
61
61
|
| **Supabase** | 70 | Database, auth, storage, edge functions, realtime |
|
|
62
|
-
| **OpenPanel** |
|
|
62
|
+
| **OpenPanel** | 42 | Events, export, insights, profiles, projects, system |
|
|
63
63
|
| **Appwrite** | 100 | Databases, auth, storage, functions, teams, messaging |
|
|
64
64
|
| **Directus** | 100 | Collections, items, users, files, flows, permissions |
|
|
65
65
|
| **System** | 24 | Health monitoring, API keys, OAuth management, audit |
|
|
66
|
-
| **Total** | **
|
|
66
|
+
| **Total** | **565** | Constant count — scales to unlimited sites |
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
|
|
@@ -75,14 +75,14 @@ MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
|
75
75
|
git clone https://github.com/airano-ir/mcphub.git
|
|
76
76
|
cd mcphub
|
|
77
77
|
cp env.example .env
|
|
78
|
-
# Edit .env — set MASTER_API_KEY
|
|
78
|
+
# Edit .env — set MASTER_API_KEY, then add sites via the web dashboard
|
|
79
79
|
docker compose up -d
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
### Option 2: Docker Hub (No Clone)
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
|
-
# Create a .env file with
|
|
85
|
+
# Create a .env file with MASTER_API_KEY (see "Configure Your Sites" below)
|
|
86
86
|
docker run -d --name mcphub -p 8000:8000 --env-file .env airano/mcphub:latest
|
|
87
87
|
```
|
|
88
88
|
|
|
@@ -93,7 +93,7 @@ git clone https://github.com/airano-ir/mcphub.git
|
|
|
93
93
|
cd mcphub
|
|
94
94
|
pip install -e .
|
|
95
95
|
cp env.example .env
|
|
96
|
-
# Edit .env
|
|
96
|
+
# Edit .env — set MASTER_API_KEY
|
|
97
97
|
python server.py --transport streamable-http --port 8000
|
|
98
98
|
```
|
|
99
99
|
|
|
@@ -112,41 +112,28 @@ You should see the login page. Log in with your `MASTER_API_KEY` or via **GitHub
|
|
|
112
112
|
|
|
113
113
|
### Try It Now (No Setup Required)
|
|
114
114
|
|
|
115
|
-
**Don't want to self-host?**
|
|
115
|
+
**Don't want to self-host?** Use the hosted instance at **[mcp.example.com](https://mcp.example.com)**:
|
|
116
116
|
|
|
117
117
|
1. Log in with **GitHub** or **Google**
|
|
118
118
|
2. Add your sites via the dashboard (My Sites → Add Service)
|
|
119
119
|
3. Go to **Connect** page — generate config for your AI client
|
|
120
120
|
4. Copy-paste the config into Claude Desktop, VS Code, or Claude Code
|
|
121
121
|
|
|
122
|
-
Your personal MCP endpoint: `https://mcp.
|
|
122
|
+
Your personal MCP endpoint: `https://mcp.example.com/u/{your-user-id}/{alias}/mcp`
|
|
123
123
|
|
|
124
124
|
---
|
|
125
125
|
|
|
126
126
|
### Configure Your Sites
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
Sites are managed via the **web dashboard** — no environment variables needed.
|
|
129
|
+
|
|
130
|
+
1. Set `MASTER_API_KEY` in your `.env` file
|
|
131
|
+
2. Start the server and open the dashboard
|
|
132
|
+
3. Add sites with their credentials (URL, username, password/token)
|
|
129
133
|
|
|
130
134
|
```bash
|
|
131
|
-
#
|
|
135
|
+
# .env — only system configuration needed
|
|
132
136
|
MASTER_API_KEY=your-secure-key-here
|
|
133
|
-
|
|
134
|
-
# WordPress Site
|
|
135
|
-
WORDPRESS_SITE1_URL=https://myblog.com
|
|
136
|
-
WORDPRESS_SITE1_USERNAME=admin
|
|
137
|
-
WORDPRESS_SITE1_APP_PASSWORD=xxxx xxxx xxxx xxxx
|
|
138
|
-
WORDPRESS_SITE1_ALIAS=myblog
|
|
139
|
-
|
|
140
|
-
# WooCommerce Store
|
|
141
|
-
WOOCOMMERCE_STORE1_URL=https://mystore.com
|
|
142
|
-
WOOCOMMERCE_STORE1_CONSUMER_KEY=ck_xxxxx
|
|
143
|
-
WOOCOMMERCE_STORE1_CONSUMER_SECRET=cs_xxxxx
|
|
144
|
-
WOOCOMMERCE_STORE1_ALIAS=mystore
|
|
145
|
-
|
|
146
|
-
# Gitea Instance
|
|
147
|
-
GITEA_REPO1_URL=https://git.example.com
|
|
148
|
-
GITEA_REPO1_TOKEN=your_gitea_token
|
|
149
|
-
GITEA_REPO1_ALIAS=mygitea
|
|
150
137
|
```
|
|
151
138
|
|
|
152
139
|
<details>
|
|
@@ -158,45 +145,25 @@ GITEA_REPO1_ALIAS=mygitea
|
|
|
158
145
|
|----------|----------|---------|-------------|
|
|
159
146
|
| `MASTER_API_KEY` | Recommended | Auto-generated | Master API key for admin access |
|
|
160
147
|
| `LOG_LEVEL` | No | `INFO` | Logging level (DEBUG, INFO, WARNING, ERROR) |
|
|
148
|
+
| `ENCRYPTION_KEY` | For Live Platform | — | AES-256-GCM key for credential encryption |
|
|
161
149
|
| `OAUTH_JWT_SECRET_KEY` | For OAuth | — | JWT secret for ChatGPT auto-registration (not needed for Claude/Cursor) |
|
|
162
150
|
| `OAUTH_BASE_URL` | For OAuth | — | Public URL of your server (not needed for Claude/Cursor) |
|
|
163
|
-
| `OAUTH_JWT_ALGORITHM` | No | `HS256` | JWT algorithm |
|
|
164
|
-
| `OAUTH_ACCESS_TOKEN_TTL` | No | `3600` | Access token TTL in seconds |
|
|
165
|
-
| `OAUTH_REFRESH_TOKEN_TTL` | No | `604800` | Refresh token TTL in seconds |
|
|
166
|
-
| `OAUTH_STORAGE_TYPE` | No | `json` | Token storage type |
|
|
167
|
-
| `OAUTH_STORAGE_PATH` | No | `/app/data` | Data directory path |
|
|
168
151
|
|
|
169
152
|
> **OAuth** is only needed for ChatGPT Remote MCP auto-registration. For Claude Desktop, Claude Code, Cursor, and VS Code — just use `MASTER_API_KEY` with Bearer token auth.
|
|
170
153
|
|
|
171
|
-
**Plugin
|
|
172
|
-
|
|
173
|
-
| Plugin | Required Keys | Optional Keys |
|
|
174
|
-
|--------|--------------|---------------|
|
|
175
|
-
| `WORDPRESS` | `URL`, `USERNAME`, `APP_PASSWORD` | `ALIAS`, `CONTAINER` |
|
|
176
|
-
| `WOOCOMMERCE` | `URL`, `CONSUMER_KEY`, `CONSUMER_SECRET` | `ALIAS` |
|
|
177
|
-
| `WORDPRESS_ADVANCED` | `URL`, `USERNAME`, `APP_PASSWORD`, `CONTAINER` | `ALIAS` |
|
|
178
|
-
| `GITEA` | `URL`, `TOKEN` | `ALIAS` |
|
|
179
|
-
| `N8N` | `URL`, `API_KEY` | `ALIAS` |
|
|
180
|
-
| `SUPABASE` | `URL`, `SERVICE_ROLE_KEY` | `ALIAS` |
|
|
181
|
-
| `OPENPANEL` | `URL`, `CLIENT_ID`, `CLIENT_SECRET` | `ALIAS` |
|
|
182
|
-
| `APPWRITE` | `URL`, `API_KEY`, `PROJECT_ID` | `ALIAS` |
|
|
183
|
-
| `DIRECTUS` | `URL`, `TOKEN` | `ALIAS` |
|
|
184
|
-
|
|
185
|
-
> **CONTAINER**: Docker container name of your WordPress site. Optional for WordPress (enables WP-CLI tools like cache flush, transient management). **Required** for WordPress Advanced (all 22 tools use WP-CLI). Find your container: `docker ps --filter name=wordpress`. Also requires Docker socket mount.
|
|
154
|
+
**Plugin Credential Reference** — when adding sites via dashboard, you'll need:
|
|
186
155
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
WORDPRESS_SHOP_ALIAS=shop
|
|
199
|
-
```
|
|
156
|
+
| Plugin | Required Credentials | Notes |
|
|
157
|
+
|--------|---------------------|-------|
|
|
158
|
+
| WordPress | URL, Username, App Password | [How to create App Password](https://wordpress.org/documentation/article/application-passwords/) |
|
|
159
|
+
| WooCommerce | URL, Consumer Key, Consumer Secret | WooCommerce → Settings → Advanced → REST API |
|
|
160
|
+
| WordPress Advanced | URL, Username, App Password, Container | Container = Docker container name (for WP-CLI) |
|
|
161
|
+
| Gitea | URL, Token | Settings → Applications → Personal Access Token |
|
|
162
|
+
| n8n | URL, API Key | Settings → API → Create API Key |
|
|
163
|
+
| Supabase | URL, Service Role Key | Supabase Dashboard → Settings → API |
|
|
164
|
+
| OpenPanel | URL, Client ID, Client Secret | OpenPanel Dashboard → Project Settings |
|
|
165
|
+
| Appwrite | URL, API Key, Project ID | Appwrite Console → Settings → API Keys |
|
|
166
|
+
| Directus | URL, Static Token | Directus Admin → Settings |
|
|
200
167
|
|
|
201
168
|
</details>
|
|
202
169
|
|
|
@@ -298,7 +265,7 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
298
265
|
## Architecture
|
|
299
266
|
|
|
300
267
|
```
|
|
301
|
-
/mcp → Admin endpoint (all
|
|
268
|
+
/mcp → Admin endpoint (all 565 tools)
|
|
302
269
|
/system/mcp → System tools only (24 tools)
|
|
303
270
|
/wordpress/mcp → WordPress tools (67 tools)
|
|
304
271
|
/woocommerce/mcp → WooCommerce tools (28 tools)
|
|
@@ -306,21 +273,21 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
306
273
|
/gitea/mcp → Gitea tools (56 tools)
|
|
307
274
|
/n8n/mcp → n8n tools (56 tools)
|
|
308
275
|
/supabase/mcp → Supabase tools (70 tools)
|
|
309
|
-
/openpanel/mcp → OpenPanel tools (
|
|
276
|
+
/openpanel/mcp → OpenPanel tools (42 tools)
|
|
310
277
|
/appwrite/mcp → Appwrite tools (100 tools)
|
|
311
278
|
/directus/mcp → Directus tools (100 tools)
|
|
312
279
|
/project/{alias}/mcp → Per-project endpoint (auto-injects site)
|
|
313
280
|
/u/{user_id}/{alias}/mcp → Per-user endpoint (hosted/OAuth users)
|
|
314
281
|
```
|
|
315
282
|
|
|
316
|
-
**Recommendation**: Use plugin-specific endpoints instead of `/mcp` (
|
|
283
|
+
**Recommendation**: Use plugin-specific endpoints instead of `/mcp` (565 tools) to minimize token usage.
|
|
317
284
|
|
|
318
285
|
| Endpoint | Use Case | Tools |
|
|
319
286
|
|----------|----------|------:|
|
|
320
287
|
| `/u/{user_id}/{alias}/mcp` | Hosted users (OAuth login) | 22-100 |
|
|
321
288
|
| `/project/{alias}/mcp` | Single-site workflow (recommended) | 22-100 |
|
|
322
289
|
| `/{plugin}/mcp` | Multi-site management | 23-101 |
|
|
323
|
-
| `/mcp` | Admin & discovery only |
|
|
290
|
+
| `/mcp` | Admin & discovery only | 565 |
|
|
324
291
|
|
|
325
292
|
### Security
|
|
326
293
|
|
|
@@ -339,21 +306,19 @@ Some MCP Hub tools require companion WordPress plugins:
|
|
|
339
306
|
| Tools | Requirement |
|
|
340
307
|
|-------|-------------|
|
|
341
308
|
| SEO tools (`wordpress_get_post_seo`, etc.) | [Airano MCP SEO Bridge](https://wordpress.org/plugins/airano-mcp-seo-bridge/) ([GitHub](wordpress-plugin/airano-mcp-seo-bridge/)) + Rank Math or Yoast SEO |
|
|
342
|
-
| WP-CLI tools (15 tools: `wp_cache_*`, `wp_db_*`, etc.) | Docker socket + `CONTAINER`
|
|
343
|
-
| WordPress Advanced database/system tools | Docker socket + `CONTAINER`
|
|
309
|
+
| WP-CLI tools (15 tools: `wp_cache_*`, `wp_db_*`, etc.) | Docker socket + `CONTAINER` config |
|
|
310
|
+
| WordPress Advanced database/system tools | Docker socket + `CONTAINER` config |
|
|
344
311
|
| OpenPanel analytics integration | [OpenPanel Self-Hosted](wordpress-plugin/openpanel-self-hosted/) ([Download ZIP](wordpress-plugin/openpanel-self-hosted.zip)) |
|
|
345
|
-
| WooCommerce tools | WooCommerce plugin
|
|
312
|
+
| WooCommerce tools | WooCommerce plugin installed on your WordPress site |
|
|
346
313
|
|
|
347
314
|
**Docker socket** is needed for WP-CLI and WordPress Advanced system tools. Add to your docker-compose:
|
|
348
315
|
|
|
349
316
|
```yaml
|
|
350
317
|
volumes:
|
|
351
318
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
352
|
-
environment:
|
|
353
|
-
WORDPRESS_SITE1_CONTAINER: your-wp-container-name
|
|
354
319
|
```
|
|
355
320
|
|
|
356
|
-
Without Docker socket, WP-CLI tools return "not available" but all REST API tools work normally.
|
|
321
|
+
Set the `container` field when adding a WordPress site in the dashboard. Without Docker socket, WP-CLI tools return "not available" but all REST API tools work normally.
|
|
357
322
|
|
|
358
323
|
---
|
|
359
324
|
|
|
@@ -37,14 +37,9 @@ from core.health import (
|
|
|
37
37
|
initialize_health_monitor,
|
|
38
38
|
)
|
|
39
39
|
|
|
40
|
-
# Project and Site Management
|
|
41
|
-
from core.project_manager import ProjectManager, get_project_manager
|
|
42
|
-
|
|
43
40
|
# Rate Limiting
|
|
44
41
|
from core.rate_limiter import RateLimitConfig, RateLimiter, get_rate_limiter
|
|
45
42
|
from core.site_manager import SiteConfig, SiteManager, get_site_manager
|
|
46
|
-
|
|
47
|
-
# Legacy (kept for backward compatibility, will be removed in v2.0)
|
|
48
43
|
from core.tool_generator import ToolGenerator
|
|
49
44
|
|
|
50
45
|
# Tool Management (Option B architecture)
|
|
@@ -56,9 +51,7 @@ __all__ = [
|
|
|
56
51
|
"get_auth_manager",
|
|
57
52
|
"APIKeyManager",
|
|
58
53
|
"get_api_key_manager",
|
|
59
|
-
#
|
|
60
|
-
"ProjectManager",
|
|
61
|
-
"get_project_manager",
|
|
54
|
+
# Site Management
|
|
62
55
|
"SiteManager",
|
|
63
56
|
"SiteConfig",
|
|
64
57
|
"get_site_manager",
|