mcphub-server 3.4.0__tar.gz → 3.7.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.4.0/mcphub_server.egg-info → mcphub_server-3.7.0}/PKG-INFO +39 -71
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/README.md +37 -69
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/__init__.py +1 -8
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/dashboard/routes.py +84 -113
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/factory.py +4 -4
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/registry.py +1 -5
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/health.py +7 -23
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/plugin_visibility.py +2 -2
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/settings.py +2 -2
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/site_api.py +12 -1
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/site_manager.py +9 -177
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/connect.html +2 -2
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/projects/list.html +8 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0/mcphub_server.egg-info}/PKG-INFO +39 -71
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/SOURCES.txt +11 -2
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/requires.txt +1 -1
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/top_level.txt +0 -1
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/__init__.py +3 -0
- mcphub_server-3.7.0/plugins/coolify/__init__.py +5 -0
- mcphub_server-3.7.0/plugins/coolify/client.py +269 -0
- mcphub_server-3.7.0/plugins/coolify/handlers/__init__.py +13 -0
- mcphub_server-3.7.0/plugins/coolify/handlers/applications.py +860 -0
- mcphub_server-3.7.0/plugins/coolify/handlers/deployments.py +162 -0
- mcphub_server-3.7.0/plugins/coolify/handlers/servers.py +286 -0
- mcphub_server-3.7.0/plugins/coolify/plugin.py +106 -0
- mcphub_server-3.7.0/plugins/coolify/schemas/__init__.py +1 -0
- mcphub_server-3.7.0/plugins/coolify/schemas/common.py +55 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/issues.py +26 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/pull_requests.py +7 -6
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/webhooks.py +110 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/export.py +2 -2
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/utils.py +1 -1
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/client.py +3 -4
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/plugin.py +1 -1
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/pyproject.toml +3 -4
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/server.py +32 -44
- mcphub_server-3.7.0/tests/test_coolify.py +452 -0
- mcphub_server-3.7.0/tests/test_gitea_plugin.py +1135 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_plugin_visibility.py +7 -5
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_site_manager.py +1 -64
- mcphub_server-3.4.0/core/project_manager.py +0 -259
- mcphub_server-3.4.0/server_multi.py +0 -1153
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/LICENSE +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/admin_utils.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/api_keys.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/audit_log.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/auth.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/config_snippets.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/context.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/dashboard/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/dashboard/auth.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/database.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/encryption.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/config.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/middleware.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/i18n.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/middleware/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/client_registry.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/csrf.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/pkce.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/schemas.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/server.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/storage.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/token_manager.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/rate_limiter.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/base.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/404.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/api-keys/list.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/audit-logs/list.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/auth-login.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/base.html +3 -3
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/health/index.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/health/projects-partial.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/index.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/login.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/oauth-clients/list.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/partials/head_assets.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/profile.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/projects/detail.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/service.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/services_list.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/settings/index.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/sites/add.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/sites/edit.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/sites/list.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/user-oauth-clients.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/oauth/authorize.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/oauth/error.html +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/tool_generator.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/tool_registry.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/user_auth.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/user_endpoints.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/user_keys.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/dependency_links.txt +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/entry_points.txt +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/client.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/databases.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/documents.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/functions.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/messaging.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/storage.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/system.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/teams.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/users.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/base.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/client.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/access.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/automation.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/collections.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/content.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/dashboards.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/files.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/items.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/system.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/users.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/client.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/repositories.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/users.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/common.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/issue.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/pull_request.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/repository.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/user.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/webhook.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/client.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/credentials.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/executions.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/projects.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/system.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/tags.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/users.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/variables.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/workflows.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/client.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/clients.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/events.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/profiles.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/projects.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/reports.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/system.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/client.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/admin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/auth.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/database.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/functions.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/storage.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/system.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/woocommerce/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/woocommerce/plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/comments.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/coupons.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/customers.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/media.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/menus.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/orders.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/posts.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/products.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/reports.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/seo.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/site.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/taxonomy.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/users.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/wp_cli.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/plugin_old_backup.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/common.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/media.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/order.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/post.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/product.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/seo.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/wp_cli.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/handlers/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/handlers/bulk.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/handlers/database.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/handlers/system.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/schemas/__init__.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/schemas/bulk.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/schemas/database.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/schemas/system.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/setup.cfg +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_admin_system.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_api_keys.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_auth.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_auth_logic.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_config_snippets.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_dashboard.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_database.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_dynamic_endpoints_integration.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_encryption.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_f3_admin_stats.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_f3_last_tested.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_f3_service_pages.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_basic_auth.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_client_registry.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_integration.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_pkce.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_resource.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_revoke.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_schemas.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_storage.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_token_manager.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_openpanel_plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_rate_limiter.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_site_api.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_tenant_isolation.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_tool_registry.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_user_auth.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_user_endpoints.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_user_keys.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_woocommerce_plugin.py +0 -0
- {mcphub_server-3.4.0 → mcphub_server-3.7.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.7.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
|
|
@@ -62,7 +62,7 @@ Connect your sites, stores, repos, and databases — manage them all through Cla
|
|
|
62
62
|
[](https://www.python.org/)
|
|
63
63
|
[](https://pypi.org/project/mcphub-server/)
|
|
64
64
|
[](https://hub.docker.com/r/airano/mcphub)
|
|
65
|
-
[]()
|
|
66
66
|
[]()
|
|
67
67
|
[](https://github.com/airano-ir/mcphub/actions/workflows/ci.yml)
|
|
68
68
|
|
|
@@ -74,7 +74,7 @@ Connect your sites, stores, repos, and databases — manage them all through Cla
|
|
|
74
74
|
|
|
75
75
|
WordPress powers 43% of the web. WooCommerce runs 36% of online stores. Yet **no MCP server existed** for managing them through AI — until now.
|
|
76
76
|
|
|
77
|
-
MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
77
|
+
MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and 8 other self-hosted services through any AI assistant. Instead of clicking through dashboards, just tell your AI what to do:
|
|
78
78
|
|
|
79
79
|
> *"Update the SEO meta description for all WooCommerce products that don't have one"*
|
|
80
80
|
>
|
|
@@ -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,9 +108,10 @@ 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
|
+
| **Coolify** | 30 | Applications, deployments, servers, env vars, logs |
|
|
114
115
|
| **System** | 24 | Health monitoring, API keys, OAuth management, audit |
|
|
115
116
|
| **Total** | **596** | Constant count — scales to unlimited sites |
|
|
116
117
|
|
|
@@ -124,14 +125,14 @@ MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
|
124
125
|
git clone https://github.com/airano-ir/mcphub.git
|
|
125
126
|
cd mcphub
|
|
126
127
|
cp env.example .env
|
|
127
|
-
# Edit .env — set MASTER_API_KEY
|
|
128
|
+
# Edit .env — set MASTER_API_KEY, then add sites via the web dashboard
|
|
128
129
|
docker compose up -d
|
|
129
130
|
```
|
|
130
131
|
|
|
131
132
|
### Option 2: Docker Hub (No Clone)
|
|
132
133
|
|
|
133
134
|
```bash
|
|
134
|
-
# Create a .env file with
|
|
135
|
+
# Create a .env file with MASTER_API_KEY (see "Configure Your Sites" below)
|
|
135
136
|
docker run -d --name mcphub -p 8000:8000 --env-file .env airano/mcphub:latest
|
|
136
137
|
```
|
|
137
138
|
|
|
@@ -142,7 +143,7 @@ git clone https://github.com/airano-ir/mcphub.git
|
|
|
142
143
|
cd mcphub
|
|
143
144
|
pip install -e .
|
|
144
145
|
cp env.example .env
|
|
145
|
-
# Edit .env
|
|
146
|
+
# Edit .env — set MASTER_API_KEY
|
|
146
147
|
python server.py --transport streamable-http --port 8000
|
|
147
148
|
```
|
|
148
149
|
|
|
@@ -174,28 +175,15 @@ Your personal MCP endpoint: `https://mcp.example.com/u/{your-user-id}/{alias}/mc
|
|
|
174
175
|
|
|
175
176
|
### Configure Your Sites
|
|
176
177
|
|
|
177
|
-
|
|
178
|
+
Sites are managed via the **web dashboard** — no environment variables needed.
|
|
179
|
+
|
|
180
|
+
1. Set `MASTER_API_KEY` in your `.env` file
|
|
181
|
+
2. Start the server and open the dashboard
|
|
182
|
+
3. Add sites with their credentials (URL, username, password/token)
|
|
178
183
|
|
|
179
184
|
```bash
|
|
180
|
-
#
|
|
185
|
+
# .env — only system configuration needed
|
|
181
186
|
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
187
|
```
|
|
200
188
|
|
|
201
189
|
<details>
|
|
@@ -207,45 +195,26 @@ GITEA_REPO1_ALIAS=mygitea
|
|
|
207
195
|
|----------|----------|---------|-------------|
|
|
208
196
|
| `MASTER_API_KEY` | Recommended | Auto-generated | Master API key for admin access |
|
|
209
197
|
| `LOG_LEVEL` | No | `INFO` | Logging level (DEBUG, INFO, WARNING, ERROR) |
|
|
198
|
+
| `ENCRYPTION_KEY` | For Live Platform | — | AES-256-GCM key for credential encryption |
|
|
210
199
|
| `OAUTH_JWT_SECRET_KEY` | For OAuth | — | JWT secret for ChatGPT auto-registration (not needed for Claude/Cursor) |
|
|
211
200
|
| `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
201
|
|
|
218
202
|
> **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
203
|
|
|
220
|
-
**Plugin
|
|
221
|
-
|
|
222
|
-
| Plugin | Required
|
|
223
|
-
|
|
224
|
-
|
|
|
225
|
-
|
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
232
|
-
|
|
|
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.
|
|
235
|
-
|
|
236
|
-
**Example** — Multiple WordPress sites:
|
|
237
|
-
|
|
238
|
-
```bash
|
|
239
|
-
WORDPRESS_BLOG_URL=https://blog.example.com
|
|
240
|
-
WORDPRESS_BLOG_USERNAME=admin
|
|
241
|
-
WORDPRESS_BLOG_APP_PASSWORD=xxxx xxxx xxxx xxxx
|
|
242
|
-
WORDPRESS_BLOG_ALIAS=blog
|
|
243
|
-
|
|
244
|
-
WORDPRESS_SHOP_URL=https://shop.example.com
|
|
245
|
-
WORDPRESS_SHOP_USERNAME=admin
|
|
246
|
-
WORDPRESS_SHOP_APP_PASSWORD=yyyy yyyy yyyy yyyy
|
|
247
|
-
WORDPRESS_SHOP_ALIAS=shop
|
|
248
|
-
```
|
|
204
|
+
**Plugin Credential Reference** — when adding sites via dashboard, you'll need:
|
|
205
|
+
|
|
206
|
+
| Plugin | Required Credentials | Notes |
|
|
207
|
+
|--------|---------------------|-------|
|
|
208
|
+
| WordPress | URL, Username, App Password | [How to create App Password](https://wordpress.org/documentation/article/application-passwords/) |
|
|
209
|
+
| WooCommerce | URL, Consumer Key, Consumer Secret | WooCommerce → Settings → Advanced → REST API |
|
|
210
|
+
| WordPress Advanced | URL, Username, App Password, Container | Container = Docker container name (for WP-CLI) |
|
|
211
|
+
| Gitea | URL, Token | Settings → Applications → Personal Access Token |
|
|
212
|
+
| n8n | URL, API Key | Settings → API → Create API Key |
|
|
213
|
+
| Supabase | URL, Service Role Key | Supabase Dashboard → Settings → API |
|
|
214
|
+
| OpenPanel | URL, Client ID, Client Secret | OpenPanel Dashboard → Project Settings |
|
|
215
|
+
| Appwrite | URL, API Key, Project ID | Appwrite Console → Settings → API Keys |
|
|
216
|
+
| Directus | URL, Static Token | Directus Admin → Settings |
|
|
217
|
+
| Coolify | URL, API Token | Coolify → Keys & Tokens → API tokens |
|
|
249
218
|
|
|
250
219
|
</details>
|
|
251
220
|
|
|
@@ -347,7 +316,7 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
347
316
|
## Architecture
|
|
348
317
|
|
|
349
318
|
```
|
|
350
|
-
/mcp → Admin endpoint (all
|
|
319
|
+
/mcp → Admin endpoint (all 565 tools)
|
|
351
320
|
/system/mcp → System tools only (24 tools)
|
|
352
321
|
/wordpress/mcp → WordPress tools (67 tools)
|
|
353
322
|
/woocommerce/mcp → WooCommerce tools (28 tools)
|
|
@@ -355,9 +324,10 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
355
324
|
/gitea/mcp → Gitea tools (56 tools)
|
|
356
325
|
/n8n/mcp → n8n tools (56 tools)
|
|
357
326
|
/supabase/mcp → Supabase tools (70 tools)
|
|
358
|
-
/openpanel/mcp → OpenPanel tools (
|
|
327
|
+
/openpanel/mcp → OpenPanel tools (42 tools)
|
|
359
328
|
/appwrite/mcp → Appwrite tools (100 tools)
|
|
360
329
|
/directus/mcp → Directus tools (100 tools)
|
|
330
|
+
/coolify/mcp → Coolify tools (30 tools)
|
|
361
331
|
/project/{alias}/mcp → Per-project endpoint (auto-injects site)
|
|
362
332
|
/u/{user_id}/{alias}/mcp → Per-user endpoint (hosted/OAuth users)
|
|
363
333
|
```
|
|
@@ -369,7 +339,7 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
369
339
|
| `/u/{user_id}/{alias}/mcp` | Hosted users (OAuth login) | 22-100 |
|
|
370
340
|
| `/project/{alias}/mcp` | Single-site workflow (recommended) | 22-100 |
|
|
371
341
|
| `/{plugin}/mcp` | Multi-site management | 23-101 |
|
|
372
|
-
| `/mcp` | Admin & discovery only |
|
|
342
|
+
| `/mcp` | Admin & discovery only | 565 |
|
|
373
343
|
|
|
374
344
|
### Security
|
|
375
345
|
|
|
@@ -388,21 +358,19 @@ Some MCP Hub tools require companion WordPress plugins:
|
|
|
388
358
|
| Tools | Requirement |
|
|
389
359
|
|-------|-------------|
|
|
390
360
|
| 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`
|
|
361
|
+
| WP-CLI tools (15 tools: `wp_cache_*`, `wp_db_*`, etc.) | Docker socket + `CONTAINER` config |
|
|
362
|
+
| WordPress Advanced database/system tools | Docker socket + `CONTAINER` config |
|
|
393
363
|
| OpenPanel analytics integration | [OpenPanel Self-Hosted](wordpress-plugin/openpanel-self-hosted/) ([Download ZIP](wordpress-plugin/openpanel-self-hosted.zip)) |
|
|
394
|
-
| WooCommerce tools | WooCommerce plugin
|
|
364
|
+
| WooCommerce tools | WooCommerce plugin installed on your WordPress site |
|
|
395
365
|
|
|
396
366
|
**Docker socket** is needed for WP-CLI and WordPress Advanced system tools. Add to your docker-compose:
|
|
397
367
|
|
|
398
368
|
```yaml
|
|
399
369
|
volumes:
|
|
400
370
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
401
|
-
environment:
|
|
402
|
-
WORDPRESS_SITE1_CONTAINER: your-wp-container-name
|
|
403
371
|
```
|
|
404
372
|
|
|
405
|
-
Without Docker socket, WP-CLI tools return "not available" but all REST API tools work normally.
|
|
373
|
+
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
374
|
|
|
407
375
|
---
|
|
408
376
|
|
|
@@ -13,7 +13,7 @@ Connect your sites, stores, repos, and databases — manage them all through Cla
|
|
|
13
13
|
[](https://www.python.org/)
|
|
14
14
|
[](https://pypi.org/project/mcphub-server/)
|
|
15
15
|
[](https://hub.docker.com/r/airano/mcphub)
|
|
16
|
-
[]()
|
|
17
17
|
[]()
|
|
18
18
|
[](https://github.com/airano-ir/mcphub/actions/workflows/ci.yml)
|
|
19
19
|
|
|
@@ -25,7 +25,7 @@ Connect your sites, stores, repos, and databases — manage them all through Cla
|
|
|
25
25
|
|
|
26
26
|
WordPress powers 43% of the web. WooCommerce runs 36% of online stores. Yet **no MCP server existed** for managing them through AI — until now.
|
|
27
27
|
|
|
28
|
-
MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
28
|
+
MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and 8 other self-hosted services through any AI assistant. Instead of clicking through dashboards, just tell your AI what to do:
|
|
29
29
|
|
|
30
30
|
> *"Update the SEO meta description for all WooCommerce products that don't have one"*
|
|
31
31
|
>
|
|
@@ -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,9 +59,10 @@ 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
|
+
| **Coolify** | 30 | Applications, deployments, servers, env vars, logs |
|
|
65
66
|
| **System** | 24 | Health monitoring, API keys, OAuth management, audit |
|
|
66
67
|
| **Total** | **596** | Constant count — scales to unlimited sites |
|
|
67
68
|
|
|
@@ -75,14 +76,14 @@ MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and
|
|
|
75
76
|
git clone https://github.com/airano-ir/mcphub.git
|
|
76
77
|
cd mcphub
|
|
77
78
|
cp env.example .env
|
|
78
|
-
# Edit .env — set MASTER_API_KEY
|
|
79
|
+
# Edit .env — set MASTER_API_KEY, then add sites via the web dashboard
|
|
79
80
|
docker compose up -d
|
|
80
81
|
```
|
|
81
82
|
|
|
82
83
|
### Option 2: Docker Hub (No Clone)
|
|
83
84
|
|
|
84
85
|
```bash
|
|
85
|
-
# Create a .env file with
|
|
86
|
+
# Create a .env file with MASTER_API_KEY (see "Configure Your Sites" below)
|
|
86
87
|
docker run -d --name mcphub -p 8000:8000 --env-file .env airano/mcphub:latest
|
|
87
88
|
```
|
|
88
89
|
|
|
@@ -93,7 +94,7 @@ git clone https://github.com/airano-ir/mcphub.git
|
|
|
93
94
|
cd mcphub
|
|
94
95
|
pip install -e .
|
|
95
96
|
cp env.example .env
|
|
96
|
-
# Edit .env
|
|
97
|
+
# Edit .env — set MASTER_API_KEY
|
|
97
98
|
python server.py --transport streamable-http --port 8000
|
|
98
99
|
```
|
|
99
100
|
|
|
@@ -125,28 +126,15 @@ Your personal MCP endpoint: `https://mcp.example.com/u/{your-user-id}/{alias}/mc
|
|
|
125
126
|
|
|
126
127
|
### Configure Your Sites
|
|
127
128
|
|
|
128
|
-
|
|
129
|
+
Sites are managed via the **web dashboard** — no environment variables needed.
|
|
130
|
+
|
|
131
|
+
1. Set `MASTER_API_KEY` in your `.env` file
|
|
132
|
+
2. Start the server and open the dashboard
|
|
133
|
+
3. Add sites with their credentials (URL, username, password/token)
|
|
129
134
|
|
|
130
135
|
```bash
|
|
131
|
-
#
|
|
136
|
+
# .env — only system configuration needed
|
|
132
137
|
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
138
|
```
|
|
151
139
|
|
|
152
140
|
<details>
|
|
@@ -158,45 +146,26 @@ GITEA_REPO1_ALIAS=mygitea
|
|
|
158
146
|
|----------|----------|---------|-------------|
|
|
159
147
|
| `MASTER_API_KEY` | Recommended | Auto-generated | Master API key for admin access |
|
|
160
148
|
| `LOG_LEVEL` | No | `INFO` | Logging level (DEBUG, INFO, WARNING, ERROR) |
|
|
149
|
+
| `ENCRYPTION_KEY` | For Live Platform | — | AES-256-GCM key for credential encryption |
|
|
161
150
|
| `OAUTH_JWT_SECRET_KEY` | For OAuth | — | JWT secret for ChatGPT auto-registration (not needed for Claude/Cursor) |
|
|
162
151
|
| `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
152
|
|
|
169
153
|
> **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
154
|
|
|
171
|
-
**Plugin
|
|
172
|
-
|
|
173
|
-
| Plugin | Required
|
|
174
|
-
|
|
175
|
-
|
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
|
|
|
179
|
-
|
|
|
180
|
-
|
|
|
181
|
-
|
|
|
182
|
-
|
|
|
183
|
-
|
|
|
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.
|
|
186
|
-
|
|
187
|
-
**Example** — Multiple WordPress sites:
|
|
188
|
-
|
|
189
|
-
```bash
|
|
190
|
-
WORDPRESS_BLOG_URL=https://blog.example.com
|
|
191
|
-
WORDPRESS_BLOG_USERNAME=admin
|
|
192
|
-
WORDPRESS_BLOG_APP_PASSWORD=xxxx xxxx xxxx xxxx
|
|
193
|
-
WORDPRESS_BLOG_ALIAS=blog
|
|
194
|
-
|
|
195
|
-
WORDPRESS_SHOP_URL=https://shop.example.com
|
|
196
|
-
WORDPRESS_SHOP_USERNAME=admin
|
|
197
|
-
WORDPRESS_SHOP_APP_PASSWORD=yyyy yyyy yyyy yyyy
|
|
198
|
-
WORDPRESS_SHOP_ALIAS=shop
|
|
199
|
-
```
|
|
155
|
+
**Plugin Credential Reference** — when adding sites via dashboard, you'll need:
|
|
156
|
+
|
|
157
|
+
| Plugin | Required Credentials | Notes |
|
|
158
|
+
|--------|---------------------|-------|
|
|
159
|
+
| WordPress | URL, Username, App Password | [How to create App Password](https://wordpress.org/documentation/article/application-passwords/) |
|
|
160
|
+
| WooCommerce | URL, Consumer Key, Consumer Secret | WooCommerce → Settings → Advanced → REST API |
|
|
161
|
+
| WordPress Advanced | URL, Username, App Password, Container | Container = Docker container name (for WP-CLI) |
|
|
162
|
+
| Gitea | URL, Token | Settings → Applications → Personal Access Token |
|
|
163
|
+
| n8n | URL, API Key | Settings → API → Create API Key |
|
|
164
|
+
| Supabase | URL, Service Role Key | Supabase Dashboard → Settings → API |
|
|
165
|
+
| OpenPanel | URL, Client ID, Client Secret | OpenPanel Dashboard → Project Settings |
|
|
166
|
+
| Appwrite | URL, API Key, Project ID | Appwrite Console → Settings → API Keys |
|
|
167
|
+
| Directus | URL, Static Token | Directus Admin → Settings |
|
|
168
|
+
| Coolify | URL, API Token | Coolify → Keys & Tokens → API tokens |
|
|
200
169
|
|
|
201
170
|
</details>
|
|
202
171
|
|
|
@@ -298,7 +267,7 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
298
267
|
## Architecture
|
|
299
268
|
|
|
300
269
|
```
|
|
301
|
-
/mcp → Admin endpoint (all
|
|
270
|
+
/mcp → Admin endpoint (all 565 tools)
|
|
302
271
|
/system/mcp → System tools only (24 tools)
|
|
303
272
|
/wordpress/mcp → WordPress tools (67 tools)
|
|
304
273
|
/woocommerce/mcp → WooCommerce tools (28 tools)
|
|
@@ -306,9 +275,10 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
306
275
|
/gitea/mcp → Gitea tools (56 tools)
|
|
307
276
|
/n8n/mcp → n8n tools (56 tools)
|
|
308
277
|
/supabase/mcp → Supabase tools (70 tools)
|
|
309
|
-
/openpanel/mcp → OpenPanel tools (
|
|
278
|
+
/openpanel/mcp → OpenPanel tools (42 tools)
|
|
310
279
|
/appwrite/mcp → Appwrite tools (100 tools)
|
|
311
280
|
/directus/mcp → Directus tools (100 tools)
|
|
281
|
+
/coolify/mcp → Coolify tools (30 tools)
|
|
312
282
|
/project/{alias}/mcp → Per-project endpoint (auto-injects site)
|
|
313
283
|
/u/{user_id}/{alias}/mcp → Per-user endpoint (hosted/OAuth users)
|
|
314
284
|
```
|
|
@@ -320,7 +290,7 @@ MCP Hub supports **Open Dynamic Client Registration** (RFC 7591). ChatGPT can au
|
|
|
320
290
|
| `/u/{user_id}/{alias}/mcp` | Hosted users (OAuth login) | 22-100 |
|
|
321
291
|
| `/project/{alias}/mcp` | Single-site workflow (recommended) | 22-100 |
|
|
322
292
|
| `/{plugin}/mcp` | Multi-site management | 23-101 |
|
|
323
|
-
| `/mcp` | Admin & discovery only |
|
|
293
|
+
| `/mcp` | Admin & discovery only | 565 |
|
|
324
294
|
|
|
325
295
|
### Security
|
|
326
296
|
|
|
@@ -339,21 +309,19 @@ Some MCP Hub tools require companion WordPress plugins:
|
|
|
339
309
|
| Tools | Requirement |
|
|
340
310
|
|-------|-------------|
|
|
341
311
|
| 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`
|
|
312
|
+
| WP-CLI tools (15 tools: `wp_cache_*`, `wp_db_*`, etc.) | Docker socket + `CONTAINER` config |
|
|
313
|
+
| WordPress Advanced database/system tools | Docker socket + `CONTAINER` config |
|
|
344
314
|
| OpenPanel analytics integration | [OpenPanel Self-Hosted](wordpress-plugin/openpanel-self-hosted/) ([Download ZIP](wordpress-plugin/openpanel-self-hosted.zip)) |
|
|
345
|
-
| WooCommerce tools | WooCommerce plugin
|
|
315
|
+
| WooCommerce tools | WooCommerce plugin installed on your WordPress site |
|
|
346
316
|
|
|
347
317
|
**Docker socket** is needed for WP-CLI and WordPress Advanced system tools. Add to your docker-compose:
|
|
348
318
|
|
|
349
319
|
```yaml
|
|
350
320
|
volumes:
|
|
351
321
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
352
|
-
environment:
|
|
353
|
-
WORDPRESS_SITE1_CONTAINER: your-wp-container-name
|
|
354
322
|
```
|
|
355
323
|
|
|
356
|
-
Without Docker socket, WP-CLI tools return "not available" but all REST API tools work normally.
|
|
324
|
+
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
325
|
|
|
358
326
|
---
|
|
359
327
|
|
|
@@ -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",
|