So erstellen Sie einen MCP-Server

Autoren

Ash Minhas

Manager, Technical Content | AI Advocate

IBM

PJ Hagerty

Lead, AI Advocacy

IBM

Erika Russi

Data Scientist

IBM

In diesem Tutorial erstellen Sie ein einfaches Model Context Protocol (MCP)-Server, der ein einziges Tool für die Suche nach IBM-Tutorials bereitstellt. Durch Verwendung des „fastmcp“-Frameworks und der Anforderungsbibliothek lädt das Skript einen JSON-Index von Tutorials von einer entfernten URL herunter. Anschließend sucht es nach Übereinstimmungen mit der Abfrage des Benutzers und gibt eine übersichtlich formatierte Liste von Ergebnissen zurück. Sie werden außerdem eine Fehlerbehandlung für Netzwerkprobleme, fehlerhafte JSON-Daten und unerwartete Probleme hinzufügen, um das Tool robust und anfängerfreundlich zu gestalten. Abschließend führen Sie den MCP-Server aus, damit er mit einem Client wie Cursor verbunden und getestet werden kann.

Was ist MCP?

Sowohl Enterprise als auch Startup-Entwickler entwickeln zunehmend generative künstliche Intelligenz (KI)-gestützte Lösungen. Um ihre Lösungen nützlicher zu machen, benötigen sie aktuelle Informationen und Kontexte. Maschinelles Lernen Modelle muss mit Tools arbeiten, Programmierschnittstellen(APIs), Software Development Kits (SDKs) und Front-End-Systeme optimieren, damit dies möglich ist.

Das MCP standardisiert, wie Kontext zwischen KI-Modellen und -Systemen weitergegeben wird. Es vereinfacht die Koordination über ein großes Sprachmodell, (LLM) und externe Datenquellen und Tools. Eine gängige Analogie ist, sich MCP als USB-C-Anschluss für ein LLM vorzustellen. Sie machen ein LLM wesentlich nützlicher, da das Modell Zugriff auf Funktionen und Daten hat, die nicht Teil des Modelltrainings waren. Diese Fähigkeit ist besonders nützlich beim Erstellen von KI-Agenten.

MCP wurde von Anthropic entwickelt und von großen KI-Anbietern wie OpenAI, Google DeepMind und der gesamten Branche übernommen. Es bietet eine sichere und standardisierte Möglichkeit für KI-Modelle, auf externe Daten, Ressourcen (z. B. Prompt-Vorlagen) und Tools zuzugreifen und diese zu nutzen.

Darüber hinaus haben auch integrierte Entwicklungsumgebungen (IDEs) wie Cursor und Visual Studio Code MCP übernommen, sodass ihre KI-Assistenten auf MCP-Server zugreifen können, um ihre Nutzung kontextbezogener und entwicklerfreundlicher zu gestalten. MCP wurde als offener Standard entwickelt und wird von Unternehmen als Brücke zwischen der stochastischen Welt der generativen KI und der deterministischen Welt der meisten heute existierenden Unternehmenssysteme eingesetzt. MCP stellt einen LLM mit Kontextinformationen bereit, ähnlich wie andere Designmuster, die sich zunehmend etablieren, darunter Retrieval Augmented Generation (RAG), Tool Calling und KI-Agenten.

Einige Vorteile der Verwendung von MCP im Vergleich zu diesen anderen Lösungen sind:

- Skalierung: MCP-Server können einmal definiert und gehostet und von vielen KI-Systemen verwendet werden. Diese Fähigkeit schränkt die Notwendigkeit ein, den Zugriff auf dieselben Quelldaten, Ressourcen und KI-Tools für mehrere generative KI-Systeme zu definieren.

- Datenabruf: Im Gegensatz zu RAG, bei dem der Datenabruf vor der Abfrage eine Vorverarbeitung und Vektorisierung erfordert, ist MCP dynamisch und ermöglicht Schwankungen und Aktualisierungen von Informationsquellen in Echtzeit.

- Komplexität: MCP lässt sich relativ einfach einrichten und in KI-Anwendungen integrieren, wie wir hier demonstrieren. Mit Konfigurationsdateien können Sie einen MCP-Server ganz einfach in verschiedenen Umgebungen portabel machen.

- Plattformunabhängig: Abgesehen davon, dass Sie MCP-Server mit Python, TypeScript oder anderen Sprachen erstellen können, sind sie auch nicht an eine bestimmte LLM-Lösung gekoppelt.

