Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
OpenAPI lifecycle guard and MCP sidecar for policy-driven API orchestration.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"x-openapi-flow": {
"command": "npx",
"args": [
"-y",
"x-openapi-flow"
]
}
}
}Führe das in deinem Terminal aus
claude mcp add x-openapi-flow -- npx -y x-openapi-flowIn .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"x-openapi-flow": {
"command": "npx",
"args": [
"-y",
"x-openapi-flow"
]
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"x-openapi-flow": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"x-openapi-flow"
]
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto tiago-marques bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (1.7.4) kam vor 6 Monaten in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, Systemdox
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Your architecture in your agents' context: checks, specs, ADRs and docs over MCP, at write time.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
🚀 2,100+ downloads in the first 3 weeks!
npx x-openapi-flow init --suggest-transitions
See your API lifecycle come alive from your OpenAPI spec, with one simple command
Validate, document, and generate flow-aware SDKs automatically.
openapi.json → describes your API
openapi.x.json → describes how to use it (flows)
x-openapi-flow adds a declarative state machine to your OpenAPI spec.
Model resource lifecycles, enforce valid transitions, and generate flow-aware artifacts for documentation, SDKs, and automation.
Define stateful workflows and lifecycle transitions directly inside your OpenAPI operations:
{
"operationId": "createOrder", "x-openapi-flow": { "version": "1.0", "id": "create-order", "current_state": "created", "description": "Creates an order and starts the lifecycle", "transitions": [ { "transition_id": "order-created-to-paid", "trigger_type": "synchronous", "condition": "Payment is confirmed", "decision_rule": "payOrder:response.200.body.payment_status == 'approved'", "target_state": "paid", "next_operation_id": "payOrder", "operation_role": "mutate", "prerequisite_operation_ids": ["createOrder"], "evidence_refs": [ "payOrder:response.200.body.payment_status" ], "propagated_field_refs": [ "createOrder:response.201.body.order_id" ], "failure_paths": [ { "reason": "Payment denied", "target_state": "payment_failed", "next_operation_id": "getOrder" } ] } ] } }
This flow defines an order lifecycle directly inside your OpenAPI:
created statepaid when payment is confirmedInstead of manually orchestrating API calls, the workflow is fully described alongside your API specification.
Building APIs is cheap. Building complex, multi-step APIs that teams actually use correctly is hard.
Teams face recurring problems:
x-openapi-flow exists to solve these pains: it makes lifecycles explicit, validates transitions automatically, and generates flow-aware docs and SDKs — so teams move faster, make fewer mistakes, and ship confident integrations.
Turn your OpenAPI spec into a single source of truth for API behavior:
export-llm-flows) — or call it directly as an MCP tool — so an agent like Claude Code knows the exact call order, decision rules, and field refs to implement an integration, without re-deriving them from human docsPrefer no local setup? Open the minimal runtime-guard demo directly in your browser:
Once open, run:
npm install
npm run start
Then in another terminal:
curl -s -X POST http://localhost:3110/orders
curl -i -X POST http://localhost:3110/orders/ /ship
Expected: 409 INVALID_STATE_TRANSITION.
Fastest way to see value (guided scaffold):
npx x-openapi-flow quickstart
cd x-openapi-flow-quickstart npm install npm start
Optional runtime:
npx x-openapi-flow quickstart --runtime fastify
Then run:
curl -s -X POST http://localhost:3110/orders
curl -i -X POST http://localhost:3110/orders/ /ship
Expected: 409 INVALID_STATE_TRANSITION.
Initialize flow support in your project:
npx x-openapi-flow init
npx x-openapi-flow init --suggest-transitions
After regenerating your OpenAPI file, apply and validate the flow (optional):
npx x-openapi-flow apply openapi.yaml --out openapi.flow.yaml
npx x-openapi-flow validate openapi.flow.yaml --profile strict --strict-quality
This will:
💡 Tip: run this in CI to enforce API workflow correctness
For larger APIs, you can define flow rules by resource (with shared transitions/defaults) and reduce duplication in sidecar files.
See: Sidecar Contract
Use the official reusable action to validate lifecycle rules in CI with a single step:
- name: Validate OpenAPI flow rules
uses: tiago-marques/x-openapi-flow@v1 with: openapi-file: openapi.flow.yaml profile: strict strict-quality: "true"
Integration guide: GitHub-Actions-Integration.md
Here’s a real-world payment lifecycle represented in x-openapi-flow:
CREATED -> AUTHORIZED -> CAPTURED -> REFUNDED
Generate a visual graph of the lifecycle:
npx x-openapi-flow graph openapi.flow.yaml --format mermaid
Resulting diagram:
graph TD
CREATED --> AUTHORIZED AUTHORIZED --> CAPTURED CAPTURED --> REFUNDED
This visualization makes your API workflow explicit, easy to communicate, and ready for documentation or demos.
Create a TypeScript or Python SDK that respects your API’s lifecycle and transition rules, following best practices seen in leading companies like Stripe and Adyen:
npx x-openapi-flow generate-sdk openapi.flow.yaml --lang typescript --output ./sdk
npx x-openapi-flow generate-sdk openapi.flow.yaml --lang python --output ./sdk
Example usage (TypeScript):
const payment = await sdk.payments.create({ amount: 1000 });
await payment.authorize(); await payment.capture();
Example usage (Python — zero-dependency, stdlib urllib-backed client, generated under ./sdk/src):
from src import FlowApiClient
from src.http_client import UrllibHttpClient
client = FlowApiClient(UrllibHttpClient("https://api.example.com")) payment = client.payment.create({"body": {"amount": 1000}}) payment = payment.authorize() payment = payment.capture()
This SDK guides developers through valid transition paths, following patterns used by market leaders to ensure safe and intuitive integrations.
CI validation is important, but production safety needs request-time enforcement.
x-openapi-flow now includes an official runtime guard for Node.js that can block invalid state transitions during request handling.
operationId (when available) or by method + route409 error payloadsInstall and use directly in your API server:
const {
createExpressFlowGuard, createFastifyFlowGuard, createHonoFlowGuard, } = require("x-openapi-flow/lib/runtime-guard");
Express example:
const express = require("express");
const { createExpressFlowGuard } = require("x-openapi-flow/lib/runtime-guard"); const openapi = require("./openapi.flow.json");
const app = express();
app.use( createExpressFlowGuard({ openapi, async getCurrentState({ resourceId }) { if (!resourceId) return null; return paymentStore.getState(resourceId); // your DB/service lookup }, resolveResourceId: ({ params }) => params.id || null, }) );
Fastify example:
const fastify = require("fastify")();
const { createFastifyFlowGuard } = require("x-openapi-flow/lib/runtime-guard"); const openapi = require("./openapi.flow.json");
fastify.addHook( "preHandler", createFastifyFlowGuard({ openapi, async getCurrentState({ r
Nur der Anfang wird gezeigt; den Rest findest du im Repo