Einen benutzerdefinierten MCP-Server mit OAuth 2.1 erstellen
Was Sie erstellen:
Ein minimaler, lauffähiger Python-MCP-Server, mit dem sich Blockbrain über OAuth 2.1 verbinden kann — sodass interne Tools oder Daten, die Sie bereitstellen, sicher von einem Blockbrain-Agenten genutzt werden können.
Zielgruppe: ein Entwickler an Ihrer Seite. Kopieren Sie die vier Codeblöcke unten in einen Ordner, führen Sie fünf Befehle aus, zeigen Sie Blockbrain auf die resultierende URL, und Sie haben eine funktionierende authentifizierte Integration.
Benötigte Zeit: ~20 Minuten für einen funktionierenden lokalen Server; ~45 Minuten inklusive Härtung.
Siehe auch: MCP-Server — Rundgang durch die Admin-Oberfläche.
Voraussetzungen
Python 3.11+
Eine öffentliche HTTPS-URL für Ihren lokalen Server während des Tests — die einfachsten Optionen: ein HTTPS-Tunneling-Tool wie
cloudflared-TunneloderngrokTenant-Administrator Zugriff auf Ihren Blockbrain-Tenant
Vertrautheit mit dem OAuth-2.1-Authorization-Code-Flow mit PKCE (hilfreich, aber nicht erforderlich)
Wann welcher Authentifizierungsmodus verwendet wird
Die MCP-Server-Registrierungsoberfläche von Blockbrain bietet vier Authentifizierungsmethoden. Wählen Sie je nachdem, wie Ihr MCP-Server erkennen soll, wer aufruft:
Keine
Nur intern/zu Entwicklungszwecken und die Server-URL nicht öffentlich ist
Jeder, der die URL erreicht, kann die Tools aufrufen
API-Schlüssel (Fester Token)
Service-zu-Service. Ein gemeinsames Secret. Keine Identität pro Benutzer erforderlich.
Kann auf Ihrer Seite einzelne Blockbrain-Benutzer nicht unterscheiden
OAuth 2.1 ← dieser Leitfaden
Produktionsszenarien. Der Tenant-Administrator von Blockbrain autorisiert die Verbindung einmalig über einen Consent-Flow.
Mehr bewegliche Teile, aber der Standardweg gemäß MCP-Spezifikation
Benutzertoken (delegiert)
Sie möchten eine Autorisierung pro Benutzer auf Ihrem MCP-Server (z. B. erzwingen, dass Benutzer A nur seine eigenen Daten sieht)
Ihr Server muss das weitergeleitete JWT von Blockbrain validieren — siehe Abschnitt 8
Der OAuth-2.1-Discovery-Flow, den Blockbrain verwendet
Wenn Sie im Admin-UI OAuth 2.1 auswählen und auf OAuth erkennenklicken, folgt Blockbrain RFC 9728 + RFC 8414 um Ihren Autorisierungsserver zu finden, und führt dann Authorization Code + PKCE aus:
Das Python-Beispiel
Drei Dateien in einem Ordner. Kopieren Sie jeden Block unverändert.
server.py
requirements.txt
.env.example
Ersetzen Sie die Demo-Client-Anmeldedaten vor dem Einsatz irgendwo, das vom öffentlichen Internet aus erreichbar ist, durch starke Zufallswerte.
Lokal ausführen
Die Endpunkte mit curl überprüfen
Registrieren Sie Ihren MCP-Server in Blockbrain
Machen Sie Ihren lokalen Server öffentlich erreichbar:
cloudflared tunnel --url http://localhost:8080(oderngrok http 8080). Notieren Sie die öffentliche HTTPS-URL.Setzen Sie
SERVER_HOSTin.envauf diese öffentliche URL und starten Sie den Server neu.Öffnen Sie Blockbrain → Admin → Agents → MCP-Server → + MCP-Server hinzufügen.
Füllen Sie aus:
Servername: z. B. my-mcp-demo
Server-URL:
https://<your-tunnel>/mcpTransport:
HTTPAuthentifizierung:
OAuth 2.1
Klicken Sie auf OAuth erkennen. Blockbrain liest Ihre beiden
.well-known-Endpunkte und füllt die OAuth-Konfiguration vor.Klicken Sie auf Konfigurieren Sie, schließen Sie den Consent-Flow ab und bestätigen Sie, dass das Zugriffstoken zurückkommt.
Speichern. Weisen Sie die Integration einem Test-Agenten zu. Bitten Sie den Agenten im Chat,
echo "hello"aufzurufen — Sie solltenecho: hellozurückbekommen.
Vollständiger Rundgang durch die Admin-Oberfläche mit Screenshots: MCP-Server — für Administratoren.
Optional — weitergeleitetes Benutzer-JWT von Blockbrain validieren
Wenn Sie zusätzlich eine Autorisierung pro Benutzer möchten (delegierter Zugriffsmodus), setzen Sie VALIDATE_USER_TOKEN=1. Die validate_user_jwt Hilfe-Funktion in server.py prüft jedes eingehende Bearer-Token gegen Blockbrains öffentliche JWKs unter https://auth.theblockbrain.ai/oauth/v2/keys, verifiziert Signatur, Ablauf und Audience und gibt die Claims zurück (einschließlich external_user_id, urn:zitadel:iam:org:id, usw.).
Header, die Blockbrain mit jeder Anfrage sendet
Ihr MCP-Server kann diese lesen, um den aufrufenden Benutzer, den Tenant und den Thread-Kontext zu identifizieren:
X-User-ID
Endbenutzer-Identifikator
user_12345
X-External-User-ID
Benutzer-Identifikator Ihres Systems (falls aktiviert)
ext_user_abc
X-Tenant-ID
Tenant-Identifikator
tenant_xyz
X-Agent-ID
Agent, der die Anfrage stellt
agent_007
X-Data-Room-ID
Zugeordneter Data Room
room_456
X-Thread-ID
Unterhaltungs-Thread
thread_789
Authorization
Bearer-Token (OAuth-Zugriffstoken oder weitergeleitetes Benutzer-JWT)
Bearer ...
Fehlerbehebung
„OAuth erkennen“ gibt 404 zurück
.well-known Pfade sind unter der öffentlichen URL nicht freigegeben
Bestätigen Sie, dass der Tunnel Root-Pfade weiterleitet; rufen Sie beide well-known-Endpunkte erneut mit curl auf
Redirect-URI-Fehler beim Consent
Der IdP unterstützt Dynamic Client Registration nicht (z. B. Microsoft Entra)
Verwenden Sie das statische OAUTH_CLIENT_ID in diesem Beispiel statt eines dynamisch registrierten
Token zurückgegeben, aber die Tool-Liste ist leer
Scopes wurden bei der Konfiguration nicht beibehalten
Stellen Sie sicher, dass Ihre Metadaten des Autorisierungsservers scopes_supported
Checkliste zur Härtung für die Produktion
Bevor Sie in einer Produktionsumgebung ausliefern, ersetzen oder ergänzen Sie:
Die In-Memory-
auth_codes/access_tokens-Dictionaries → einen persistenten Speicher (z. B. Redis), damit Tokens Neustarts überstehen und zwischen Replikas geteilt werden können.Refresh-Token-Rotation. Das Beispiel stellt nur Access Tokens aus.
Strukturiertes Logging und einen Audit-Trail für jeden
/authorizeund/tokenAufruf.Verschieben Sie
OAUTH_CLIENT_SECRETin einen Secrets Manager — niemals in die Versionsverwaltung einchecken.Beenden Sie HTTPS vor dem Server (Reverse Proxy, Load Balancer oder das Ingress Ihrer Plattform).
Ratenbegrenzung für
/tokenund/authorize.Wenn Multi-Tenant, dann Scope
OAUTH_CLIENT_IDpro Tenant statt einen gemeinsamen Wert wiederzuverwenden.
Nächste Schritte
SSE-Transport — Blockbrain unterstützt ebenfalls SSE (
https://your-server/sse). Um zu wechseln, ersetzen Sie dieapp.mount("/mcp", ... )Zeile durch die SSE-App ausmcp.server.sse.Echte Tools — ersetzen Sie das
echoTool durch Aufrufe in Ihrer Domäne (Datenbankabfragen, interne APIs usw.).JavaScript-/TypeScript-Beispiel — eine Node/Express-Entsprechung dieses Leitfadens mit
@modelcontextprotocol/sdkwird als Folgebeitrag vorbereitet.
Zuletzt aktualisiert

