Skip to main content
Glama
jasonwarta

swapi_mcp

by jasonwarta

swapi_mcp

Ein kleines End-to-End-Referenzprojekt zum Aufbau eines beobachtbaren KI-Agenten: ein MCP-Server, der die Star Wars API kapselt, ein Claude-Agent, der ihn steuert, und eine Web-Chat-UI – alles instrumentiert mit OpenTelemetry und Grafana Cloud (verteilte Traces, RED-Metriken, Frontend-RUM und KI-/Agenten-Beobachtbarkeit).

Es soll in einer einzigen lauffähigen Codebasis zeigen, wie die Teile zusammenspielen – die MCP-Tool-Grenze, die Schleife zur Tool-Nutzung des Agenten und das Full-Stack-Tracing von einem Browserklick bis hinunter zu einem HTTP-Aufruf an einen vorgelagerten Dienst und zurück.

Was ist enthalten

Zwei Hälften, die über MCP (stdio) miteinander kommunizieren:

Der MCP-Server (src/index.ts, src/tools/) – kapselt die Star Wars API als 18 Tools über 6 Ressourcen (Personen, Planeten, Filme, Spezies, Fahrzeuge, Raumschiffe): ein search_, ein get-all und ein get-by-id pro Ressource. Er ist ein reiner Tool-Anbieter; er trifft keine Entscheidungen.

Der Agent (src/agent/) – der Entscheidungsträger:

  • mcpClient.ts – startet den gebauten Server über stdio und verbindet sich als MCP-Client.

  • agent.ts – eine manuelle Schleife zur Tool-Nutzung: die Frage plus die Tools des Servers an Claude senden, jedes angeforderte Tool über MCP ausführen, Ergebnisse zurückspielen und wiederholen, bis alles erledigt ist.

  • main.ts – ein CLI-Einstiegspunkt.

  • server.ts + public/index.html – ein HTTP-Server und eine Single-Page-Chat-UI.

Related MCP server: SWAPI MCP Server

Beobachtbarkeit

Alles unten ist optional und über Umgebungsvariablen gesteuert – der Agent läuft auch ganz ohne all das einwandfrei.

  • Verteiltes Tracing (OpenTelemetry → Tempo): ein Trace erstreckt sich über browser → POST /ask → agent.turn → llm.request / tool.call → tool.execute → swapi.fetch über drei Dienste (swapi-web, swapi-agent, swapi-mcp-server). Der Trace-Kontext wird über das _meta-Feld der Anfrage über die MCP-Grenze hinweg propagiert.

  • RED-Metriken (→ Mimir): Histogramme für Rate, Fehler und Dauer pro Tool und pro LLM-Aufruf sowie ein Token-Verbrauchszähler für Kosten, getaggt mit model, error und error.type.

  • Frontend-RUM ([Gra fana Faro](https://gra fana.com/oss/faro/)): Web-Vitals, JS-Fehler und Browser→Backend-Trace-Weitergabe.

  • KI-/Agenten-Beobachtbarkeit (@gra fana/agent-o11y): normalisierte LLM-Generierungen und Tool-Ausführungen.

  • Demo-Fehlerinjektion (src/chaos.ts): lässt optional eine Ressource einen simulierten 503 zurückgeben und eine andere 50 % langsamer laufen, sodass die Dashboards echte Fehler- und Latenzsignale zeigen.

Voraussetzungen

  • Node.js 22+ (verwendet --env-file)

  • Yarn 4 (über Corepack)

  • Ein Anthropic-API-Schlüssel (für den Agenten)

  • Ein Grafana-Cloud-Konto (optional – nur für die Beobachtbarkeitsfunktionen)

Einrichtung

yarn install
yarn build

Den MCP-Server direkt verwenden (z. B. Claude Desktop)

Richten Sie Ihren MCP-Client auf den gebauten Server aus:

{
  "mcpServers": {
    "swapi": { "command": "node", "args": ["/absolute/path/to/swapi_mcp/build/index.js"] }
  }
}

Den Agenten ausführen

Erstellen Sie eine .env (von Git ignoriert) mit mindestens Ihrem Anthropic-API-Schlüssel:

ANTHROPIC_API_KEY=sk-ant-...

Dann:

yarn dev                              # build + serve the web UI at http://localhost:8787
yarn ask "Who is Luke's homeworld?"   # one-shot CLI

Umgebungsvariablen

Variable

Zweck

ANTHROPIC_API_KEY

Erforderlich für den Agenten.

ANTHROPIC_MODEL

Modellüberschreibung (Standard claude-sonnet-5).

PORT

Port des Webservers (Standard 8787).

OTEL_EXPORTER_OTLP_ENDPOINT / _HEADERS / _PROTOCOL, OTEL_SERVICE_NAME

Aktiviert OTLP-Traces und -Metriken an Gra fana Cloud.

FARO_URL, FARO_APP_NAME

Aktiviert das Gra fana-Faro-Frontend-RUM (die Collect-or-URL ist bewusst öffentlich).

AGENTO11Y_ENDPOINT, AGENTO11Y_AUTH_TENANT_ID, AGENTO11Y_AUTH_TOKEN, AGENTO11Y_PROTOCOL, AGENTO11Y_AUTH_MODE

Aktiviert Gra fana Agent Observability (das Token benötigt die Berechtigung sigil:write).

CHAOS_ENABLED, CHAOS_FLAKY_RESOURCE, CHAOS_SLOW_RESOURCE

Demo-Fehlerinjektion (standardmäßig deaktiviert).

Hinweise

Dies ist ein Lern-/Demoprojekt. Die Daten stammen aus einem statischen Spiegel von SWAPI, der Assoziationen modelliert (ein Charakter „erscheint in“ einem Film), keine Aktionen – daher sind die Antworten entsprechend formuliert.

Lizenz

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for querying the Star Wars universe via the SWAPI API, providing access to characters, films, starships, vehicles, species, and planets.
    ISC
  • F
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that exposes Star Wars API data as MCP tools. It enables users to list available categories and retrieve character information.
    3
    35 npm
    -