Skip to main content
Glama
jasonwarta

swapi_mcp

by jasonwarta

swapi_mcp

Небольшой сквозной эталонный проект для создания наблюдаемого ИИ-агента: MCP-сервер, оборачивающий Star Wars API, агент Claude, который им управляет, и веб-интерфейс чата — всё инструментировано с помощью OpenTelemetry и Grafana Cloud (распределённые трассировки, RED-метрики, фронтенд RUM и наблюдаемость ИИ/агентов).

Он создан, чтобы на одной работающей кодовой базе показать, как части сочетаются друг с другом: граница инструментов MCP, цикл использования инструментов агентом и сквозная трассировка от клика в браузере до вышестоящего HTTP-вызова и обратно.

Что внутри

Две части, которые общаются друг с другом через MCP (stdio):

  • mcpClient.ts — запускает собранный сервер через stdio и подключается как MCP-клиент.

  • agent.ts — ручной цикл использования инструментов: отправляет вопрос и инструменты сервера в Claude, выполняет каждый запрошенный инструмент через MCP, возвращает результаты и повторяет, пока задача не будет завершена.

  • main.ts — точка входа CLI.

  • server.ts + public/index.html — HTTP-сервер и одностраничный чат-интерфейс.

Related MCP server: SWAPI MCP Server

Наблюдаемость

Всё нижеперечисленное необязательно и управляется переменными окружения — агент отлично работает и без этого.

  • Распределённая трассировка (OpenTelemetry → Tempo): одна трасса охватывает browser → POST /ask → agent.turn → llm.request / tool.call → tool.execute → swapi.fetch в трёх сервисах (swapi-web, swapi-agent, swapi-mcp-server). Контекст трассы передаётся через границу MCP через _meta запроса.

  • RED-метрики (→ Mimir): гистограммы частоты запросов / ошибок / длительности для каждого инструмента и каждого вызова LLM, плюс счётчик использования токенов для оценки стоимости, с тегами model, error и error.type.

  • Фронтенд RUM (Grafana Faro): Web Vitals, ошибки JS и распространение трассы из браузера в бэкенд.

  • Наблюдаемость ИИ / агентов (@grafana/agent-o11y): нормализованные генерации LLM и выполнения инструментов.

  • Демонстрационная инъекция сбоев (src/chaos.ts): опционально заставляет один ресурс возвращать имитируемую ошибку 503, а другой — работать на 50 % медленнее, чтобы на дашбордах были реальные сигналы ошибок и задержек.

Предварительные требования

  • Node.js 22+ (использует --env-file)

  • Yarn 4 (через Corepack)

  • Ключ API Anthropic (для агента)

  • Аккаунт Grafana Cloud (необязательно — только для функций наблюдаемости)

Установка

yarn install
yarn build

Использование MCP-сервера напрямую (например, Claude Desktop)

Направьте ваш MCP-клиент на собранный сервер:

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

Запуск агента

Создайте файл .env (игнорируется git) как минимум с вашим ключом Anthropic:

ANTHROPIC_API_KEY=sk-ant-...

Затем:

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

Переменные окружения

Переменная

Назначение

ANTHROPIC_API_KEY

Обязательно для агента.

ANTHROPIC_MODEL

Переопределение модели (по умолчанию claude-sonnet-5).

PORT

Порт веб-сервера (по умолчанию 8787).

OTEL_EXPORTER_OTLP_ENDPOINT / _HEADERS / _PROTOCOL, OTEL_SERVICE_NAME

Включает OTLP-трассы и метрики в Grafana Cloud.

FARO_URL, FARO_APP_NAME

Включает фронтенд RUM Grafana Faro (URL коллектора публичен по замыслу).

AGENTO11Y_ENDPOINT, AGENTO11Y_AUTH_TENANT_ID, AGENTO11Y_AUTH_TOKEN, AGENTO11Y_PROTOCOL, AGENTO11Y_AUTH_MODE

Включает Grafana Agent Observability (токену требуется область sigil:write).

CHAOS_ENABLED, CHAOS_FLAKY_RESOURCE, CHAOS_SLOW_RESOURCE

Демонстрационная инъекция сбоев (по умолчанию выключено).

Примечания

Это учебный / демонстрационный проект. Данные берутся из статического зеркала SWAPI, которое моделирует связи (персонаж «появляется в» фильме), а не действия — поэтому ответы формулируются соответствующим образом.

Лицензия

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