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

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • 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
    B
    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
    140

View all related MCP servers

Related MCP Connectors

  • SWAPI MCP — wraps the Star Wars API (swapi.dev, free, no auth)

  • Star Wars API (SWAPI) as a remote MCP server: films, people, planets, species, starships, vehicles.

  • Rick and Morty MCP — wraps the Rick and Morty API (free, no auth)

View all MCP Connectors

Latest Blog Posts

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/jasonwarta/swapi_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server