MCP-Server: Das Model Context Protocol in der Praxis
Was ist das Model Context Protocol?
Das Model Context Protocol (MCP) ist ein offener Standard dafür, wie Modelle mit Tools und Datenquellen sprechen. Statt dass jedes LLM seine eigene Integration mitbringt, gibt es eine gemeinsame Schnittstelle.
LLMs sind geschlossene Systeme. Sie erzeugen Text, kommen aber nicht an Ihre Datenbank, senden keine Mail und rufen keine internen APIs auf. Zumindest nicht ohne Hilfe.
Ein MCP-Server stellt dem Modell definierte Tools bereit. Das Modell entscheidet, wann es welches Tool aufruft.
Architektur eines MCP-Servers
Ein MCP-Server besteht aus drei Teilen:
Ein konkretes Beispiel
In einem Gesundheitsplattform-Projekt habe ich einen MCP-Server gebaut, der dem KI-Chatbot Zugriff auf die Wissensdatenbank gibt:
from mcp.server import Server
from mcp.types import Tool, TextContent
server = Server("health-knowledge")
@server.tool()
async def search_knowledge(
query: str,
category: str | None = None,
) -> list[TextContent]:
"""Durchsucht die Wissensdatenbank nach relevanten Inhalten."""
results = await vector_store.similarity_search(
query=query,
filter={"category": category} if category else None,
k=5,
)
return [
TextContent(
type="text",
text=f"**{r.metadata['title']}**\n{r.page_content}"
)
for r in results
]
@server.tool()
async def get_article_details(article_id: str) -> list[TextContent]:
"""Holt die vollständigen Details eines Wissensartikels."""
article = await db.get_article(article_id)
return [TextContent(type="text", text=article.to_markdown())]
MCP vs. klassisches Function Calling
| Aspekt | Function Calling | MCP |
|---|---|---|
| Standard | Provider-spezifisch (OpenAI, Anthropic) | Offener Standard |
| Transport | HTTP/REST | stdio, HTTP/SSE |
| Discovery | Manuell definiert | Automatische Tool-Discovery |
| Wiederverwendung | Pro Integration | Ein Server, viele Clients |
Der größte Vorteil von MCP: Ein MCP-Server kann von verschiedenen KI-Clients genutzt werden, ob Claude, ChatGPT oder ein eigener LangChain-Agent. Man implementiert die Integration einmal und kann sie überall nutzen.
Lessons Learned
1. Tool-Beschreibungen sind entscheidend
Das LLM entscheidet anhand der Tool-Beschreibung, ob und wann es ein Tool aufruft. Klare, präzise Beschreibungen mit Beispielen verbessern die Trefferquote drastisch.
2. Error Handling nicht vergessen
Was passiert, wenn die Datenbank nicht erreichbar ist? Oder die Suche keine Ergebnisse liefert? Der MCP-Server muss sinnvolle Fehlermeldungen zurückgeben, die das LLM interpretieren kann.
3. Logging und Observability
In Produktionsumgebungen ist es essenziell zu wissen, welche Tools wie oft aufgerufen werden und wie lange die Antwortzeiten sind. Wir loggen jeden Tool-Call mit Metadaten.
Wann lohnt sich ein MCP-Server?
Fazit
MCP ist noch ein junger Standard, aber er löst ein reales Problem: die standardisierte Kommunikation zwischen KI-Modellen und externen Systemen. Die Implementierung eines MCP-Servers ist mit Python und dem offiziellen SDK in wenigen Tagen machbar.
Wenn das in den Betrieb soll: LLM-Readiness-Check.
Verwandte Artikel
LLM-Evaluation in Produktion
Ein Prompt- oder Modellwechsel verschlechtert die Qualität. Niemand merkt es, wenn Evaluation fehlt. Was ich in regulierten LLM-Projekten messe.
Artikel lesenEine schlechte Antwort muss sich rekonstruieren lassen
Ohne Observability kennt niemand die Kosten pro Anfrage und niemand kann eine schlechte Antwort nachvollziehen. Was in LLM-Produktion geloggt werden muss.
Artikel lesenTermin
30 Minuten. Wenn der Use-Case nicht in den Betrieb kann, sage ich das.