For the complete documentation index, see llms.txt. This page is also available as Markdown.

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-Tunnel oder ngrok

  • Tenant-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:

Methode
Verwenden, wenn…
Kompromiss

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.1dieser 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

  1. Machen Sie Ihren lokalen Server öffentlich erreichbar: cloudflared tunnel --url http://localhost:8080 (oder ngrok http 8080). Notieren Sie die öffentliche HTTPS-URL.

  2. Setzen Sie SERVER_HOST in .env auf diese öffentliche URL und starten Sie den Server neu.

  3. Öffnen Sie Blockbrain → AdminAgentsMCP-Server+ MCP-Server hinzufügen.

  4. Füllen Sie aus:

    • Servername: z. B. my-mcp-demo

    • Server-URL: https://<your-tunnel>/mcp

    • Transport: HTTP

    • Authentifizierung: OAuth 2.1

  5. Klicken Sie auf OAuth erkennen. Blockbrain liest Ihre beiden .well-known -Endpunkte und füllt die OAuth-Konfiguration vor.

  6. Klicken Sie auf Konfigurieren Sie, schließen Sie den Consent-Flow ab und bestätigen Sie, dass das Zugriffstoken zurückkommt.

  7. Speichern. Weisen Sie die Integration einem Test-Agenten zu. Bitten Sie den Agenten im Chat, echo "hello" aufzurufen — Sie sollten echo: hello zurü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:

Header
Beschreibung
Beispiel

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

Symptom
Wahrscheinliche Ursache
Behebung

„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 /authorize und /token Aufruf.

  • Verschieben Sie OAUTH_CLIENT_SECRET in 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 /token und /authorize.

  • Wenn Multi-Tenant, dann Scope OAUTH_CLIENT_ID pro 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 die app.mount("/mcp", ... ) Zeile durch die SSE-App aus mcp.server.sse.

  • Echte Tools — ersetzen Sie das echo Tool durch Aufrufe in Ihrer Domäne (Datenbankabfragen, interne APIs usw.).

  • JavaScript-/TypeScript-Beispiel — eine Node/Express-Entsprechung dieses Leitfadens mit @modelcontextprotocol/sdk wird als Folgebeitrag vorbereitet.

Zuletzt aktualisiert