mcphub-server 3.3.0__tar.gz → 3.6.0__tar.gz

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