secureFlows MCP Server
secureFlows MCP Server
In der Cloud bereitstellbarer MCP-Server, der die secureFlows OpenAPI-Oberfläche kapselt, die mit ai-safe und ai-optional getaggt ist.
Dieses Repository ist ein öffentlicher Spiegel, der regelmäßig aus dem privaten secureFlows-Monorepo veröffentlicht wird, in dem die Entwicklung tatsächlich stattfindet. Issues und PRs sind willkommen; größere Änderungen können einen Release-Zyklus benötigen, bevor sie zuerst upstream landen.
Was ist ein MCP-Server?
Ein MCP-Server ist ein kleiner HTTP-Dienst, der eine Reihe von „Tools“ bereitstellt, die ein KI-Client auf standardisierte Weise aufrufen kann.
In diesem Repository:
Der secureFlows MCP server stellt Tools bereit, die automatisch aus Ihren OpenAPI-YAML-Spezifikationen generiert werden.
Wenn ein Client ein Tool aufruft, leitet der MCP-Server den Aufruf an Ihr echtes secureFlows-Backend (
connection.host) weiter und gibt die Antwort als normalisiertes Tool-Ergebnis zurück.
Dadurch kann ein KI-Client:
verfügbare secureFlows-Operationen über
listToolsermitteln,sie über
callToolaufrufen,ohne die API-Oberfläche fest zu verdrahten oder manuelle Auth-/Header-Verkabelung.
Was es tut
Zwei Arten von Tools, die gemeinsam in src/server.ts registriert werden:
Generierte Tools (src/tools/build-tools.ts) — eines pro OpenAPI-Operation:
Lädt:
docs/openapi/session/secure-flows-session-api.yamldocs/openapi/user/secure-flows-user-api.yamldocs/openapi/docs/secure-flows-docs-api.yaml
Stellt nur Operationen, die mit
ai-safeoderai-optionalgetaggt sind, als MCP-Tools bereit.Leitet Anfragen an einen vom Aufrufer bereitgestellten secureFlows-Host weiter — ein dünner, generischer HTTP-Wrapper ohne secureFlows-spezifische Bewertung. Jede dieser Operationen erfordert ein gültiges
auth.*-Token, daher sind sie nur nützlich, sobald bereits eine Sitzung existiert (siehe Laufzeitmodell unten).Ordnet secureFlows-Auth-Header aus MCP-Tool-Eingaben zu:
auth.firebaseTokenauth.sessionTokenauth.userToken
Statische Tools (src/tools/static-tools.ts) — handgeschrieben, nicht aus der Spezifikation generiert:
secureflows_build_login_url/secureflows_build_logout_url— erstellen die URLs für das gehostete Login und das Redirect-Logout konstruktionsbedingt korrekt (immer/app/sessions/login, niemals das veraltete/app/login; lehnt einredirect_urinach dem Logout ab, das auf/callbackzeigt odersession_tokenpreisgibt). Kein secureFlows-Token erforderlich.secureflows_lint_integration— prüft generierten App-Quellcode gegen die Integrationsregeln und meldet strukturierte Befunde, anstatt sie als Prosa zu belassen, die der Agent selbst überwachen muss. Kein secureFlows-Token erforderlich. Zwei Arten von Befunden:scope: "file"— ein verbotenes Konstrukt ist vorhanden, an einer exaktenfile:line: Umgebungsvariablen-Konfigurationskonstanten, Token inlocalStorage, veraltetes/app/login,fetch/XHR-Logout, clientseitiges JWT-Decoding, Widerruf bei Abmeldung, leerescatch {}, Wiederherstellen vonsetSession(null)bei Nicht-Authentifizierungsfehlern, Weiter-CTA abhängig vonsession === null, …scope: "project"— die erforderliche Behandlung ist nicht vorhanden in allen übergebenen Dateien:401/410erkennen, aber das Token nie löschen,403nie behandeln oder403ohne dieBILLING_GRACE_LOCK-Ausnahme behandeln.
Die Abwesenheitsprüfungen existieren, weil die Musterregeln strukturell die Fehlerklasse nicht erkennen konnten, die reale generierte Apps dominiert. Gemessen: Bei der App einer echten Testversion, die der LLM-Bewerter des Evaluierungs-Harness mit 4/10 bewertete — unter Berufung auf „veraltetes Token nach Abmeldung nie gelöscht“, „403-Varianten unbehandelt“, „keine Fehlerbehandlung“ — erzeugten die Musterregeln allein null Befunde, weil jeder dieser Fehler eine Abwesenheit ist und ein Regex nur sehen kann, was vorhanden ist. Mit den Abwesenheitsprüfungen erzeugt es 3 Befunde, einschließlich des Token-Lösch-Befunds mit Schweregrad
error. Beide Prüfarten werden gegen das kanonische Starter-Templatetemplates/web-app-secureflowsvalidiert, das bei null Befunden bleiben muss.Es ist weiterhin heuristische Textanalyse, kein Parser oder Typprüfer: Es übersieht, wofür es keine Regel gibt, eine Projektprüfung kann durch das richtige Schlüsselwort an der falschen Stelle erfüllt werden, und es kann die Prüfungen nicht abdecken, die eine laufende App erfordern (Auth-Guard-Mount-Races, die Fresh-Reload-Prüfung). Ein schneller erster Durchlauf — kein Ersatz für die Agent-Implementierungscheckliste in SKILL.md.
Diese statischen Tools existieren, weil die generierten Tools nicht bei dem Teil einer Integration helfen können, der vor dem Bestehen einer Sitzung stattfindet — dem Erstellen des Redirect-/Callback-/Token-Lebenszyklus-Codes — und genau dort passieren die meisten secureFlows-Integrationsfehler.
Verwendet einen zustandslosen HTTP-MCP-Transport, sodass der Server keine Mandantenkonfiguration oder Geheimnisse speichert.
Laufzeitmodell
Jeder Tool-Aufruf erhält:
connection.host: secureFlows-Basis-URLconnection.workspaceName: optionaler Standard-Workspaceconnection.appId: optionale Standard-Anwendungs-IDauth.*: das Token, das der ausgewählte Endpunkt benötigt
workspaceName und appId werden als stabile App-Konfiguration behandelt. Der Server fügt sie in bekannte secureFlows-Anfrageformen ein, wenn sie vom Aufrufer ausgelassen werden.
Für Agenten (der einzige unterstützte Client-Pfad)
Richten Sie den MCP-Client auf die gehostete URL — derselbe Host wie das Produkt, Pfad /mcp (keine Subdomain):
Umgebung | MCP URL |
Produktion |
|
Staging |
|
Health |
|
{
"mcpServers": {
"secureflows": {
"url": "https://www.secure-flows.com/mcp"
}
}
}Weisen Sie Agenten nicht an, npx auszuführen oder localhost zu verwenden — das spaltet die Geschichte und schließt alle aus, die nie einen lokalen Prozess starten. Im Web-Docker-Image integriert (Node auf 127.0.0.1:8787, nginx location = /mcp; siehe docs/ROUTING.md). Der Node-Prozess installiert uncaughtException-/unhandledRejection-Guards, sodass eine einzelne fehlerhafte Anfrage den Prozess nicht beendet; docker/entrypoint.sh startet MCP außerdem neu, falls der Prozess dennoch beendet wird.
Lokale Entwicklung (Maintainer dieses Pakets)
cd mcp-server
npm install
npm run build
npm test
npm run devDer Server startet standardmäßig auf http://0.0.0.0:8787 (POST /mcp, GET /health). Dies dient dazu, den MCP-Server selbst zu ändern — nicht den Pfad, den Produkt-Agenten konfigurieren sollten.
Umgebungsvariablen
PORT: HTTP-Port, Standard8787(im Web-Container setzt der EntrypointPORT=8787nur für den MCP-Kindprozess, damit nginx den öffentlichen$PORTvon Render behält)HOST: Bind-Host, Standard0.0.0.0(Web-Container verwendet127.0.0.1)ALLOWED_HOSTS: optionale, durch Kommas getrennte Host-Allowlist für die MCP-Host-Header-ValidierungMCP_ALLOWED_HOSTS: Entrypoint-Override fürALLOWED_HOSTSbeim Starten des In-Image-Prozesses
Endpunkte
POST /mcp: MCP-Streamable-HTTP-EndpunktGET /health: Health-Check (öffentlich alsGET /mcp/healthüber nginx verfügbar)
Einbetten von secureFlows in eine Anwendung
Produkt-Apps integrieren direkt mit den secureFlows-HTTP-APIs und dem gehosteten Login. Beginnen Sie mit:
docs/integration/quickstart.md— Bereitstellung (Workspace + Anwendung) und gehostetes Login zur Laufzeitdocs/integration/CONCEPT.md— Basisreihenfolge: Login → Workspace erstellen vor erweiterten Funktionendocs/openapi/integration-auth.yaml—/app/sessions/login(Session-Apps) vs./app/login(Legacy/Konsole)
Produkt-Apps integrieren weiterhin direkt mit den oben genannten HTTP-APIs, nicht über diesen Server. Die generierten Tools hier sind für Agents/Automatisierung, die bereits ein Token haben (Tests, skriptgestützte Verifizierung). Die statischen Tools (secureflows_build_login_url, secureflows_build_logout_url, secureflows_lint_integration) benötigen kein Token und sollen von einem Coding-Agenten aufgerufen werden, während er die Integration noch aufbaut — siehe Was es tut oben.
Testen dieses MCP-Servers
npm testinmcp-server/— Unit-Tests plus HTTP-Smoke-Test (test/http-smoke.test.ts): startet die Express-App auf einem ephemeren Port, prüftGET /health,GET /mcp→ 405 und einen echten Streamable-HTTP-ClientlistTools+callTool(secureflows_build_login_url).Nach dem Deployment: Playwright
tests/smoke/mcp-health.spec.tsruft das öffentlicheGET /mcp/healthundGET /mcpauf dem Zielhost auf (Produktions-Smoke-Job).Lokale Maintainer-Schleife:
npm run dev, danncurl -sS http://127.0.0.1:8787/health.Optional: MCP-Client gegen
POST /mcpmitconnection.host+auth.*für generierte Tools.
Bereitstellung
Wird im Web-Docker-Image ausgeliefert und unter /mcp auf www.secure-flows.com / Staging bereitgestellt (siehe Für Agenten oben). Keine separate Subdomain.
Das npm-Paket secureflows-mcp-server ist der Weg, über den CI ein versioniertes Artefakt veröffentlicht (und wie ein eigenständiger Container aus mcp-server/Dockerfile gebaut werden kann); es ist nicht der für Agenten gedachte Einrichtungspfad. Veröffentlichung über v*.*.*-Tags mittels .github/workflows/publish-secureflows-mcp-server.yml.
docker build -f mcp-server/Dockerfile -t secureflows-mcp-server .
docker run --rm -p 8787:8787 secureflows-mcp-serverHinweise
Gehostete Login-/Redirect-Endpunkte werden nur bereitgestellt, wenn sie in den OpenAPI-Spezifikationen mit
ai-safeoderai-optionalgetaggt sind.Dokumentationssuche (
get_docs_search) istai-safe, erfordert keinauth.*— nurconnection.hostund die Abfrageq.Nur für Menschen gedachte Admin-Konsolen-APIs sind absichtlich ausgeschlossen.
Die Antwort-Payload jedes Tools enthält:
statusokurlheadersdata
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 Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
MCP server for AI access to Swagger by SmartBear.
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/michal-lefler/secureflows-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server