- routes.py: fallback reads from importlib.metadata instead of hardcoded
- login.html: remove hardcoded default version
- README: use dynamic GitHub Release badge from shields.io
- DOCKER_README: remove hardcoded version string
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously any Bearer token (even invalid) passed the HTTP middleware and
got a session with access to tools/list and resources/list. Now the
OAuthRequiredMiddleware validates tokens against master key, API keys,
and OAuth JWT before allowing initialize.
Also fixes:
- WordPress Advanced env prefix: WORDPRESS_ → WORDPRESS_ADVANCED_ in docs
- Bump version to 3.0.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When no MASTER_API_KEY env var is set, AuthManager generates a temp key
but DashboardAuth didn't know about it. Now validate_api_key() also
checks AuthManager as a fallback, so temp key login works for first-time
Docker users.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
validate_key() requires project_id argument but was called without it
in dashboard auth. Fixed by passing skip_project_check=True.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Show full temporary API key in logs (not masked) so users can log in
- Redirect root URL / to /dashboard (was 404)
- Add setup guidance and docs link to login page
- Make footer version dynamic (read from pyproject.toml)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Templates were at project root (templates/) which is outside the Python
package, so `pip install mcphub-server` would not include them. Moved to
core/templates/ and updated path references in server.py and
core/dashboard/routes.py. Also added py-modules for server.py and
server_multi.py to pyproject.toml.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Community edition generated from private repo via sync pipeline.
Includes 9 plugins (WordPress, WooCommerce, WP Advanced, Gitea, n8n,
Supabase, OpenPanel, Appwrite, Directus) with ~587 tools.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>