Simplified the repository to have a single OAuth pattern with separate auth and MCP servers at the top level. Preserved embedded OAuth documentation as an alternative pattern.
4.4 KiB
Endpoint Reference
Complete listing of all endpoints provided by each server in the architecture.
Auth Server (Port 3001)
Standalone OAuth 2.0 authorization server that handles authentication and token management.
OAuth Authorization Endpoints
Provided by mcpAuthRouter from MCP SDK:
GET /.well-known/oauth-authorization-server- OAuth metadata discoveryPOST /register- Dynamic client registrationGET /authorize- Authorization request (starts OAuth flow)POST /token- Token exchange (authorization code → tokens) and token refreshPOST /revoke- Token revocation
Token Introspection
Custom implementation for resource server token validation:
POST /introspect- Token introspection (RFC 7662)- Called by MCP server to validate tokens
- Returns token status, scopes, expiry, user info
- Protected endpoint (not public)
Mock Upstream Identity Provider Endpoints
Local simulation of upstream IDP (would be external in production):
GET /mock-upstream-idp/authorize- Mock user authentication pageGET /mock-upstream-idp/callback- IDP callback handler (returns userId)
Note: In production, this would redirect to external providers like Auth0, Okta, Google, GitHub, etc. These endpoints simulate that functionality for demonstration purposes.
Utility Endpoints
GET /health- Health check (returns server status)GET /mcp-logo.png- Logo asset for auth pages
MCP Server (Port 3232)
MCP resource server that implements the Model Context Protocol with delegated authentication.
OAuth Metadata (Read-Only)
Provided by mcpAuthMetadataRouter:
GET /.well-known/oauth-authorization-server- Returns metadata pointing to external auth server- Tells clients to use auth server at :3001
- Read-only - no token issuance happens here
MCP Resource Endpoints
Streamable HTTP Transport (Recommended)
GET /mcp- Establish SSE stream for sessionPOST /mcp- Initialize session or send messagesDELETE /mcp- Terminate session
SSE Transport (Legacy)
GET /sse- Establish SSE connectionPOST /message- Send messages to session
All MCP endpoints require Authorization: Bearer <token> header. Tokens are validated by calling the auth server's /introspect endpoint.
Static Assets
GET /- Splash page (HTML)GET /mcp-logo.png- MCP logoGET /styles.css- Stylesheet
Architecture Overview
| Endpoint Type | Auth Server | MCP Server |
|---|---|---|
OAuth authorization (/authorize, /token) |
✅ Full implementation | ❌ None (delegates to auth server) |
Token introspection (/introspect) |
✅ Provides service | ❌ Consumes service |
| OAuth metadata discovery | ✅ Authoritative | ✅ Read-only redirect |
Mock IDP (/mock-upstream-idp) |
✅ Yes | ❌ No |
MCP resources (/mcp, /sse) |
❌ No | ✅ Yes |
Headers
Required Headers
For MCP endpoints:
Authorization: Bearer <access_token>- OAuth access token (required)Mcp-Session-Id: <session_id>- Session identifier (for Streamable HTTP, after initialization)
For OAuth endpoints:
Content-Type: application/json(for POST requests)Content-Type: application/x-www-form-urlencoded(for/tokenendpoint)
Response Headers
Streamable HTTP:
Mcp-Session-Id- Session ID (returned on initialization)Content-Type: text/event-stream- For SSE responses
SSE Transport:
Content-Type: text/event-streamCache-Control: no-store, max-age=0Connection: keep-alive
Authentication Flow
- Client discovers auth server: GET
/.well-known/oauth-authorization-serverfrom MCP server - Client registers: POST to auth server's
/registerendpoint - User authorizes: Redirected to auth server's
/authorizeendpoint - Token exchange: POST to auth server's
/tokenendpoint - Access MCP resources: Use bearer token with MCP server endpoints
- Token validation: MCP server validates tokens via auth server's
/introspectendpoint