- Debugging durch ein Client/Server-Modell: Der MCP-Client sendet Anfragen an den MCP-Server, der dann die erforderlichen Daten von verschiedenen externen Systemen und Quellen abruft – seien es APIs, Datenbanken oder lokale Dateien. Dieser strukturierte Ansatz stellt sicher, dass das KI-Modell einen einheitlichen und relevanten Kontext erhält, was zu genaueren und zuverlässigeren Ausgaben führt. MCP verwendet JSON-RPC zum Kodieren von Nachrichten und unterstützt zwei Transportmechanismen, stdio und streambares HTTP. In früheren Versionen des Protokolls unterstützte es auch HTTP mit Server-Sent Events (SSE),

Die Notwendigkeit, sich ständig über die neuesten Informationen zu informieren, die Ihr Unternehmen benötigt, kann entmutigend sein. MCP kann dabei helfen, den Kontext aufzubauen und neue Informationen für Verträge zu integrieren, während diese ausgeführt werden, Altlast, die digitalisiert, aber nicht unbedingt verständlich gemacht wird, und mehr. Diese Informationen können sowohl intern als auch extern sein, aber das Hinzufügen von Kontext umgeht die zeitaufwändige Notwendigkeit, ein LLM neu zu trainieren, um nützlich zu sein.

Es sind viele Remote-MCP-Server sowie viele Referenzimplementierungen von github.com verfügbar

Schritte

Diese Schritt-für-Schritt-Anleitung finden Sie zusammen mit der Datei server.py in unserem GitHub-Repository Skript, auf das Sie bei der Erstellung Ihres MCP-Servers verweisen. In diesem Tutorial werden wir Sie durch die Erstellung eines einfachen benutzerdefinierten MCP-Servers führen, der Folgendes kann:

  • Verbinden Sie sich mit unserem GitHub-Repository mit Tutorials
  • Führen Sie eine Suche nach Themen durch, die den Benutzer interessieren könnten
  • Geben Sie die Ergebnisse mit Links zum Tutorial zurück

Um Ihnen die Erstellung dieses Tutorials zu erleichtern, haben wir einen Mechanismus entwickelt, mit dem der Server, den Sie erstellen werden, unseren Tutorial problemlos und ohne erforderliche Authentifizierung nutzen kann.

Schritt 1. Einrichten Ihrer Umgebung

- ‌Python 3.11 oder neuer auf Ihrem Computer installiert (prüfen Sie, indem Sie python3 --version in Ihrem Terminal ausführen).

- Das integrierte Venv-Modul ist verfügbar (es wird auf den meisten Systemen mit Python geliefert; auf einigen Linux-Distributionen müssen Sie es möglicherweise separat mit sudo apt install python3-venv installieren).

- Ein Befehlszeilenterminal (CLI):

- macOS oder Linux: Verwenden Sie Ihre Terminal-App (diese Umgebungen sind Unix-ähnlich).

- Windows: Verwenden Sie PowerShell oder Prompt, wobei kleine Syntaxunterschiede in den nächsten Schritten erläutert werden.

- Einen Texteditor oder eine IDE Ihrer Wahl 

Erstellen Sie ein neues Verzeichnis und legen Sie eine cd hinein

  mkdir ibmtutorialmcpserver  und cd ibmtutorialmcpserver

Stellen Sie sicher, dass Sie in dem Verzeichnis vorhanden sindibmtutorialmcpserver können Sie den folgenden Befehl ausführen, um eine virtuelle Umgebung zu erstellen 

python3 -m venv venv 

Hinweis: Unter Windows können Sie möglicherweise ersetzenpython3  mitpython

Sobald Sie die virtuelle Umgebung erstellt haben, müssen Sie sie mit dem folgenden Befehl aktivieren

source venv/bin/activate

Sobald diese aktiviert ist, wird Ihre Shell es Ihnen wahrscheinlich anzeigen(venv) in der Eingabeaufforderung 

Jetzt müssen Sie das Python-Paket fürfastMCP . Dieses Open-Source-Framework bietet alle für den Betrieb eines MCP-Servers erforderlichen Funktionen und wird aktiv gewartet. Wir werden auch das installierenrequests package  für einfache HTTP-Anfragen 

Installieren Sie dasfastMCP undrequests Paket mitpip indem Sie den folgenden Befehl verwenden

pip install fastmcp requests

After this step completes, you can check that fastMCP is installed correctly by running the following command 

