MCP server hub and relay
Find a file
Agent 4e78557158 Add OAuth 2.1 with Google OIDC to MCP hub
- Implement OAuth 2.1 authorization code + PKCE flow
- Google OIDC integration with dynamic client registration
- Well-known endpoints (/.well-known/oauth-protected-resource, /.well-known/oauth-authorization-server)
- OAuth token validation middleware for all service endpoints
- SQLite-backed token and client persistence
- Automatic token cleanup on 1-hour interval
- CORS headers for public OAuth endpoints
- E2E tests gracefully skip when OAuth is configured
- Placeholder credentials in .env for manual setup

Key files:
- src/oauth.js: OAuth routes and middleware
- src/oauth-store.js: SQLite persistence layer
- src/server.js: CORS + OAuth integration
- ecosystem.config.js: OAuth env vars
- .env: OAuth credentials (placeholders)
- test/e2e.js: Graceful skip on configured OAuth

All unauthenticated requests to /:serviceId/sse and /:serviceId/message now receive 401 with WWW-Authenticate header.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 12:38:12 +00:00
.github initial: clean workspace with gitignore 2026-03-12 16:16:53 +00:00
.vscode Add VS Code MCP config for sample-mcp testing 2026-03-13 10:51:54 +00:00
admin-ui feat: add admin UI dashboard with static serving 2026-03-13 12:22:31 +00:00
mcp-bridge feat: add generic mcp-bridge for proxying upstream MCP SSE servers 2026-03-13 10:19:27 +00:00
sample-mcp mcp-hub-007: Auth hardening — per-service secrets and env-based config 2026-03-13 10:17:45 +00:00
src Add OAuth 2.1 with Google OIDC to MCP hub 2026-03-13 12:38:12 +00:00
test Add OAuth 2.1 with Google OIDC to MCP hub 2026-03-13 12:38:12 +00:00
.gitignore Add OAuth 2.1 with Google OIDC to MCP hub 2026-03-13 12:38:12 +00:00
ecosystem.config.js Add WebSocket observer endpoint for hub state monitoring 2026-03-13 12:26:55 +00:00
package-lock.json Add OAuth 2.1 with Google OIDC to MCP hub 2026-03-13 12:38:12 +00:00
package.json Add OAuth 2.1 with Google OIDC to MCP hub 2026-03-13 12:38:12 +00:00
req_test.py initial: clean workspace with gitignore 2026-03-12 16:16:53 +00:00
test.py initial: clean workspace with gitignore 2026-03-12 16:16:53 +00:00