get_weather ist die Bezeichnung, die angezeigt wird, wenn MS-Agent den Serververbindungsnamen und den Werkzeugnamen kombiniert. area und target_date sind keine vordefinierten Aufrufparameter, sondern strukturierte Parameter, die von Qwen3-4B basierend auf "Hangzhou morgen" generiert werden. Die entsprechenden Registrierungsergebnisse sind unten dargestellt.
Der Wetter-MCP erhält die Parameter, analysiert "Hangzhou" als "Hangzhou, Zhejiang, China", konvertiert tomorrow in den 7. September 2026 entsprechend der lokalen Zeitzone und gibt zurück:
{
"requested_area": "Hangzhou",
"resolved_area": "Hangzhou, Zhejiang, China",
"date": "2026-09-07",
"timezone": "Asia/Shanghai",
"weather_code": 51,
"weather": "Leichter Nieselregen",
"temperature_max_c": 29.0,
"temperature_min_c": 21.6,
"precipitation_probability_max_percent": 31,
"wind_speed_max_kmh": 13.0,
"data_source": "Open-Meteo"
}
Qwen3-4B generiert dann eine natürlichsprachliche Antwort basierend auf diesen Ergebnissen und listet die tatsächlich passende Region, das Datum, die Wetterbedingungen, die maximalen und minimalen Temperaturen, die Niederschlagswahrscheinlichkeit und die maximale Windgeschwindigkeit auf. Damit ist die Aufrufkette "Frage verstehen — Werkzeug auswählen — Parameter generieren — Werkzeug ausführen — Ergebnisse verarbeiten" abgeschlossen. Die kombinierten Ergebnisse des großen Modells sind unten dargestellt.
Nach Hosting und Konfiguration verbinden Sie sich zuerst direkt mit dem Dienst und überprüfen die Werkzeugliste. Das folgende Testbeispiel verwendet die Website https://example.com.
async def direct_fetch_check():
async with streamable_http_client(MCP_SERVER_URL) as streams:
read_stream, write_stream, _ = streams
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
print("Vom Server zurückgegebene Werkzeuge:", [tool.name for tool in tools.tools])
result = await session.call_tool(
"fetch",
arguments={
"url": "https://example.com",
"max_length": 1000,
"start_index": 0,
"raw": False,
},
)
if result.isError:
raise RuntimeError(str(result.content)
for block in result.content:
if getattr(block, "type", None) == "text":
print(block.text)
await direct_fetch_check()
Anmelden an der Diskussion teilnehmen
Bei der tatsächlichen Ausführung stellt der Server das fetch-Werkzeug bereit und gibt Auszüge des Webinhalts und Links der Zielseite zurück. Dies bestätigt, dass der ModelScope-Hosting-Dienst, die Streamable HTTP-Verbindung und das Web-Scraping-Werkzeug funktionieren. Die direkte Verbindung zum von ModelScope gehosteten fetch-Dienst, die Werkzeugerkennung und der zurückgegebene Webinhalt sind unten dargestellt.

Nach dem erfolgreichen direkten Aufruf verwenden Sie die zuvor konfigurierte Qwen3-4B, damit das Modell das Werkzeug autonom auswählt:
fetch_agent = LLMAgent(
config=agent_config,
tag="fetch-demo",
mcp_config=mcp_config,
)
await fetch_agent.run(
"Bitte verwende das Web-Scraping-Werkzeug, um https://example.com zu lesen."
"Setze max_length beim Aufruf auf 1000 und gib den Hauptzweck und den ersten Link im Fließtext der Seite zurueck."
"Verwende nur die von diesem Tool zurueckgegebenen Inhalte; falls der Aufruf fehlschlaegt, sage das deutlich und ergaenze nichts."
)
Die Experimentalprotokolle zeigen, dass MS-Agent erfolgreich mit dem als fetch bezeichneten Server verbunden ist, Qwen3-4B fetch---fetch ausgewählt und die folgenden Parameter generiert hat:
{
"url": "https://example.com",
"max_length": 1000
}
Nachdem das Werkzeug den Webinhalt zurückgegeben hat, erklärt das Modell, dass diese Domain für Dokumentationsbeispiele verwendet wird, und gibt den ersten vom Werkzeug zurückgegebenen Link aus. Bei der Überprüfung dieser Ergebnisse sollten die vom Modell generierten Parameter, die ursprüngliche Werkzeugrückgabe und die finale Antwort separat überprüft werden. Die Ergebnisse der Qwen3-4B-Ausführung für die Generierung der fetch-Werkzeugaufrufparameter, den zurückgegebenen Inhalt und die finale Antwort sind unten dargestellt.

Die direkte Verwendung von Anwendungsdiensten aus dem MCP-Platz von ModelScope gegenüber einem selbstgebauten Wetter-MCP liegt darin, dass die Implementierung und Laufzeitumgebung des Servers durch die Hosting-Fähigkeit von ModelScope verwaltet wird, während das Notebook nur die Verbindungskonfiguration speichern und Aufrufe starten muss. Unabhängig davon, ob vorhandene oder selbstgebaute Dienste verwendet werden, ist die Überprüfungsreihenfolge dieselbe: Servicestatus überprüfen, Werkzeuge erkennen, direkt testen und dann das Modell autonom aufrufen lassen.
Die MCP-Berechtigungsverwaltung darf sich nicht auf "kann dieser Server verbunden werden oder nicht" beschränken, sondern muss drei Fragen klären: Welche Ressourcen kann der aktuelle Benutzer erreichen, welche Werkzeuge kann das Modell aufrufen und welche Auswirkungen hat jeder Aufruf auf externe Systeme. Daher muss die Zugriffskontrolle schichtweise vom Host über den MCP-Server bis zu den Backend-Geschäftssystemen implementiert werden und stets dem Prinzip der minimalen Berechtigung folgen. Selbst schreibgeschützte Werkzeuge dürfen nicht als risikofrei betrachtet werden, da sie weiterhin sensible Informationen wie Kundeninformationen, Quellcode und Zugangstoken lesen können.
Für Operationen, die den externen Zustand ändern, muss die Berechtigungskontrolle je nach Risiko schrittweise verstärkt werden. Schreiboperationen wie Dateien erstellen, Datensätze ändern, E-Mails senden und Termine hinzufügen sollten dem Benutzer vor der Ausführung das Zielobjekt und die wichtigsten Parameter anzeigen. Für Hochrisiko-Operationen wie Daten löschen, Überweisungen, Massenversand, öffentliche Veröffentlichungen, Berechtigungsänderungen, Befehlsausführung und Produktionsänderungen muss die automatische Ausführung standardmäßig eingeschränkt werden, mit expliziter manueller Bestätigung und vollständiger Auditierung.
Neben den Berechtigungen der Werkzeuge müssen Anmeldeinformationen und Konten separat kontrolliert werden. Sensible Informationen wie API-Schlüssel und Zugangstoken dürfen nicht in Prompts, Chat-Protokollen, Code-Repositories oder gewöhnlichen Logs erscheinen. Bei der Verbindung des MCP-Servers mit Backend-Systemen müssen eingeschränkte dedizierte Konten und Anmeldeinformationen verwendet werden.
MCP ermöglicht es dem Modell nicht nur, Inhalte zu generieren, sondern auch Dateien zu lesen, Datenbanken abzufragen, Netzwerkdienste aufzurufen und sogar externe Systeme zu verändern. Daher sind die Sicherheitsrisiken komplexer als bei einem normalen Chat-Modell. Die risk-quellen umfassen nicht nur Benutzereingaben, sondern auch Webseiten, Dokumente, Datenbankdatensätze, Werkzeugrückgaben, Servercode und Drittanbieter-Abhängigkeiten. Das Typischste ist Prompt-Injektion: Externe Inhalte können bösartige Anweisungen verstecken, die das Modell dazu verleiten, weiterhin Datei-, Netzwerk- oder Nachrichtenwerkzeuge aufzurufen und gefährliche inter-systeme Operationsketten zu bilden.
Ein weiteres Kernrisiko ist unberechtigter Zugriff und Informationsleck. Die vom Modell generierten Parameter dürfen nicht als Autorisierungsbasis betrachtet werden. Für formale Umgebungen empfiehlt es sich, geprüfte Server-Whitelists und Versionslisten zu pflegen und bei Änderungen von Werkzeugen oder Versionen die Berechtigungen neu zu bewerten.
MCP eignet sich besser für Szenarien, in denen viele externe Werkzeuge und Datenquellen vorhanden sind, diese Fähigkeiten von verschiedenen Modellen oder Agents wiederverwendet werden sollen und das Modell dynamisch entscheiden soll, welche Werkzeuge aufgerufen werden. Häufige Anwendungen umfassen Dateizugriff, Datenbankabfragen und Informationsabruf.
MCP eignet sich auch gut für die Verbindung von E-Mail, Kalender, Cloud-Speicher, Projektmanagementsystemen und bestehenden Geschäfts-APIs. Wenn Geschäftsprozesse jedoch festgelegt sind, die Aufrufbeziehungen klar sind und hohe Latenzanforderungen bestehen, ist ein direkter Aufruf einer normalen API oft einfacher und zuverlässiger.
Alle experimentellen Daten und Code dieses Kapitels finden Sie unter:
https://modelscope.cn/gallery/liucong/fae5791c-a024-412f-97c3-5fb93fee708e