fastmcp version

Wenn Sie eine Ausgabe ähnlich der folgenden erhalten, haben Sie fastMCP in Ihrer virtuellen Umgebung installiert.

FastMCP version:                                       2.10.1
MCP version:                                           1.10.1
Python version:                                       3.11.13
Platform:                          macOS-15.5-arm64-arm-64bit
FastMCP root path: /opt/homebrew/lib/python3.11/site-packages

Jetzt nachdem Sie fastMCP installiert haben, erstellen wir unseren MCP-Server.

Schritt 2. Erstellen eines MCP-Servers

Erstellen Sie eine neue Datei in dem Verzeichnis und geben Sie ihr einen Namenserver.py .

Sobald Sie diese Datei haben, öffnen Sie sie und kopieren Sie das folgende Codefragment und fügen Sie es ein 

# Simple MCP server that exposes a single tool to search IBM tutorials.
# How to run:
# 1) Install dependencies: pip install fastmcp requests
# 2) Start the server using an MCP client with the command: fastmcp run <YOUR PATH>/server.py

from fastmcp import FastMCPimport requests

# Source of the tutorials index 
DOCS_INDEX_URL = "https://raw.githubusercontent.com/IBM/ibmdotcom-tutorials/refs/heads/main/docs_index.json"


mcp = FastMCP("IBM Tutorials")

@mcp.tool
def search_ibmtutorials(query: str) -> str:
    """
    Search for tutorials on GitHub by downloading a JSON file from a GitHub repo and searching the payload for any relevant results and the respective details

Args:
    query: The search term to look for in tutorial titles and URLs

Returns:
    A formatted list of relevant tutorial results
    """
    try:
        # Download the JSON file from the GitHub repo
        response = requests.get(DOCS_INDEX_URL, timeout=10)
        response.raise_for_status() # Raise an exception for bad status codes

        # Parse the JSON data
        tutorials = response.json()

        # Search for relevant tutorials (case-insensitive)
        query_lower = query.lower()
        relevant_tutorials = []

        for tutorial in tutorials:
            # Search in title and URL
            title = tutorial.get('title', '').lower()
            url_path = tutorial.get('url', '').lower()

            if query_lower in title or query_lower in url_path:
                relevant_tutorials.append(tutorial)

        # Format and return results
        if not relevant_tutorials:
            return f"No IBM tutorials found matching '{query}'"

        # Format the results
            result_lines = [f"Found {len(relevant_tutorials)} tutorial(s) matching '{query}':\n"]

        for i, tutorial in enumerate(relevant_tutorials, 1):
            title = tutorial.get('title', 'No title')
            tutorial_url = tutorial.get('url', 'No URL')
            date = tutorial.get('date', 'No date')
            author = tutorial.get('author', '')

            result_lines.append(f"{i}. **{title}**")
            result_lines.append(f" URL: {tutorial_url}")
            result_lines.append(f" Date: {date}")
            if author:
                result_lines.append(f" Author: {author}")
            result_lines.append("") # Empty line for spacing

        return "\n".join(result_lines)

    except requests.exceptions.RequestException as e:
    return f"Error fetching tutorials from GitHub: {str(e)}"
    except ValueError as e:
    return f"Error parsing JSON data: {str(e)}"
    except Exception as e:
    return f"Error searching IBM tutorials: {str(e)}"


if __name__ == "__main__":
    mcp.run()

Lassen Sie uns den vorangegangenen Code durchgehen und erläutern, welche Funktionen die wichtigsten Teile erfüllen. 

Importe und Einrichtung

Das Skript beginnt mit dem Import von FastMCP, das das Framework für die Erstellung eines MCP-Servers bereitstellt, sowie von Requests, die zum Herunterladen von Daten über HTTP verwendet werden. Wir haben eine Konstante hinzugefügt,DOCS_INDEX_URL um die Remote-JSON-URL für den Index der Tutorials zu enthalten. Dieser Ansatz erleichtert es, den Quellspeicherort zu ändern, wenn Sie eine andere Quelle für JSON-Daten haben, die Sie in diesem Tutorial später wiederverwenden möchten.

Einrichten des MCP-Servers

Anschließend erstellen wir eine MCP-Serverinstanz mitFastMCP(“IBM Tutorials”) . Dieser Schritt fungiert als zentraler Controller für alle Tools, die der Server MCP-Clients zur Verfügung stellt, wie z. B. dassearch_ibmtutorials  Tool, das wir definieren.

