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.
Files changed (237) hide show
  1. {mcphub_server-3.4.0/mcphub_server.egg-info → mcphub_server-3.7.0}/PKG-INFO +39 -71
  2. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/README.md +37 -69
  3. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/__init__.py +1 -8
  4. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/dashboard/routes.py +84 -113
  5. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/factory.py +4 -4
  6. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/registry.py +1 -5
  7. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/health.py +7 -23
  8. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/plugin_visibility.py +2 -2
  9. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/settings.py +2 -2
  10. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/site_api.py +12 -1
  11. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/site_manager.py +9 -177
  12. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/connect.html +2 -2
  13. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/projects/list.html +8 -0
  14. {mcphub_server-3.4.0 → mcphub_server-3.7.0/mcphub_server.egg-info}/PKG-INFO +39 -71
  15. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/SOURCES.txt +11 -2
  16. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/requires.txt +1 -1
  17. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/top_level.txt +0 -1
  18. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/__init__.py +3 -0
  19. mcphub_server-3.7.0/plugins/coolify/__init__.py +5 -0
  20. mcphub_server-3.7.0/plugins/coolify/client.py +269 -0
  21. mcphub_server-3.7.0/plugins/coolify/handlers/__init__.py +13 -0
  22. mcphub_server-3.7.0/plugins/coolify/handlers/applications.py +860 -0
  23. mcphub_server-3.7.0/plugins/coolify/handlers/deployments.py +162 -0
  24. mcphub_server-3.7.0/plugins/coolify/handlers/servers.py +286 -0
  25. mcphub_server-3.7.0/plugins/coolify/plugin.py +106 -0
  26. mcphub_server-3.7.0/plugins/coolify/schemas/__init__.py +1 -0
  27. mcphub_server-3.7.0/plugins/coolify/schemas/common.py +55 -0
  28. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/issues.py +26 -0
  29. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/pull_requests.py +7 -6
  30. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/webhooks.py +110 -0
  31. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/export.py +2 -2
  32. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/utils.py +1 -1
  33. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/client.py +3 -4
  34. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/plugin.py +1 -1
  35. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/pyproject.toml +3 -4
  36. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/server.py +32 -44
  37. mcphub_server-3.7.0/tests/test_coolify.py +452 -0
  38. mcphub_server-3.7.0/tests/test_gitea_plugin.py +1135 -0
  39. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_plugin_visibility.py +7 -5
  40. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_site_manager.py +1 -64
  41. mcphub_server-3.4.0/core/project_manager.py +0 -259
  42. mcphub_server-3.4.0/server_multi.py +0 -1153
  43. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/LICENSE +0 -0
  44. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/admin_utils.py +0 -0
  45. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/api_keys.py +0 -0
  46. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/audit_log.py +0 -0
  47. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/auth.py +0 -0
  48. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/config_snippets.py +0 -0
  49. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/context.py +0 -0
  50. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/dashboard/__init__.py +0 -0
  51. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/dashboard/auth.py +0 -0
  52. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/database.py +0 -0
  53. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/encryption.py +0 -0
  54. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/__init__.py +0 -0
  55. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/config.py +0 -0
  56. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/endpoints/middleware.py +0 -0
  57. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/i18n.py +0 -0
  58. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/middleware/__init__.py +0 -0
  59. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/__init__.py +0 -0
  60. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/client_registry.py +0 -0
  61. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/csrf.py +0 -0
  62. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/pkce.py +0 -0
  63. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/schemas.py +0 -0
  64. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/server.py +0 -0
  65. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/storage.py +0 -0
  66. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/oauth/token_manager.py +0 -0
  67. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/rate_limiter.py +0 -0
  68. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/base.html +0 -0
  69. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/404.html +0 -0
  70. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/api-keys/list.html +0 -0
  71. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/audit-logs/list.html +0 -0
  72. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/auth-login.html +0 -0
  73. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/base.html +3 -3
  74. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/health/index.html +0 -0
  75. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/health/projects-partial.html +0 -0
  76. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/index.html +0 -0
  77. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/login.html +0 -0
  78. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/oauth-clients/list.html +0 -0
  79. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/partials/head_assets.html +0 -0
  80. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/profile.html +0 -0
  81. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/projects/detail.html +0 -0
  82. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/service.html +0 -0
  83. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/services_list.html +0 -0
  84. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/settings/index.html +0 -0
  85. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/sites/add.html +0 -0
  86. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/sites/edit.html +0 -0
  87. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/sites/list.html +0 -0
  88. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/dashboard/user-oauth-clients.html +0 -0
  89. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/oauth/authorize.html +0 -0
  90. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/templates/oauth/error.html +0 -0
  91. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/tool_generator.py +0 -0
  92. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/tool_registry.py +0 -0
  93. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/user_auth.py +0 -0
  94. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/user_endpoints.py +0 -0
  95. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/core/user_keys.py +0 -0
  96. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/dependency_links.txt +0 -0
  97. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/mcphub_server.egg-info/entry_points.txt +0 -0
  98. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/__init__.py +0 -0
  99. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/client.py +0 -0
  100. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/__init__.py +0 -0
  101. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/databases.py +0 -0
  102. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/documents.py +0 -0
  103. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/functions.py +0 -0
  104. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/messaging.py +0 -0
  105. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/storage.py +0 -0
  106. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/system.py +0 -0
  107. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/teams.py +0 -0
  108. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/handlers/users.py +0 -0
  109. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/appwrite/plugin.py +0 -0
  110. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/base.py +0 -0
  111. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/__init__.py +0 -0
  112. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/client.py +0 -0
  113. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/__init__.py +0 -0
  114. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/access.py +0 -0
  115. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/automation.py +0 -0
  116. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/collections.py +0 -0
  117. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/content.py +0 -0
  118. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/dashboards.py +0 -0
  119. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/files.py +0 -0
  120. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/items.py +0 -0
  121. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/system.py +0 -0
  122. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/handlers/users.py +0 -0
  123. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/directus/plugin.py +0 -0
  124. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/__init__.py +0 -0
  125. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/client.py +0 -0
  126. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/__init__.py +0 -0
  127. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/repositories.py +0 -0
  128. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/handlers/users.py +0 -0
  129. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/plugin.py +0 -0
  130. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/__init__.py +0 -0
  131. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/common.py +0 -0
  132. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/issue.py +0 -0
  133. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/pull_request.py +0 -0
  134. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/repository.py +0 -0
  135. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/user.py +0 -0
  136. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/gitea/schemas/webhook.py +0 -0
  137. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/__init__.py +0 -0
  138. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/client.py +0 -0
  139. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/__init__.py +0 -0
  140. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/credentials.py +0 -0
  141. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/executions.py +0 -0
  142. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/projects.py +0 -0
  143. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/system.py +0 -0
  144. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/tags.py +0 -0
  145. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/users.py +0 -0
  146. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/variables.py +0 -0
  147. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/handlers/workflows.py +0 -0
  148. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/n8n/plugin.py +0 -0
  149. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/__init__.py +0 -0
  150. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/client.py +0 -0
  151. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/__init__.py +0 -0
  152. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/clients.py +0 -0
  153. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/events.py +0 -0
  154. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/profiles.py +0 -0
  155. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/projects.py +0 -0
  156. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/reports.py +0 -0
  157. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/handlers/system.py +0 -0
  158. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/openpanel/plugin.py +0 -0
  159. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/__init__.py +0 -0
  160. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/client.py +0 -0
  161. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/__init__.py +0 -0
  162. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/admin.py +0 -0
  163. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/auth.py +0 -0
  164. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/database.py +0 -0
  165. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/functions.py +0 -0
  166. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/storage.py +0 -0
  167. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/handlers/system.py +0 -0
  168. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/supabase/plugin.py +0 -0
  169. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/woocommerce/__init__.py +0 -0
  170. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/woocommerce/plugin.py +0 -0
  171. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/__init__.py +0 -0
  172. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/__init__.py +0 -0
  173. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/comments.py +0 -0
  174. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/coupons.py +0 -0
  175. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/customers.py +0 -0
  176. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/media.py +0 -0
  177. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/menus.py +0 -0
  178. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/orders.py +0 -0
  179. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/posts.py +0 -0
  180. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/products.py +0 -0
  181. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/reports.py +0 -0
  182. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/seo.py +0 -0
  183. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/site.py +0 -0
  184. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/taxonomy.py +0 -0
  185. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/users.py +0 -0
  186. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/handlers/wp_cli.py +0 -0
  187. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/plugin.py +0 -0
  188. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/plugin_old_backup.py +0 -0
  189. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/__init__.py +0 -0
  190. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/common.py +0 -0
  191. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/media.py +0 -0
  192. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/order.py +0 -0
  193. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/post.py +0 -0
  194. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/product.py +0 -0
  195. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/schemas/seo.py +0 -0
  196. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress/wp_cli.py +0 -0
  197. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/__init__.py +0 -0
  198. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/handlers/__init__.py +0 -0
  199. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/handlers/bulk.py +0 -0
  200. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/handlers/database.py +0 -0
  201. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/handlers/system.py +0 -0
  202. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/schemas/__init__.py +0 -0
  203. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/schemas/bulk.py +0 -0
  204. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/schemas/database.py +0 -0
  205. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/plugins/wordpress_advanced/schemas/system.py +0 -0
  206. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/setup.cfg +0 -0
  207. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_admin_system.py +0 -0
  208. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_api_keys.py +0 -0
  209. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_auth.py +0 -0
  210. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_auth_logic.py +0 -0
  211. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_config_snippets.py +0 -0
  212. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_dashboard.py +0 -0
  213. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_database.py +0 -0
  214. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_dynamic_endpoints_integration.py +0 -0
  215. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_encryption.py +0 -0
  216. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_f3_admin_stats.py +0 -0
  217. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_f3_last_tested.py +0 -0
  218. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_f3_service_pages.py +0 -0
  219. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_basic_auth.py +0 -0
  220. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_client_registry.py +0 -0
  221. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_integration.py +0 -0
  222. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_pkce.py +0 -0
  223. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_resource.py +0 -0
  224. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_revoke.py +0 -0
  225. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_schemas.py +0 -0
  226. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_storage.py +0 -0
  227. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_oauth_token_manager.py +0 -0
  228. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_openpanel_plugin.py +0 -0
  229. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_rate_limiter.py +0 -0
  230. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_site_api.py +0 -0
  231. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_tenant_isolation.py +0 -0
  232. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_tool_registry.py +0 -0
  233. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_user_auth.py +0 -0
  234. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_user_endpoints.py +0 -0
  235. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_user_keys.py +0 -0
  236. {mcphub_server-3.4.0 → mcphub_server-3.7.0}/tests/test_woocommerce_plugin.py +0 -0
  237. {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.4.0
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<3.0.0,>=2.14.0
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
  [![Python 3.11+](https://img.shields.io/badge/python-3.11+-3776ab.svg)](https://www.python.org/)
63
63
  [![PyPI](https://img.shields.io/pypi/v/mcphub-server.svg)](https://pypi.org/project/mcphub-server/)
64
64
  [![Docker](https://img.shields.io/docker/v/airano/mcphub?label=docker)](https://hub.docker.com/r/airano/mcphub)
65
- [![Tests: 481 passing](https://img.shields.io/badge/tests-481%20passing-brightgreen.svg)]()
65
+ [![Tests: 686 passing](https://img.shields.io/badge/tests-686%20passing-brightgreen.svg)]()
66
66
  [![Tools: 596](https://img.shields.io/badge/tools-596-orange.svg)]()
67
67
  [![CI](https://github.com/airano-ir/mcphub/actions/workflows/ci.yml/badge.svg)](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 7 other self-hosted services through any AI assistant. Instead of clicking through dashboards, just tell your AI what to do:
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
- ## 596 Tools Across 9 Plugins
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** | 73 | Events, funnels, profiles, dashboards, projects |
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 and add your site credentials
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 your credentials (see "Configure Your Sites" below)
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 with your site credentials
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
- Add site credentials to `.env`:
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
- # Master API Key (recommended — auto-generates temp key if omitted)
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 Site Configuration** — Pattern: `{PLUGIN_TYPE}_{SITE_ID}_{KEY}`
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.
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 596 tools)
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 (73 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 | 596 |
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` env var |
392
- | WordPress Advanced database/system tools | Docker socket + `CONTAINER` env var |
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 (separate `WOOCOMMERCE_` config) |
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
  [![Python 3.11+](https://img.shields.io/badge/python-3.11+-3776ab.svg)](https://www.python.org/)
14
14
  [![PyPI](https://img.shields.io/pypi/v/mcphub-server.svg)](https://pypi.org/project/mcphub-server/)
15
15
  [![Docker](https://img.shields.io/docker/v/airano/mcphub?label=docker)](https://hub.docker.com/r/airano/mcphub)
16
- [![Tests: 481 passing](https://img.shields.io/badge/tests-481%20passing-brightgreen.svg)]()
16
+ [![Tests: 686 passing](https://img.shields.io/badge/tests-686%20passing-brightgreen.svg)]()
17
17
  [![Tools: 596](https://img.shields.io/badge/tools-596-orange.svg)]()
18
18
  [![CI](https://github.com/airano-ir/mcphub/actions/workflows/ci.yml/badge.svg)](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 7 other self-hosted services through any AI assistant. Instead of clicking through dashboards, just tell your AI what to do:
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
- ## 596 Tools Across 9 Plugins
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** | 73 | Events, funnels, profiles, dashboards, projects |
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 and add your site credentials
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 your credentials (see "Configure Your Sites" below)
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 with your site credentials
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
- Add site credentials to `.env`:
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
- # Master API Key (recommended — auto-generates temp key if omitted)
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 Site Configuration** — Pattern: `{PLUGIN_TYPE}_{SITE_ID}_{KEY}`
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.
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 596 tools)
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 (73 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 | 596 |
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` env var |
343
- | WordPress Advanced database/system tools | Docker socket + `CONTAINER` env var |
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 (separate `WOOCOMMERCE_` config) |
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
- # Project/Site Management
60
- "ProjectManager",
61
- "get_project_manager",
54
+ # Site Management
62
55
  "SiteManager",
63
56
  "SiteConfig",
64
57
  "get_site_manager",