A production-ready MCP (Model Context Protocol) OAuth 2.1 server implementation built with Next.js 15, providing secure authentication and analytics for MCP clients.
This project was built using run-llama/mcp-nextjs as a reference implementation and significantly enhanced to be fully compliant with the MCP Authorization Specification or here.
β
OAuth 2.1 Compliance - Full implementation of MCP authorization specification
β
OAuth Refresh Tokens - Automatic token refresh for seamless user experience
β
DIY Analytics Dashboard - Real-time analytics with security monitoring
β
Enhanced Security - Comprehensive threat detection and monitoring
# Install dependencies
pnpm install
# Setup environment variables (see docs/setup.md)
cp .env.example .env
# Setup database
pnpm prisma generate
pnpm prisma db push
# Start development server
pnpm dev
- Complete OAuth 2.1 Server with PKCE and refresh token support
- MCP Authorization Flow compliant with latest MCP specification
- Analytics Dashboard with real-time security monitoring
- Google Authentication integration via NextAuth.js
- Dynamic Client Registration for seamless MCP client onboarding
- Security Monitoring with threat detection and alerting
- PostgreSQL Database with automated cleanup and TTL management
π View Full Documentation - Interactive Material for MkDocs site
# Serve documentation locally with hot reload
./docs-serve.sh
# Or on Windows
docs-serve.bat
# Manual setup
pip install -r requirements.txt
mkdocs serve
We have attempted to implement all the mandatory requirements specified in the MCP Authorization Specification.
- Discovery Endpoints - Proper RFC 8414 and RFC 9728 implementation
- Resource Parameter Support - RFC 8707 Resource Indicators implementation
- Token Audience Validation - Strict security boundary enforcement
- Refresh Token Flow - OAuth 2.1 compliant token refresh
- WWW-Authenticate Headers - Proper 401 response handling
- Dynamic Client Registration - RFC 7591 support for MCP clients
- Live Demo: mcp-oauth-sample.vercel.app (Analytics dashboard requires Gmail address allowlist)
- Analytics Dashboard:
/analytics
(supports multiple Gmail addresses) - MCP Endpoints:
- SSE:
/mcp/sse
- HTTP:
/mcp/mcp
- SSE:
- OAuth Discovery:
/.well-known/oauth-authorization-server
{
"mcpServers": {
"raxIT-oauth": {
"url": "https://your-domain.com/mcp/sse",
"transport": "sse"
}
}
}
{
"mcpServers": {
"raxIT-oauth": {
"url": "https://your-domain.com/mcp/mcp",
"transport": "http-stream"
}
}
}
We warmly welcome contributions from the community! This project is open source and we encourage developers to help make it even better.
π Report Bugs - Found an issue? Open a bug report
β¨ Request Features - Have an idea? Submit a feature request
π Improve Documentation - Help make our docs clearer and more comprehensive
π§ Submit Code - Fix bugs, add features, or improve performance
π§ͺ Add Tests - Help us increase test coverage and reliability
π¨ Enhance UI/UX - Make the analytics dashboard even better
- Fork the repository to your GitHub account
- Clone your fork:
git clone https://github.com/your-username/mcp-oauth-sample.git
- Install dependencies:
pnpm install
- Set up environment: Follow our Setup Guide
- Create a branch:
git checkout -b feature/your-feature-name
- Make your changes and test thoroughly
- Commit: Use Conventional Commits format
- Push and create a Pull Request
- Code Style: Follow existing patterns and use ESLint/Prettier
- Testing: Add tests for new features and ensure existing tests pass
- Documentation: Update relevant docs for any changes
- Security: Follow security best practices, especially for OAuth flows
- Performance: Consider analytics and monitoring impact
- π¬ Discussions: Join conversations in GitHub Discussions
- πΌ LinkedIn: Follow us on LinkedIn
- π¦ X (Twitter): Follow @raxit_ai for updates
- π¦ Bluesky: Connect on Bluesky
All contributors are welcome! Whether you're fixing typos, adding major features, or helping with docs - every contribution matters. π
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Issues: GitHub Issues
- Documentation: docs/
Built with β€οΈ by raxIT AI
Based on run-llama/mcp-nextjs with enhancements to learn MCP authz.