Commit Graph

20 Commits

Author SHA1 Message Date
airano
85379ec36c fix(security): validate Bearer token value in MCP endpoints, not just presence
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>
2026-02-18 16:24:04 +03:30
airano
4a45178d2d fix(auth): support auto-generated temp key in dashboard login
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>
2026-02-18 15:56:19 +03:30
airano
f303a04322 fix(auth): fix dashboard login with project API keys
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>
2026-02-18 15:43:05 +03:30
airano
bb74703311 fix(ux): improve new user onboarding experience
- 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>
2026-02-18 03:41:04 +03:30
airano
aa8afce707 fix: correct tool count (596), default English dashboard, clean up stale references
- Tool count corrected: 589→596 (was missing 4 OAuth + 4 system config tools)
- System tools: 17→24 (accurate count of @mcp.tool() functions)
- Dashboard defaults to English; Farsi only via ?lang=fa query param
- Updated across all files: README, CLAUDE.md, CONTRIBUTING, DOCKER_README,
  getting-started, CHANGELOG, endpoints config
- Removed remaining Phase references from server.py startup log
- Tests: 289 passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 03:14:28 +03:30
airano
076a0b940e fix(server): resolve lint error and clean up production logs
- Fix F821 undefined name `core` by using local import in fallback path
- Remove all internal terminology from logs (Phase X, Option B)
- Clean Phase/Option B references from tool docstrings (visible to MCP clients)
- Suppress websockets DeprecationWarning (noisy, harmless)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 02:59:48 +03:30
airano
7daf604a32 fix(packaging): move templates into core/ for PyPI distribution
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>
2026-02-18 02:41:28 +03:30
airano
5e0441c85e docs: add env.example template for new users
Previously excluded from community edition by mistake.
This template has placeholder values only (no real secrets)
and is needed for the Quick Start: `cp env.example .env`

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 02:23:46 +03:30
airano
3a3f04aca8 docs(onboarding): improve new user experience + fix OpenPanel tools
- Add DOCKER_README.md for Docker Hub overview page
- Fix docker-compose.yaml port mapping for local users ("8000:8000")
- Add "Verify It Works" section with dashboard URL to README
- Restructure env.example with clear REQUIRED section
- Add post-Docker verification checklist to getting-started.md
- Fix 4 OpenPanel tools: parameter ordering (non-default before default)
- Rebrand all "Coolify Projects" to "MCP Hub" in server and Dockerfile
- Make MCP namespace prefix stripping generic

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 02:22:48 +03:30
airano
58aa0684b2 fix(ci): add OAuth env vars to release workflow test step
Some checks failed
Release / Test before release (push) Has been cancelled
Release / Publish to PyPI (push) Has been cancelled
Release / Publish to Docker Hub (push) Has been cancelled
Release / Create GitHub Release (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v3.0.0
2026-02-17 18:54:42 +03:30
airano
0aefc29dee fix(oauth): fallback storage path for CI and local dev
Both JSONStorage and ClientRegistry now use ./data when /app doesn't
exist (Docker vs local/CI environments).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 18:32:44 +03:30
airano
c619089403 fix(oauth): fallback storage path when /app doesn't exist
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 18:27:38 +03:30
airano
01ea98b20f fix(ci): set OAUTH_STORAGE_PATH for CI runner
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 18:23:22 +03:30
airano
c73e39f6e4 fix(ci): fix black/ruff failures, add CoC and PR template
- Fix Python formatting (sync no longer strips blank lines from .py files)
- Remove test_community_build.py (tests private sync module)
- Fix ruff warnings in test files
- Add CODE_OF_CONDUCT.md
- Add .github/PULL_REQUEST_TEMPLATE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 18:19:39 +03:30
airano
c9083d86b1 docs: add PyPI/Docker badges, PyPI install option
- README: add live PyPI + Docker Hub badges, add pip install mcphub-server
- getting-started: add PyPI install as Option 2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 11:24:43 +03:30
airano
f49dc0dc44 fix(pypi): rename package to mcphub-server, remove duplicate License classifier
Published to PyPI as mcphub-server v3.0.0
https://pypi.org/project/mcphub-server/3.0.0/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:59:26 +03:30
airano
3707fef56c chore(release): publish preparation — fix docs, update badges, clean configs
- Rewrite docs/getting-started.md (correct URLs, entry points, tool counts)
- Update README: badges (289 tests, 589 tools, CI), FastMCP note, fix links
- Add PyPI classifiers: License, OS Independent, Console
- Fix community sync false positives in test allowlist
- Clean docker-compose.yaml (remove internal phase references)
- Update tool counts: WordPress 65→67, total 587→589
- Update GitHub URLs to airano-ir/mcphub

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 10:52:16 +03:30
airano
ac30087b57 docs(readme): add donation link to Support section
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 08:42:03 +03:30
airano
e5d76315bf feat(dashboard): add crypto donation link to dashboard index
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 08:36:47 +03:30
airano
cf62e65c55 Initial commit: MCP Hub Community Edition v3.0.0
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>
2026-02-17 08:34:44 +03:30