TrailSmith
TrailSmith – wetterbewusster Karpaten-Reiseplanungs-Agent (MCP-Aufgabe)
Repository: https://github.com/mashta-lilia/trailsmith-mcp-agent (vollständiger Commit-Verlauf; dieses Archiv ist ein Export der versionierten Dateien zu einem bestimmten Commit)
Ein domänenspezifischer Daten-Agent, der mehrtägige Wanderrouten in der Tschornohora-Region validiert, risikobewertet und neu plant. Er nutzt zwei MCP-Verbindungen:
Bestehender Server (Teil A): OpenWeather MCP – Live-5-Tage-Wettervorhersagen pro Ortschaft.
Eigener Server (Teil B):
trailsmith(dieses Repository,trailsmith_mcp/) – vier Domänen-Tools über einem lokalen, kuratierten Wegedatensatz.
Der Agent (Claude Agent SDK) validiert eine Route, erzeugt pro Tag einen Tagesbewertungs-Subagenten parallel (Vorhersage → deterministische Analyse → Risikobewertung), erzeugt Neuplanungs-Subagenten für no_go-Tage, führt die Ergebnisse zusammen und validiert erneut, und erstellt einen finalen Plan mit einer sichtbaren Wertschöpfungskette vom rohen Vorhersagetext bis zur Entscheidung.
Schnellstart in einem Befehl (keine API-Schlüssel nötig)
python -m venv .venv
.\.venv\Scripts\pip install -r requirements.txt
.\.venv\Scripts\python scripts\walkthrough.py demo\itinerary_storm.json --fixtures scenario_stormDas führt den gesamten Planungsablauf gegen eine aufgezeichnete Vorhersage aus – validieren, jeden Tag bewerten, den gefährlichen Tag neu planen, Logistik schätzen – ohne LLM und ohne Anmeldedaten:
[2] day 2 2026-08-21 NESAMOVYTE -> BYSTRETS (10.2 km, 500 m)
forecast: 2026-08-21 conditions='Thunderstorm thunderstorm with heavy rain' ...
risk: 100 no_go
+70 thunderstorm_on_exposed_ridge: Thunderstorm forecast on an exposed ridge.
+35 wet_exposed_ridge: 25.0 mm precipitation on an exposed ridge at 2036 m: ...
[3] day 2 is no_go - replanning
chose ['CH-022', 'CH-014'] (9.3 km) -> 60 caution [relaxation: none]Vollständige Anleitung mit Live-Wetter und dem Agenten: docs/quickstart.md.
Related MCP server: GemmaJnana
Voraussetzungen
Python 3.12+ (getestet mit 3.13)
Go 1.21+ (nur zum Erstellen des OpenWeather-MCP-Binaries)
Ein OpenWeatherMap-API-Schlüssel (kostenlose Stufe) und ein Anthropic-API-Schlüssel
Installation
PowerShell, vom Repository-Stammverzeichnis aus:
python -m venv .venv
.\.venv\Scripts\pip install -r requirements.txt
go install github.com/mschneider82/mcp-openweather@latest
New-Item -ItemType Directory -Force bin
Copy-Item "$env:USERPROFILE\go\bin\mcp-openweather.exe" bin\
Copy-Item .env.example .envDann .env bearbeiten:
Variable | Wofür benötigt |
| den Agenten (Claude Agent SDK). Optional, wenn Sie |
| Live-OpenWeather-Aufrufe. Ein neuer Schlüssel benötigt bis zu ~2 h bis zur Aktivierung. |
| optionale Überschreibung; Standard ist |
|
|
| optionales Wiedergabeverzeichnis; Standard ist |
Geheimnisse leben ausschließlich in .env (git-ignoriert, zusammen mit allen .env.*-Varianten).
Es wird nichts Sensibles eingecheckt.
Unabhängige Startbefehle
Eigener MCP-Server (separater Prozess):
.\.venv\Scripts\python -m trailsmith_mcpAgent:
.\.venv\Scripts\python -m agent.runner demo\itinerary_clean.jsonSmoke-Tests:
.\.venv\Scripts\python scripts\smoke_custom_server.py(erkennt und ruft den eigenen Server über stdio auf),.\.venv\Scripts\python scripts\smoke_weather_server.py [city](bestehender Server).
Der Agent startet seine eigenen MCP-Verbindungen; das manuelle Starten von trailsmith_mcp demonstriert Prozesstrennung und unabhängige Startbarkeit.
Demo-Eingaben
Datei | Zweck |
| 3-tägige Tal-/Mischwanderung – sauberer Durchlauf |
| Tag 2 überquert den exponierten Turkul-Grat. Neuplanung feuert nur bei Sturmwetter – ausführen mit |
| Unbekannter Streckenabschnitt – Demo für strukturierte Fehler |
| Geänderte gültige Eingabe: 5 Tage, hohe Fitness |
| Geänderte gültige Eingabe: geringe Fitness → eine weiche |
**Vor einer Live-Demo scripts/refresh_demo.py ausführen** – es verschiebt die Demo-Daten in das Vorhersagefenster, zeichnet echte Fixtures neu auf, erstellt das datumsgebundene Sturmszenario neu und gibt die Demo-Befehle aus.
Die Demo-Daten müssen innerhalb des 5-Tage-Vorhersagefensters liegen. Sie sind auf den 20.08.2026 gesetzt; vor einer Live-Demo jedes date-Feld anpassen und scripts/fetch_fixtures.py erneut ausführen. Außerhalb des Fensters wirft der Parser korrekt NO_FORECAST_FOR_DATE und der Tag wird auf weather_known=false / caution herabgestuft – ein legitimer Pfad, aber nicht der, den man als sauberen Durchlauf präsentieren möchte.
Fixtures und Offline-Wiedergabe
Echte Antworten aufzeichnen:
.\.venv\Scripts\python scripts\fetch_fixtures.pyspeichert den rohen Tool-Text unterfixtures/openweather/. Es zeichnet auch die Antwort für eine ungültige Stadt auf – die der Server als erfolgreichen Alles-Nullen-Body zurückgibt, nicht als Fehler, also als normale.txtgespeichert. Es gibt keine.error.txt-Fixtures, weil der vorgelagerte Server nie einen Fehler erzeugt hat.Offline-Wiedergabe:
REPLAY=1setzen und den Agenten normal ausführen. Der Wiedergabeserver (scripts/replay_weather_server.py) bietet denselbenweather-Vertrag an und liefert den aufgezeichneten Text unverändert aus – die Analyse- und Fehlerbehandlung des Agenten läuft unverändert; nichts wird vorab geparst.
$env:REPLAY=1
.\.venv\Scripts\python -m agent.runner demo\itinerary_clean.jsonSturmszenario.
no_go-Risiko erfordert Gewitter oder schwere Wetterbedingungen, die in Karpaten-Vorhersagen oft fehlen – an einem ruhigen Tag meldet der Agent korrektok/cautionund plant nie neu, sodass der Neuplanungszweig nicht auf Abruf demonstriert werden kann.fixtures/scenario_storm/enthält eine klar gekennzeichnete synthetische Eingabe (eine geänderte Wetterbedingung in einer ansonsten echten Aufzeichnung), um diesen Zweig zu testen; siehe dessen README, und weisen Sie bei der Vorführung darauf hin. Auswählen mit:
$env:REPLAY=1; $env:FIXTURE_SET="scenario_storm"
.\.venv\Scripts\python -m agent.runner demo\itinerary_storm.jsonRatenlimits
Der kostenlose OpenWeatherMap-Tarif erlaubt 60 Aufrufe/Minute. Was unsere Aufrufmenge tatsächlich begrenzt:
validate_itinerarylehnt Routen mit mehr als 7 Tagen ab (Itinerary.dayshatmax_length=7), sodass höchstens 7 Tagesbewertungs-Subagenten erzeugt werden.Jeder Tagesbewertungs-Subagent ist auf
maxTurns=6begrenzt, sodass er bei einem Fehler nicht in einer Schleife auf die Wetter-API zugreifen kann.Der ungünstigste Fall liegt damit deutlich unter dem Minutenlimit. Die Breite der parallelen Stapelverarbeitung entscheidet der Claude-Code-CLI-Task-Scheduler, nicht dieser Code – wir begrenzen die Gesamtzahl der Aufrufe, nicht deren Nebenläufigkeit.
Kostenbegrenzungen (agent/orchestrator.py): max_budget_usd=1.50 und max_turns=30 in der Hauptschleife, plus maxTurns pro Subagent. Dies sind harte SDK-Grenzen, keine Prompt-Anweisungen; agent/runner.py gibt die Anzahl der Turns und die Dollarkosten aus und kennzeichnet einen Lauf, der an einer Begrenzung gestoppt wurde.
Gesamtsystem verifizieren
.\.venv\Scripts\python scripts\verify.pyFührt 12 Prüfungen aus – beide MCP-Verbindungen und deren Tool-Erkennung, Prozesstrennung, ein erfolgreicher Aufruf auf jeder Seite, strukturierter Fehler vs. leerer Erfolg, konservative Verschlechterung bei unbrauchbarer Vorhersage, byte-identische Datensatz-Regenerierung und die Testsuite. Keine Anthropic-Anmeldedaten erforderlich.
Tests
.\.venv\Scripts\python -m pytest tests -q45 Unit-Tests decken Validierungsregeln, Risiko-Heuristiken, Graphsuche, Logistik, den Vorhersagetext-Parser (einschließlich fehlerhafter Eingaben) und Regressionstests für jeden Vertrags- und Korrektheitsfehler ab, der während der Überprüfung gefunden wurde.
Dokumentation
Beginnen Sie mit dem Dokumentationsindex.
Dokument | Beantwortet |
Wie bringe ich das zum Laufen? | |
Wie ist es aufgebaut, und wohin fließt welches Ergebnis? | |
Was genau akzeptiert und liefert jedes Tool? | |
Warum dieser Weg, und wo liegen die Grenzen? | |
Warum verhält es sich nicht wie dokumentiert? | |
Wie wird es demonstriert? | |
Woher stammen die Wegedaten? |
Skripte
Skript | Zweck |
| Demo für heute vorbereiten: Demo-Daten in das Vorhersagefenster verschieben, echte Fixtures neu aufzeichnen, das datumsgebundene Sturmszenario neu erstellen, die Demo-Befehle ausgeben |
| Ein-Befehl-Nachweis des gesamten Systems: beide MCP-Verbindungen, Prozesstrennung, Fehlerverträge, Verschlechterung bei Ausfällen, Datensatz-Reproduzierbarkeit, Tests |
| Gesamten Domänen-Workflow deterministisch ausführen, ohne LLM oder Anmeldedaten |
| Eigenen Server in einem separaten Prozess starten, seine Tools auflisten und aufrufen |
| Bestehenden OpenWeather-MCP-Server aufrufen (benötigt einen Schlüssel) |
| Echte API-Antworten für die Offline-Wiedergabe aufzeichnen |
| Aufgezeichnete Fixtures unter demselben |
| Wegedatensatz deterministisch neu erzeugen |
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA comprehensive MCP server providing 30 tools for geocoding, routing, and OpenStreetMap data analysis. It enables AI assistants to search for locations, calculate travel routes, and perform quality assurance checks on map data.303MIT
- Flicense-qualityBmaintenanceMulti-domain MCP server enabling AI agents to plan and execute vacation travel and birthday party logistics via local tool pipelines.
- FlicenseAqualityDmaintenanceA FastMCP server that exposes hospitality data — accommodations, events, and gastronomy — through a unified MCP interface, supporting multiple worlds for real or fictional data.5
- Flicense-qualityAmaintenanceAn MCP server providing geocoding, routing, isochrones, and POI-by-proximity search through self-hosted OpenStreetMap backends.
Related MCP Connectors
MCP server for the Fail Modes taxonomy — a knowledge base of AI system failure modes
MCP server for generating rough-draft project plans from natural-language prompts.
Hosted MCP server to manage a restaurant menu from AI agents - 39 tools over the DuckHub API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mashta-lilia/trailsmith-mcp-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server