claude-ia-mcp-tools-auth
MCP-Tools mit OAuth-Authentifizierung
Ein Python-Beispiel, das zeigt, wie ein MCP-Server (Model Context Protocol) mit OAuth-Authentifizierung aufgebaut wird und dabei einen API-Client, eine Geschäftslogikschicht und abgesicherte MCP-Tools kombiniert.
Merkmale
OAuth-Authentifizierungsablauf: Authentifizierung per Klick im Browser für Sitzungstokens
Mehrschichtige Architektur: API-Client → Geschäftslogik → MCP-Tools
Sicherer Tool-Zugriff: Erfordert ein gültiges Auth-Token zum Aufrufen geschützter Tools
Einfacher HTTP-Server: Flask-basierter Authentifizierungsserver unter localhost:5000
Token-Verwaltung: 24 Stunden gültige Sitzungstokens mit Persistenz
Related MCP server: OAuth MCP Server
Architektur
src/example/
├── api/
│ ├── api_client.py # HTTP API client (JSONPlaceholder)
│ └── http_server.py # Local HTTP server
├── auth/
│ └── manager.py # OAuth token & state management
├── business/
│ └── service.py # Business logic layer
├── http/
│ └── auth_server.py # Flask OAuth auth server
├── mcp/
│ └── server.py # MCP server with auth
└── main.pyInstallation
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
pip install -r requirements.txtSchnellstart
1. Authentifizierungsserver starten
python -m src.example.http.auth_serverDadurch wird ein Flask-Server mit einem OAuth-Ablauf unter http://localhost:5000 gestartet:
Rufen Sie die Startseite auf
Klicken Sie auf „Klicken zum Authentifizieren“
Erhalten Sie Ihr Sitzungstoken auf der Rückrufseite
Kopieren und speichern Sie Ihr Token
2. MCP-Server starten
In einem anderen Terminal:
python -m src.example.mcp.server3. MCP-Tools verwenden
Der MCP-Server erfordert nun eine Authentifizierung. Rufen Sie zuerst die Authentifizierungs-URL ab:
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | python -m src.example.mcp.serverAuthentifizieren Sie sich anschließend und verwenden Sie die Tools mit Ihrem Token:
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_user","arguments":{"user_id":1},"auth_token":"YOUR_SESSION_TOKEN"},"id":1}' | python -m src.example.mcp.serverAuthentifizierungsablauf
Authentifizierungs-URL abrufen: Rufen Sie das Tool
get_auth_urlauf (keine Authentifizierung erforderlich){"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_auth_url","arguments":{}},"id":1}Im Browser klicken: Der Benutzer klickt auf die zurückgegebene Authentifizierungs-URL
Öffnet
http://localhost:5000/auth/callback?state=...Der Browser zeigt eine Erfolgsseite mit dem Sitzungstoken
Das Token ist 24 Stunden gültig
Token verwenden: Geben Sie
auth_tokenbei allen Tool-Aufrufen mit{"params":{"name":"get_user","arguments":{"user_id":1},"auth_token":"YOUR_TOKEN"}}
Verfügbare Tools
Öffentlich (keine Authentifizierung erforderlich)
get_auth_url- OAuth-Authentifizierungs-URL abrufen
Geschützt (Authentifizierung erforderlich)
get_user- Einen Benutzer anhand der ID abrufenlist_users- Alle Benutzer auflistencreate_user- Einen neuen Benutzer erstellenupdate_user- Benutzername/E-Mail aktualisierendelete_user- Einen Benutzer löschen
Konfiguration
Legen Sie die Umgebungsvariablen fest:
export PORT=5000 # Auth server port
export FLASK_SECRET_KEY=your-secret-key # Flask secret (change in production!)Tests
Führen Sie die Tests mit pytest aus:
pytest -v
pytest --cov=src # With coverage
pytest tests/test_auth.py # Auth tests onlyShell-Skript ausführen
sh test-auth-flow.sh
========================================
MCP Auth Server - Complete Flow Test
========================================
Base URL: https://claude-ia-mcp-tools-auth-staging.up.railway.app
Step 1: Start Auth Flow
GET /auth/start
Status: 401
Auth URL: https://claude-ia-mcp-tools-auth-staging.up.railway.app/auth/callback?state=Xukdt6MwHba0n0UfkOX3lAAanm7MJhSyzomyCJCxj1M
State Token: Xukdt6MwHba0n0UfkOX3lAAanm7MJhSyzomyCJCx...
Step 2: Complete Auth Callback
GET /auth/callback?state=Xukdt6MwHba0n0UfkOX3lAAanm7MJhSyzomyCJCxj1M
Status: 200
Session Token: 7Y6SaanfrLmiOXoE2kUvTbdEfawIMSJyGDaNFPf1...
Step 3: Verify Token with Auth Status
GET /auth/status -H 'Authorization: Bearer 7Y6SaanfrLmiOXoE2kUvTbdEfawIMSJyGDaNFPf1-Bg'
Response:
{"authenticated":true,"user_id":"user_1b25e4982c9904b8"}
========================================
TEST RESULTS
========================================
State Token: Xukdt6MwHba0n0UfkOX3lAAanm7MJhSyzomyCJCxj1M
Session Token: 7Y6SaanfrLmiOXoE2kUvTbdEfawIMSJyGDaNFPf1-Bg
Authenticated: true
User ID: user_1b25e4982c9904b8
========================================
Step 4: Test Invalid Token
GET /auth/status -H 'Authorization: Bearer invalid_token_123'
Response: {"authenticated":false,"user_id":null}
SUCCESS: Complete auth flow working correctly!
You can now use this token for MCP:
Authorization: Bearer 7Y6SaanfrLmiOXoE2kUvTbdEfawIMSJyGDaNFPf1-Bg
Bereitstellung
Für die Produktion passen Sie Folgendes an:
FLASK_SECRET_KEY - Verwenden Sie einen starken, zufälligen Schlüssel
OAuth-Anbieter - Ersetzen Sie ihn durch einen echten OAuth-Anbieter (Google, GitHub usw.)
Token-Speicherung - Verwenden Sie eine Datenbank anstelle von
.auth_tokens.jsonHTTPS - Aktivieren Sie SSL/TLS für die Authentifizierungs-Endpunkte
Hinweise zur Architektur
Dieses Beispiel veranschaulicht:
Trennung der Verantwortlichkeiten: API-Client, Geschäftslogik und MCP-Ebene sind unabhängig voneinander
Schichtenarchitektur: Einfach zu testen und Komponenten austauschbar
Authentifizierungs-Integration: Auth-Tokens werden über Parameter übergeben, nicht über Header
Fehlerbehandlung: Ordnungsgemäße Fehlerantworten bei Authentifizierungsfehlern
Der API-Client verwendet https://jsonplaceholder.typicode.com als Demo-API.
Ersetzen Sie ihn durch Ihre eigene API-Implementierung, ohne die MCP-/Geschäftsschnittstellen zu ändern.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA complete OAuth 2.1 server implementation for FastMCP with PKCE support, enabling secure authentication and authorization flows. Provides authorization code exchange, token management, and refresh capabilities for building authenticated MCP applications.
- FlicenseNot gradedqualityDmaintenanceAn MCP server for OAuth 2.0 authentication supporting Device Code and Client Credentials flows, enabling secure token management for MCP applications.
- FlicenseNot gradedqualityDmaintenanceA simple MCP server with OAuth 2.0 authentication for testing OAuth support in mcp-cli.
- FlicenseNot gradedqualityCmaintenanceThis MCP server requires user authentication via Auth0 and then enables calling protected APIs (e.g., a Todos API) on behalf of the user.
Related MCP Connectors
Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vicboma1/claude-ia-mcp-tools-auth'
If you have feedback or need assistance with the MCP directory API, please join our Discord server