mcp-auth
This project demonstrates a FastMCP server with both authenticated and unauthenticated endpoints. Bearer token authentication is enforced at the Nginx proxy layer, while Envoy acts as a reverse proxy, forwarding requests to the MCP server and integrating with Open Policy Agent (OPA) for fine-grained authorization decisions. The repository includes example clients and a Docker setup for running all components together.
GitHub Stars
1
User Rating
Not Rated
Favorites
0
Views
23
Forks
0
Issues
0
MCP Auth Example
This project demonstrates a FastMCP server with both authenticated and unauthenticated endpoints. Bearer token authentication is enforced at the Nginx proxy layer. Envoy acts as a reverse proxy, forwarding requests to the MCP server and integrating with Open Policy Agent (OPA) for fine-grained authorization decisions. The repository includes example clients and a Docker setup for running all components together.
Features
- FastMCP server with and without authentication
- Example Python clients for both endpoints
- Docker Compose setup with Nginx, Envoy, and OPA integration
Project Structure
.
├── Dockerfile # Dockerfile for MCP server
├── README.md
├── client.py # Example client for both endpoints
├── docker-compose.yml # Docker Compose setup (Nginx, Envoy, OPA, MCP)
├── proxy
│ ├── envoy # Envoy config
│ │ ├── Dockerfile
│ │ ├── entrypoint.sh
│ │ └── envoy.yaml
│ ├── nginx.conf # Nginx config for Bearer auth
│ └── policy.rego # OPA policy for Envoy
├── pyproject.toml # Python project config
├── server.py # Unauthenticated MCP server (port 8000)
└── uv.lock
Quick Start
1. Install Dependencies
Install Python dependencies (requires uv):
uv sync
2. Build and Start Services
Build and start all services using Docker Compose:
docker compose up --build -d
- MCP server (unauthenticated): http://localhost:8000/mcp/
- MCP server (authenticated, via Nginx): http://localhost/mcp/
3. Test the Clients
Unauthenticated
uv run client.py
Authenticated
Edit client.py
to use the authenticated endpoint and provide a valid token.
How It Works
server.py
: Runs a FastMCP server on port 8000 (no auth).client.py
: Example client for both endpoints, supports custom authentication.proxy/
: Contains Nginx and Envoy configs for authentication and policy enforcement.
Requirements
9
Followers
37
Repositories
16
Gists
0
Total Contributions
ReconRizzler-Alpha is a powerful tool for security analysis, automating vulnerability scanning and information gathering. Built in Python, it offers a user-friendly interface. With a variety of features, it is designed to help security professionals and developers work efficiently.
pentestMCP is a penetration testing tool developed in Python that provides features for efficient security analysis. This tool automates vulnerability scanning, risk assessment, and report generation, allowing security professionals to quickly identify threats. It is designed to streamline the penetration testing process and enhance overall security posture.
mcp-privilege-cloud is a Python library aimed at managing privileges in cloud environments. It helps in monitoring and managing privileged accounts to reduce security risks. However, its features are limited, and it may not perform as well as more mature tools in the market.