Das MCP-Tool definieren 

Die@mcp.tool  Decorator Markssearch_ibmtutorials  als MCP-Tool verwendet. Diese Funktion nimmt einen Suchbegriff entgegen, lädt den Tutorial-Index herunter von derDOCS_INDEX_URL  durch Verwendungrequests.get() (mit einer Zeitüberschreitung von 10 Sekunden für die Netzwerksicherheit) und löst eine Ausnahme aus, wenn der HTTP-Antwortstatus einen Fehler anzeigt. Sobald die Daten abgerufen wurden, werden sie von JSON in Python-Objekte analysiert.

Bei der Suche wird die Groß-/Kleinschreibung nicht berücksichtigt: Die Suchanfrage wird in Kleinbuchstaben umgewandelt, und auch die Titel und URLs der einzelnen Tutorials werden für den Abgleich in Kleinbuchstaben umgewandelt. Wenn ein Tutorial den Suchbegriff entweder im Titel oder in der URL enthält, wird es zu einer Liste relevanter Ergebnisse hinzugefügt.

Ergebnisse formatieren und zurückgeben

Wenn keine Tutorials mit der Suche übereinstimmen, gibt die Funktion eine freundliche Meldung zurück, die darauf hinweist, dass nichts gefunden wurde. Wenn Übereinstimmungen vorhanden sind, erstellt die Funktion eine formatierte, nummerierte Liste, in der der Titel, die URL, das Datum und – falls verfügbar – der Autor jedes Tutorials angezeigt werden. Bei der Formatierung wird für Titel fett im Markdown-Stil verwendet, damit sie in Clients, die dies unterstützen, hervorstechen. Der endgültige formatierte Text wird als einzelne Zeichenfolge zurückgegeben.

Fehlerbehandlung

Die Funktion umfasst eine gezielte Ausnahmebehandlung:

requests.exceptions.RequestException erkennt Netzwerkprobleme wie Zeitüberschreitungen oder schlechte Verbindungen.

ValueError  (die durch .json()) angehoben werden kann fängt Fälle ab, in denen die Antwort kein gültiges JSON ist.

Ein GeneralException  Handler fängt alle weiteren unerwarteten Ereignisse ab.

Bei jedem Fehler wird eine beschreibende Meldung an den Aufrufer zurückgegeben, anstatt das Programm zu stoppen.

Starten des Servers

Ganz unten befinden sich dieif name == “main” : block stellt dies sichermcp.run() wird nur ausgeführt, wenn das Skript direkt ausgeführt wird. Dieser Schritt startet den MCP-Server und macht dassearch_ibmtutorials Tool für alle MCP-Clients, wie beispielsweise den MCP Inspector, verfügbar. Dieses Tool ist für die Fehlerbehebung und das Debugging Ihres MCP-Servers von Nutzen. Das Tool verfügt über eine Benutzeroberfläche, mit der Sie den MCP-Server debuggen und das erwartete Verhalten überprüfen können. 

Schritt 3. Fügen Sie Ihren MCP-Server zu Ihrer IDE hinzu

Nachdem Sie Ihren Server eingerichtet haben, müssen Sie ihn in Ihrer IDE aktivieren, bevor Sie ihn verwenden können. Es gibt zahlreiche Clients, die MCP mit unterschiedlichen Integrationsstufen des Protokolls unterstützen. Auf der offiziellen MCP-Website finden Sie eine vollständige Liste von Beispielkunden.
Wenn Sie Cursor installiert haben, können Sie den MCP-Server innerhalb von Cursor hinzufügen, indem Sie den folgenden Anweisungen folgen.

Öffnen Sie die Cursor-Einstellungen und navigieren Sie zu „Tools & Integrationen“. Bitte wählen Sie „Neuer MCP-Server“ aus und fügen Sie den Inhalt in die Datei mcp.json ein, die Cursor in einem neuen Tab öffnet. Achten Sie darauf, dass Sie <YOUR PATH> durch das Verzeichnis ersetzen, in dem Sie sich befinden. Sie können pwd in Ihrem Terminal ausführen, um den vollständigen Pfad zu erhalten. Weitere Informationen zu Cursor und MCP finden Sie in der Cursor-Dokumentation.

