DANIEL KIRCHNER
Alle Artikel
28. März 20266 min Lesezeit

MCP-Server: Das Model Context Protocol in der Praxis

MCPKILangChainPythonFastAPILLM

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:

  • Tool-Definitionen: Welche Funktionen stehen dem LLM zur Verfügung?
  • Transport Layer: Wie kommuniziert das LLM mit dem Server? (stdio, HTTP/SSE)
  • Tool-Implementierung: Was passiert, wenn das LLM ein Tool aufruft?
  • 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

    AspektFunction CallingMCP
    StandardProvider-spezifisch (OpenAI, Anthropic)Offener Standard
    TransportHTTP/RESTstdio, HTTP/SSE
    DiscoveryManuell definiertAutomatische Tool-Discovery
    WiederverwendungPro IntegrationEin 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?

  • Wenn Ihr KI-Chatbot auf interne Datenquellen zugreifen soll
  • Wenn Sie die gleiche Tool-Integration für verschiedene LLMs nutzen wollen
  • Wenn Sie KI-Agenten bauen, die aktiv mit Ihren Systemen interagieren sollen
  • 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 lesen

    Eine 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 lesen

    Termin

    30 Minuten. Wenn der Use-Case nicht in den Betrieb kann, sage ich das.