MCP-Server automatisch erstellen: aus OpenAPI und FastAPI

Inhalt
Wenn Sie bereits eine API haben, müssen Sie einen MCP-Server nicht von Hand
schreiben. FastMCP erzeugt
ihn für Sie: FastMCP.from_openapi() baut einen MCP-Server aus einer
OpenAPI-Spezifikation, FastMCP.from_fastapi() macht dasselbe für eine
FastAPI-Anwendung. Dieser Beitrag zeigt beides und erklärt, wie Sie steuern,
welche Endpunkte zu MCP-Tools und welche zu Resources werden.
In unserem Beitrag über MCP-Server mit FastMCP haben wir beschrieben, was MCP-Server sind, warum sie für das aktuelle KI-Ökosystem wichtig sind, welche Ressourcen sie bereitstellen können und wie man einen von Grund auf baut.
Mit den heutigen Werkzeugen ist das einfach. Einen Haken gibt es trotzdem: Im Kern stellt ein MCP-Server nur eine standardisierte, für LLMs optimierte API bereit. (Das soll den Wert nicht kleinreden. MCP ist ein dringend nötiger Standard mit vielen Vorteilen. Am Ende ist es aber eben eine API.) In Ihren Anwendungen gibt es sehr wahrscheinlich schon APIs, und mit MCP legen Sie eine weitere API um die bestehenden herum.
Auch hier legen wir einen MCP-Server um Ihre bestehende API, erzeugen ihn aber automatisch aus Ihrer OpenAPI-Spezifikation oder FastAPI-Anwendung. So stehen Ihre vorhandenen Endpunkte im MCP-Ökosystem und damit fast jedem LLM-Client zur Verfügung. (Wenn Sie mit Python-SDKs statt mit HTTP-APIs arbeiten, verfolgt langchain-autotools (auf Englisch) einen ähnlichen Ansatz und macht aus SDK-Methoden LLM-Tools.)
Update (November 2026): Dieser Beitrag wurde für eine frühe Version von FastMCP 2.x geschrieben. Mit FastMCP 2.5 wurden RouteType und das Argument route_type durch MCPType und mcp_type ersetzt (Werte TOOL, RESOURCE, RESOURCE_TEMPLATE und EXCLUDE), RouteType ist inzwischen entfernt. Seit FastMCP 2.8.0 wird jede Route standardmäßig zu einem Tool. Die Tabelle zum Standard-Mapping unten gilt deshalb nicht mehr. Pinnen Sie fastmcp<2.8, wenn Sie dem Beitrag wie geschrieben folgen möchten. Die OpenAPI-Dokumentation von FastMCP importiert diese Klassen inzwischen mit from fastmcp.server.providers.openapi import RouteMap, MCPType und empfiehlt generierte Server nur für den Einstieg und für Prototypen, weil LLMs mit kuratierten MCP-Servern deutlich besser zurechtkommen.
MCP-Server automatisch aus einer OpenAPI-Spezifikation erstellen
Hat Ihre API eine OpenAPI-Spezifikation, kann FastMCP daraus direkt einen MCP-Server erzeugen. Die Funktion kam mit FastMCP 2.0.0 und verbindet Ihre bestehende API mit MCP-Clients, ohne dass Sie für jeden Endpunkt eine Tool-Definition schreiben.
Hinweis: Dieses Beispiel stützt sich stark auf die sehr gute Dokumentation von FastMCP.
Im einfachsten Fall brauchen Sie für einen MCP-Server aus Ihrer OpenAPI-Spezifikation nur ein paar Zeilen Code:
Mehr ist nicht nötig. FastMCP analysiert Ihre OpenAPI-Spezifikation, erzeugt die passenden MCP-Komponenten und leitet MCP-Anfragen an die dahinterliegende API weiter.
Konfigurationsoptionen für OpenAPI
Bei FastMCP.from_openapi können Sie Timeouts für Requests und das
Route-Mapping konfigurieren.
Timeout konfigurieren
Dieser Timeout gilt für alle Requests von Tools, Resources und Resource Templates.
Standard-Mapping der Routen
FastMCP muss jede API-Route einer MCP-Komponente zuordnen. Wie in unserem vorigen Beitrag beschrieben, liefern MCP-Server Daten über zwei Hauptkomponenten aus: Resources und Tools. Resources sind lesende Endpunkte, Tools führen Aktionen aus.
FastMCP schätzt anhand von Regeln ein, welche Komponente jede Route werden soll:
| OpenAPI-Route | Beispiel | MCP-Komponente |
|---|---|---|
| GET ohne Path-Parameter | GET /stats | Resource |
| GET mit Path-Parametern | GET /users/{id} | Resource Template |
| POST, PUT, PATCH, DELETE usw. | POST /users | Tool |
- Lesende Endpunkte werden zu Resources.
- Lesende Endpunkte mit Parametern werden zu Resource Templates.
- Endpunkte, die etwas verändern, werden zu Tools.
Eigene Route Maps
Das Standard-Mapping passt für die meisten APIs, aber nicht für alle. Ein GET-Endpunkt kann ein Tool sein (etwa einer, der eine Datenbankabfrage ausführt), und ein POST-Endpunkt in manchen Fällen eine Resource.
Um das Mapping zu ändern, definieren Sie RouteMap-Objekte mit den
HTTP-Methoden, einem URL-Muster und dem Routentyp (RouteType.TOOL oder
RouteType.RESOURCE) und übergeben sie an FastMCP.from_openapi:
FastMCP wendet Ihre eigenen Route Maps zuerst an, vor den Standardregeln.
So funktioniert die OpenAPI-Integration von FastMCP
Im Hintergrund macht die OpenAPI-Integration von FastMCP Folgendes:
- Sie liest Ihre OpenAPI-Spezifikation und holt daraus Routen und Schemas.
- Sie ordnet jede Route anhand der Mapping-Regeln einer Resource, einem Resource Template oder einem Tool zu.
- Wenn ein MCP-Client mit dem Server arbeitet,
- baut FastMCP anhand der OpenAPI-Definition einen HTTP-Request,
- schickt ihn über den httpx-Client, den Sie übergeben haben, und
- übersetzt die HTTP-Antwort in das passende MCP-Format.
Umgang mit Parametern
FastMCP kümmert sich auch um Query- und Path-Parameter.
Query-Parameter
Standardmäßig übernimmt FastMCP nur Query-Parameter mit nicht leerem Wert.
Parameter mit None oder einem leeren String ("") fallen weg, damit Ihre
API keine leeren Parameter bekommt:
Der resultierende HTTP-Request enthält nur
category=electronics&min_price=100.
Path-Parameter
Bei Path-Parametern prüft FastMCP, ob jeder erforderliche Parameter vorhanden und nicht null ist, denn ein Path-Parameter lässt sich nicht einfach aus der URL weglassen.
Die erzeugten MCP-Komponenten kontrollieren
Um zu sehen, welche Komponenten FastMCP aus Ihrer Spezifikation erzeugt hat,
legen Sie folgende Funktion an und rufen sie mit
asyncio.run(check_mcp(mcp)) auf. Sie gibt alle Tools, Resources und
Resource Templates des MCP-Servers aus:
MCP-Server automatisch aus einer FastAPI-Anwendung erstellen
Laufen Ihre Backend-Dienste auf FastAPI, kann FastMCP sie direkt als MCP-Server bereitstellen. Auch diese Integration kam mit FastMCP 2.0.0 und braucht kaum Änderungen am Code.
Wichtig: Dafür muss FastAPI in Ihrer Umgebung installiert sein. Das
erledigen Sie mit pip install fastapi.
Angenommen, wir haben folgende FastAPI-Anwendung:
Um daraus einen MCP-Server zu machen, rufen Sie FastMCP.from_fastapi(app)
auf und starten den Server:
Konfigurationsoptionen für FastAPI
Wie bei der OpenAPI-Integration können Sie auch für Ihre FastAPI-Anwendung Timeouts und Route-Mapping konfigurieren.
Timeout konfigurieren
Eigene Route Maps für FastAPI
Eigene Route Maps funktionieren bei FastAPI genauso wie bei OpenAPI: Mit
einer Liste von RouteMap-Objekten legen Sie fest, wie FastMCP Ihre
FastAPI-Routen auf MCP-Komponenten abbildet.
Mehr braucht es nicht. Wie FastMCP mit Query- und Path-Parametern umgeht, steht im Abschnitt Umgang mit Parametern, wie Sie die erzeugten Komponenten auflisten, im Abschnitt Die erzeugten MCP-Komponenten kontrollieren.
Der Weg über FastAPI hat zwei zusätzliche Vorteile: Er unterstützt alle Funktionen von FastAPI, auch die Authentifizierung, und der MCP-Server spricht über den ASGI-Transport direkt mit der FastAPI-Anwendung. Es entsteht also kein zusätzlicher Netzwerk-Overhead.
Sobald Ihre API als MCP-Server verfügbar ist, stehen dieselben Funktionen von FastMCP zur Verfügung wie bei einem handgeschriebenen Server. Mit LLM Sampling in FastMCP (auf Englisch) kann der Server zum Beispiel das LLM des Clients aufrufen. Und in unserem Beitrag zum MCP-Server für BigQuery zeigen wir, wie KI-Agenten damit auf ein Data Warehouse zugreifen.
Sie möchten bestehende Unternehmens-APIs als MCP-Server für KI-Agenten bereitstellen und dabei entscheiden, welche Endpunkte wirklich als Tool taugen? Dabei unterstützt Sie unser Team für KI-Beratung. Sprechen Sie uns an.
Sie möchten zuverlässige KI-Agenten-Systeme bauen?
Wir haben auf Basis aktueller Forschung einen ausführlichen Leitfaden (auf Englisch) erstellt, wie Sie robuste KI-Agenten-Systeme bauen, die auch im produktiven Betrieb funktionieren. Der Leitfaden behandelt:
- die 14 systematischen Fehlerquellen in Multi-Agenten-Systemen
- belegte Best Practices für das Design von Agenten
- strukturierte Kommunikationsprotokolle und Prüfmechanismen