{
  &quot;mcpServers&quot;: {
    &quot;tutorials&quot;: {
      &quot;command&quot;: &quot;fastmcp&quot;,
      &quot;args&quot;: [&quot;run <YOUR PATH>/ibmtutorialmcpserver/server.py&quot;],
      &quot;env&quot;: {
      }
    }
  }
}

Wenn Sie Microsoft VS Code verwenden, können Sie den MCP-Server gemäß den Anweisungen unter diesem Link hinzufügen. Stellen Sie sicher, dass Copilot in VS Code eingerichtet ist, bevor Sie fortfahren.
Wenn Sie den MCP-Server mithilfe einer Datei aktivieren möchten, erstellen Sie eine .vscode/mcp.json -Datei im Verzeichnis dieses Projekts, kopieren Sie diesen Code und fügen Sie ihn in die Datei ein. Achten Sie darauf, dass Sie <YOUR PATH> durch das Verzeichnis ersetzen, in dem Sie sich befinden. Sie können pwd in Ihrem Terminal ausführen, um den vollständigen Pfad zu erhalten.

&quot;servers&quot;: {
		&quot;IBM Tutorials&quot;: {
			&quot;type&quot;: &quot;stdio&quot;,
			&quot;command&quot;: &quot;fastmcp&quot;,
			&quot;args&quot;: [
				&quot;run&quot;,
				&quot;<YOUR PATH>/ibmtutorialmcpserver/server.py&quot;
			]
		},
	},

Schritt 4. Verwenden Sie Ihren MCP-Server

Nachdem Sie nun Ihren MCP-Server aktiviert haben, wollen wir den Server in Betrieb nehmen, damit Sie das in server.py erstellte Tool verwenden können. Wenn Sie VS Code verwenden, schauen Sie sich diese Dokumente an.

Im IDE-Chat frage ich: „Was sind einige IBM Time Series-Tutorials?“ Im Folgenden sehen Sie die erhaltenen Ausgaben. Ihre Antwort kann jedoch je nach verwendetem Modell und IDE variieren.

Output:

Here are some IBM time series tutorials:

Time series forecasting with Lag-Llama (zero-shot learning)
Tutorial link
Predict overnight low temperatures using the Lag-Llama model in a zero-shot learning scenario.

Using the watsonx.ai Time Series Forecasting API to predict energy demand
Tutorial link
Predict energy demand with the watsonx.ai Time Series Forecasting API.
Authors: Aleksandra Kłeczek and Meredith Syed

Let me know if you want details or help with a specific tutorial.

Großartig! Der Agent konnte das nutzen search_ibmtutorials  Tool zur Suche nach Tutorials zu Time Series.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie mit einem beliebigen MCP-Client einen MCP-Server erstellen, um alle unsere Tutorials zu durchsuchen. Sie haben einen MCP-Server mit einem einzigen Suchtool erstellt, das einen Remote-JSON-Index von Tutorials abruft, die Ergebnisse anhand eines Suchbegriffs gefiltert hat und sie in einem lesbaren Format zurückgibt. Es verwendet fastmcp, um das Tool zu registrieren und auszuführen, fordert das Abrufen der Daten an und umfasst die Fehlerbehandlung für Netzwerk-, Parsing- und unerwartete Probleme. Wenn der Server ausgeführt wird, können MCP-Clients eine Verbindung zu dem Server herstellen, um alle unsere Tutorials live abzufragen.

Weiterführende Lösungen
KI-Agenten für Unternehmen

Entwickeln, implementieren und verwalten Sie leistungsstarke KI-Assistenten und -Agenten, die Workflows und Prozesse mit generativer KI automatisieren.

    Entdecken Sie watsonx Orchestrate
    IBM KI-Agenten-Lösungen

    Gestalten Sie die Zukunft Ihres Unternehmens mit KI-Lösungen, denen Sie vertrauen können.

    KI-Agenten-Lösungen erkunden
    IBM Consulting KI-Dienstleistungen

    Die KI-Services von IBM Consulting unterstützen Sie dabei, die Art und Weise, wie Unternehmen mit KI arbeiten, neu zu denken.

    Erkunden Sie die Services im Bereich der künstlichen Intelligenz
    Machen Sie den nächsten Schritt

    Ganz gleich, ob Sie vorgefertigte Apps und Skills anpassen oder mithilfe eines KI-Studios eigene Agentenservices erstellen und bereitstellen möchten, die IBM watsonx-Plattform bietet Ihnen alles, was Sie brauchen.

    Entdecken Sie watsonx Orchestrate watsonx.ai erkunden