Skip to main content
Glama
pefman
by pefman

MCP Grand Prix

Это MVP гоночной 3D-игры на основе LLM. LLM-агенты управляют автомобилями Формулы-1 на общей трассе через гибридный гоночный цикл — стратегическое планирование, симуляцию физики и короткие реактивные окна принятия решений — пока браузерный клиент для зрителей следит за гонкой в прямом эфире.

Проект представляет собой MCP-сервер, который открывает LLM-агентам инструменты состояния игры и стратегии, а также включает Three.js-панель зрителя и небольшой набор скриптовых/LLM-агентов.

Архитектура

┌────────────┐   MCP (SSE)   ┌───────────────┐   tool calls   ┌──────────────┐
│  LLM agents│ ────────────▶ │  src/mcp      │ ◀───────────── │  RaceEngine  │
│ (LLM or    │               │  server.ts    │   JSON-RPC     │  (authoritative)
│  scripted) │               └───────────────┘                └──────┬───────┘
│             │                                                    │ push
│             │                     ┌───────────────┐              │ snapshot
│             │                     │  src/server   │◀─────────────┘
│             │   HTTP + WS (/ws)   │  index.ts     │
└────────────┘ ◀────────────────── │  spectator    │
        Browser spectator        └───────────────┘
        (Three.js, www/client.js)
  • src/game/raceEngine.ts — серверное игровое ядро. Владеет всем состоянием игры и предоставляет детерминированные идемпотентные методы-инструменты (startRace, submitPhaseStrategy, reactToEvent, step). Эти же методы передаются реальным LLM через MCP и скриптовым агентам в рамках процесса, поэтому поведение идентично независимо от того, кто их вызывает.

  • src/mcp/server.ts — MCP-сервер (JSON-RPC/SSE), который открывает инструменты движка для агентов.

  • src/game/raceRunner.ts — управляет гибридным гоночным циклом (стратегия → симуляция → реактивные окна) шаг за шагом.

  • src/server/ — HTTP + WebSocket сервер и канал для зрителей.

  • www/ — браузерный клиент для зрителей (Three.js).

Related MCP server: fastf1-mcp

Гоночный цикл

  1. Фаза стратегии — каждый круг все агенты отправляют StrategyPacket (состав шин, режим вождения, экономия топлива, необязательный круг пит-стопа).

  2. Фаза симуляции — движок продвигает физику на каждом тике.

  3. Реактивные окна — триггерные события (плотное противоборство, автомобиль безопасности, погода, износ шин) открывают короткие окна посреди круга, в которых затронутые агенты отвечают (push / save / pit_now / attack / defend).

Быстрый старт

npm install
npm run build   # prebuild copies three.js into www/lib
npm start       # serves the spectator app + MCP server

Откройте панель зрителя по адресу http://localhost:3000 и запустите гонку:

curl -X POST http://localhost:3000/race

Браузер подключается к тому же хосту/порту по WebSocket (/ws) для получения живых обновлений.

Запуск гонки со скриптовыми агентами из командной строки

npm run agents        # launches 4 scripted agents in a full race (demo)

Конфигурация (переменные окружения)

Переменная

По умолчанию

Назначение

PORT

3000

HTTP + порт WebSocket для зрителей

MCP_PORT

9090

Порт MCP JSON-RPC/SSE

SPECTATOR_PORT

Запасной вариант для HTTP-порта (если PORT не задан)

PORT используется, чтобы приложение было совместимо с serverless-платформами (например, Vercel задаёт PORT).

Скрипты

Скрипт

Описание

npm run build

Компиляция TypeScript (srcdist)

npm run dev

Запуск сервера через tsx (без шага сборки)

npm start

Запуск собранного сервера

npm run agents

Запуск демо-гонки со скриптовыми агентами

npm test

Запуск юнит-тестов (Vitest)

npm run test:e2e

Запуск сквозных тестов Playwright

npm run lint

Проверка типов с помощью tsc --noEmit

Тестирование

  • Юнит-тесты (npm test) покрывают публичный контракт гоночного движка — жизненный цикл, отправку стратегии, реактивные ответы и полное завершение гонки — на реальном ядре движка.

  • Сквозные тесты (npm run test:e2e) поднимают сервер, запускают гонку и проверяют, что браузер отображает автомобили и живую таблицу лидеров, что гонка продвигается и завершается победителем, и что появляется интерфейс реактивного окна.

MCP-инструменты

Сервер предоставляет четыре MCP-инструмента (см. src/mcp/server.ts):

Инструмент

Описание

get_race_state

Полное текущее состояние гонки: автомобили, позиции, разрывы, шины, топливо, круги, события.

submit_phase_strategy

Отправка стратегии автомобиля для текущего окна стратегии (идемпотентно).

react_to_event

Ответ на открытое реактивное окно для автомобиля (идемпотентно).

get_race_log

Отладочный журнал сервера со стратегическими решениями и реактивными действиями.

Реальные LLM-агенты подключаются как MCP-клиенты (SSE) для вызова этих инструментов; скриптовые агенты вызывают методы движка в процессе. startRace и пофазовый step являются внутренними для гоночного раннера и не предоставляются как MCP-инструменты.

F
license - not found
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
    C
    quality
    D
    maintenance
    Enables AI assistants to access real-time iRacing telemetry, race information, camera control, pit operations, and replay features through the MCP protocol.
    17
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A local MCP server that gives Claude (or any MCP-compatible AI client) access to Formula 1 race data. Load any session from 2018 onwards, ask questions in natural language, and get answers backed by real telemetry, timing, and strategy data.
    17
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • Build, validate, and deploy multi-agent AI solutions from any AI environment.

  • MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents

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/pefman/mcpGrandPrix'

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