antics-gg/antics-mcp

antics-gg/antics-mcp

от antics-gg
MCP сервер, который позволяет AI-агенту написать веб-игру и мгновенно развернуть её как мультиплеер по ссылке. Идеально для быстрого прототипирования: одной командой вы даете друзьям доступ к игре с живой синхронизацией и лидербордом.

antics-mcp

Multiplayer for your game, in one prompt. An MCP server that lets an AI agent generate a web game and deploy it to a playable multiplayer URL — rooms, live state sync, and leaderboards — inside a single conversation.

AI can write a whole game — a single HTML file or a multi-file project — but it can't stand up a server, so everything it builds is single-player. antics-mcp is the missing piece: your agent writes the game, calls one tool, and hands you back a link your friends can open. No backend, no player accounts.

antics.gg · full API in one file: antics.gg/llms.txt

Install

Claude Code:

claude mcp add antics -- npx -y antics-mcp

Claude Desktop / Cursor / any MCP client — add to your MCP config (claude_desktop_config.json, Cursor's mcp.json, etc.):

{
  "mcpServers": {
    "antics": {
      "command": "npx",
      "args": ["-y", "antics-mcp"]
    }
  }
}

Then just ask: “Make a 2-player game and deploy it.” The agent writes it, calls deploy_game, and returns a playable URL — no copy-paste, no site visit, no login.

Инструменты были проиндексированы:
create_project

Создаёт проект; возвращает его id, публичный ключ (pk_) и секретный ключ (sk_, показывается один раз).

Параметры
  • namestringобязательный
deploy_game

Разверните игру и получите игровой URL для мультиплеера (без ключа, если нет projectId). Передайте один HTML-файл как html ИЛИ многофайловый проект как files (сопоставление путь -> содержимое, например index.html + game.js + styles.css; бинарные ассеты как data: URI). Сначала пишите игру под antics SDK — вызовите get_docs, если ещё не вызывали.

Параметры
  • entrystring

    Entry file path when it is not index.html.

  • filesobject

    Multi-file project: { "index.html": "...", "game.js": "...", "styles.css": "..." }. Entry is index.html unless entry is set.

  • htmlstring

    The full HTML of a single-file game.

  • projectIdstring
find_models

Ищет опубликованные 3D-модели по названию, описанию или имени PART (например, 'coil_r1c2'). Возвращает URL-адреса; для получения инструкций по использованию модели в игре обратитесь к <url>/llms.txt. Разбит на страницы: передайте возвращённый курсор для получения следующих результатов.

Параметры
  • cursorstring

    From a previous call's nextCursor.

  • limitnumber

    1-100, default 24.

  • qstring

    Text to match. Omit for the most recent.

get_account

Какой план у этого пользователя и что он ограничивает? Вызывайте это ПЕРЕД созданием сервер-авторитетной (sim.js) игры и всякий раз, когда комната sim отклонена. Сообщает план, сколько ОДНОВРЕМЕННЫХ комнат sim он разрешает и сколько из них активны, и подтверждает, что классический (размещённый в браузере) уровень неограничен на любом плане, включая безключевой. Написание и РАЗВЁРТЫВАНИЕ sim-игры никогда не блокируется; ЗАПУСК одной на серверной стороне — активные комнаты, probe_sim и verify_game на sim-развёртывании — требует Pro, потому что он выполняет игровую логику на нашем CPU.

Параметры

Без параметров.

get_docs

Получите полный справочник API antics SDK + рабочие примеры (llms.txt). Вызовите это ДО написания игры, чтобы она интегрировалась правильно с первого раза. Передайте topic:'sim' для контракта разработки уровня SERVER-AUTHORITATIVE (sim.js: schema/init/simulate, prediction via room.sim, physics/CDN imports, probe_sim workflow) — прочитайте его перед написанием любой игры уровня sim.

Параметры
  • topicenum

    Omit for the classic-tier SDK reference; 'sim' for the sim-tier (sim.js) authoring contract.

get_leaderboard

Читать таблицу лидеров проекта (лучшие результаты).

Параметры
  • boardstring
  • limitnumber
  • projectIdstringобязательный
list_my_models

Какие 3D-модели я опубликовал и были ли они одобрены? Показывает всё на вашем аккаунте, включая модели, все ещё НА РАССМОТРЕНИИ: /api/models и find_models этого не делают, потому что они показывают только публичное. Каждая запись содержит точный вызов, который заменяет её без изменения URL. Требует входа в систему.

Параметры

Без параметров.

list_projects

Перечисляет ваши проекты (требуется вход в систему).

Параметры

Без параметров.

probe_sim

Самый БЫСТРЫЙ способ проверить игровую логику уровня симуляции: запускает развёрнутый sim.js в серверной песочнице с запрограммированными ВИРТУАЛЬНЫМИ игроками — никакого браузера, детерминированно (одинаковый seed ⇒ идентичный прогон). ТРЕБУЕТ PRO (он выполняет вашу игровую логику на нашем CPU, как в живой комнате симуляции); бесплатные/анонимные вызывающие получают PLAN_REQUIRED — сначала вызовите get_account. Возвращает конечные значения плюс потактовые трассы min/max/first/last для каждого числового пути: переходные эффекты (мяч, проходящий сквозь ракетку, всплеск, перелёт) видны в min/max, даже если конечное состояние выглядит чистым. Управляет логикой многопользовательского взаимодействия (столкновения, подсчёт очков, очерёдность ходов), задавая каждому виртуальному игроку программу ввода. Предпочитайте этот инструмент verify_game для итерации логики; используйте verify_game для рендеринга, ощущения реального ввода и синхронизации двух браузеров.

Параметры
  • hashstringобязательный

    Deployment hash of a SIM-tier deploy (from deploy_game — its sim.js is what gets pumped).

  • playersobject[]

    Virtual players (up to 8) — verify 2-player logic with zero browsers.

  • readStatestring[]

    Schema paths: "ball.x", "players.p1.score", wildcard "players.*.score" traces every id. Bad paths return the full valid-path roster.

  • secondsnumber

    Sim-seconds to pump (default 5, capped at 300; wall-clock fast).

  • seednumber

    Math.random seed (default 1). Same seed ⇒ bit-identical run; vary to explore.

  • traceInputsboolean

    Also echo, per virtual player, WHICH input the runner applied each tick — appliedInputs[id].applied[k] is the input at tick k+1 (null = none, { input, held: true } = the last program input HELD after it ended). Debugs choreography: proves phase 1's input drove the early ticks and phase 2 the later ones. Opt-in (grows the response); capped at the first 600 ticks.

  • traceSeriesboolean

    Also return the per-tick time series per numeric path — parallel {t, v} arrays (t in sim-ms; <=600 points, uniformly thinned). 'When exactly did the phase flip' in one call instead of bisecting.

  • viewAsstring

    Probe AS this player id: readState resolves through the sim's view(state, playerId) export — verify a hidden-information game hides what it should. Requires a view() export.

publish_model

Опубликуйте 3D MODEL, созданную с помощью antics-modelkit (не игра: модель не присоединяется к комнатам). Соберите её с помощью npx modelkit build, отрендерите её карточку с помощью npx modelkit preview <name> --card, затем передайте .glb и рецепт, который её генерирует. Она попадает в очередь на проверку: страница не публична и не индексируется, пока оператор не одобрит её. URL постоянен — чтобы позже обновить ассет, вызовите update_model, никогда не публикуйте его снова, иначе ссылка станет недействительной.

Параметры
  • demoDirstring

    Directory to read the demo from, walked by the server — needs an index.html at its top level. Use this instead of demoFiles when the demo ships a .glb or textures.

  • demoFilesobject

    Optional interactive demo: a path -> content map like deploy_game's files. Runs sandboxed on the model page; the facts, licences and downloads stay on the page either way.

  • glbstring

    The built .glb, base64. Triangle count and part names are read from the FILE, not from you. Prefer glbPath — a textured asset does not fit comfortably in a tool call.

  • glbPathstring

    Path to the built .glb on disk, read by the server — use this instead of glb for anything with real texture data. e.g. ./dist/claw.glb

  • imagestring

    Share card, base64 PNG, exactly 1200x630 — npx modelkit preview <name> --card produces it.

  • imagePathstring

    Path to the share card PNG on disk, read by the server. Alternative to image.

  • kitVersionstringобязательный

    The antics-modelkit version it was built with, so the recipe can be run again.

  • licenceenumобязательный

    Licence for the ASSET. Irreversible once published; CC0 in particular cannot be walked back. CC-BY-4.0 unless the user says otherwise.

  • namestringобязательный

    What the model is, e.g. 'Vending machine'.

  • recipestringобязательный

    The models module that generates it — published alongside under MIT so anyone can rebuild it with different arguments.

  • sourcesstring[]обязательный

    What the asset was DERIVED from (a base mesh, a scan, a reference pack). Pass [] only if it is genuinely original — an empty list is a claim, not a default, and a human cannot see derivation in a mesh.

  • summarystring

    One line for the card and the unfurl.

report_finding

ОПЦИОНАЛЬНО: отправьте проблему платформы/браузера, с которой вы столкнулись И РЕШИЛИ, и которая не была освещена в документации (например, странное поведение ввода на iOS), чтобы документация улучшилась для будущих агентов. БУДЬТЕ КРАТКИ — несколько простых предложений на каждое поле; слишком длинные поля отклоняются, а не обрезаются. Человек проверяет каждое сообщение; ничего не публикуется автоматически. Отправляйте только один раз на каждую проблему.

Параметры
  • areaenumобязательный

    Surface the issue lives in.

  • fixstringобязательный

    What actually worked. ≤ 420 chars.

  • hashstring

    Optional deploy hash the issue occurred in.

  • severityenumобязательный

    How badly it bit.

  • snippetstring

    Optional minimal code, ≤ 500 chars.

  • symptomstringобязательный

    What went wrong, observably. ≤ 280 chars.

  • titlestringобязательный

    One line, ≤ 80 chars.

set_room_target

Объединяет посетителей ссылки /p/<slug> проекта так, чтобы НЕЗНАКОМЦЫ, ПЕРЕШЕДШИЕ ПО НЕЙ, ВСТРЕЧАЛИСЬ ДРУГ С ДРУГОМ, вместо того чтобы каждый попадал в пустую комнату. roomTarget задаёт количество игроков на общую комнату: прибывающие заполняют одну до этого числа, затем открывается следующая. Установите его в соответствии с реальным составом игры (2 для дуэли, 8 для вечеринки). Оставьте неустановленным — тогда комнаты будут вмещать до 16 (лимит платформы), что позволит разместить зрителей сверх вашего состава. Передайте null, чтобы отключить пулинг. Используйте для любой игры, чья ссылка ПУБЛИКУЕТСЯ В ОТКРЫТОМ ДОСТУПЕ; ссылка, отправленная троим знакомым, наоборот, требует значения по умолчанию. ТРЕБУЕТ, чтобы игра запрашивала дверь (postMessage { antics: "mint", entry: "multi" }) — вызовите get_docs для этого контракта. Ограничено владельцем: требуется вход.

Параметры
  • projectIdstringобязательный

    The project to pool.

  • roomTargetinteger | nullобязательный

    Players per shared room (1-16), or null to go back to a fresh room per visitor.

set_share_preview

Настраивает разворачивание ссылок на комнаты проекта в чатах и соцсетях (Discord, Slack, iMessage, X) и заполняет его публичную страницу мира. Доступно владельцу — требуется вход в систему. Задаёт любой из: name (заголовок ссылки), description (краткое описание; передайте "" для очистки), about + rules (индексируемое содержимое страницы мира — пишите их для каждой игры, которую развёртываете) и изображение через imageUrl (https) ИЛИ imageData (base64 или data: URI — загружается и размещается) ИЛИ clearImage:true, чтобы вернуть стандартное изображение. Только одно действие с изображением за вызов.

Параметры
  • aboutstring

    What the game is and what makes it fun — shown on its /world page + in-room info panel, ≤ 1200 chars. Pass "" to clear.

  • clearImageboolean

    Revert the image to the site's default share card.

  • descriptionstring

    Unfurl description, ≤ 200 chars. Pass "" to clear it.

  • imageDatastring

    Image as base64 or a data: URI (PNG/JPEG/WebP, ≤ 2 MB) — uploaded and hosted.

  • imageUrlstring

    External https:// image URL (stored as-is; recommended 1200×630).

  • namestring

    Unfurl title / game rename. Non-empty, ≤ 80 chars.

  • projectIdstringобязательный

    The project whose share preview to set.

  • rulesstring

    How to play — controls, goal, rules. Shown under "How to play", ≤ 2000 chars. Pass "" to clear.

update_model

Заменяет опубликованный актив модели на месте, СОХРАНЯЯ её URL /m/<slug> — используется вместо повторной публикации, которая создаёт новую страницу и теряет уже распространённую ссылку. Необходимо передать перестроенный .glb и рецепт, который его генерирует. Возвращает модель в очередь проверки, так что страница перестаёт быть публичной, пока оператор снова её не одобрит.

Параметры
  • demoDirstring

    Directory to read the replacement demo from, walked by the server. Omit to leave the existing demo alone.

  • demoFilesobject

    Replacement demo, a path -> content map. Omit to leave the existing demo alone — but if the geometry moved, the old demo may no longer match it.

  • glbstring

    The rebuilt .glb, base64. Prefer glbPath.

  • glbPathstring

    Path to the rebuilt .glb on disk, read by the server.

  • imagestring

    Share card, base64 PNG, exactly 1200x630 — npx modelkit preview <name> --card. Re-render it: a stale card shows the geometry you just replaced.

  • imagePathstring

    Path to the re-rendered share card PNG on disk. Alternative to image.

  • kitVersionstring

    The antics-modelkit version it was rebuilt with.

  • modelstringобязательный

    The slug or id of a model you published — list_my_models has both.

  • recipestringобязательный

    The models module that generates it. Required: a .glb without its recipe breaks the pairing the page is built on.

  • summarystring

    One line for the card and the unfurl.

verify_game

Видит и ИЗМЕРЯЕТ развернутую игру без браузера: запускает её без головы на сервере в реальной комнате и возвращает скриншот, вывод консоли и — надёжный сигнал — живые числовые пробы её синхронизированного состояния. Используйте после каждого deploy_game и для диагностики любых сообщённых ошибок. Пути readState ('state.score', 'player.self.x', 'player.<id>.y') читают живое состояние SDK в момент захвата; с advanceSeconds (виртуальные часы, которые ускоряются намного быстрее реального времени — отрисовка пропускается во время ускорения, при этом ВЕСЬ ваш JS всё ещё выполняется; тяжёлая покадровая ЛОГИКА по-прежнему замедляет его, и захват имеет бюджет ~30с+0.5с/сек реального времени) каждый числовой путь также получает потактовый след min/max/first/last, который ловит переходные процессы, скрытые последним кадром (вершина прыжка, всплеск значения). Управляйте вводом с таймированными фазами клавиш; players: 2 открывает две страницы в ОДНОЙ комнате для проверки кросс-клиентской синхронизации — input управляет страницей 0, а для каждой страницы inputs: [{...}, {...}] позволяет ДЕЙСТВОВАТЬ ОБЕИМ страницам (их последовательности выполняются одновременно на одних общих часах). Предпочитайте пробы визуальному осмотру пикселей. Бесплатно и без ограничений для CLASSIC-игр; при развёртывании против SIM (sim.js) он выполняет вашу логику на нашем процессоре и требует Pro, как и probe_sim.

Параметры
  • advanceSecondsnumber

    Fast-forward this many game-seconds on a virtual clock (fast in wall time; capped at 300), tracing readState per tick.

  • hashstring

    Deployment hash from deploy_game — verifies a fresh room (sim deployments run in deterministic lockstep).

  • inputobject

    Scripted input for page 0 (the single-page shorthand).

  • inputsany[]

    Per-page input for players: 2 — inputs[0] drives page 0, inputs[1] page 1 (page 0 falls back to input). Sequences run CONCURRENTLY on the one shared virtual clock, so two-player interactions (chase, collide, rally) are scriptable.

  • playersnumber

    1 (default) or 2 — two pages in one room for sync verification.

  • readStatestring[]

    Paths: "state.<key…>" or "player.<id|self>.<key…>"; in SIM rooms also "sim.<schema path>" (predicted state) and "render.<schema path>" (the smoothed view a correct game draws — use for motion/overshoot checks). "self" works as a player-id segment. Bad paths return the valid options.

  • roomstring

    Live room code to inspect instead of minting a fresh room.

  • sandboxboolean

    Score-safe verification: the capture room ranks submitScore calls on its own throwaway local board and never writes the project leaderboard — use when iterating on a game whose share link is already public. Fresh rooms only (with hash, not room).

  • screenshotboolean

    Default true. Set false to skip the image (faster, probes only).

  • screenshotAtMsnumber[]

    Mid-capture screenshots at these VIRTUAL ms stamps (<=8; same clock as the response's virtualMs — settle counts). Action shots mid-flight without timing the whole capture to end there; each lands within a frame or two, under players[i].screenshots.

  • settleMsnumber

    Virtual boot budget before probing (default 3000).

  • simulateLatencyMsnumber

    One-way latency per client↔server leg, in ms (fresh-minted via hash; max 2000). WORKS ON BOTH TIERS: sim rooms get it in exact ticks, classic rooms get every WebSocket frame held on the virtual clock. RUN THIS — a 0ms loopback is the one condition your game will never actually be played under, and on the CLASSIC tier YOU own the latency compensation, so 0ms testing means it is untested. Try 150 (cross-continent) and 250 (cross-ocean): another player's state arrives 2x this value later (two legs), so at 150 you are looking at 300ms-old positions. If bodies visibly sit behind where they should be, or a predicted object snaps, you are rendering staleness instead of replaying it forward — stamp what you send with room.now() and advance it by its age on arrival.

  • simulateLatencyTicksnumber

    Same as simulateLatencyMs but exact, in sim ticks. SIM rooms only (ticks need a stepped runner); on classic use simulateLatencyMs.

  • traceSeriesboolean

    Also return the actual sampled time series per numeric readState path — parallel {t, v} arrays (virtual ms, value; <=600 points, uniformly thinned). The trace aggregates answer 'did it ever'; the series answers 'WHEN exactly' (where a run died, when a phase flipped).

  • urlParamsobject | object[]

    Extra query params for the page under test, e.g. { "seed": "42" } — make runs DETERMINISTIC if your game reads them (Math.random varies per run otherwise). A single object applies to every page; an ARRAY (one object per page, like inputs) gives each page its own — [{ name: "A", team: "red" }, { name: "B", team: "blue" }] with players: 2. Array length must match players.

Похожие MCP-сервера

coding-solo/godot-mcp

coding-solo/godot-mcp

MCP сервер для разработчиков на Godot: запускает редактор, выполняет проекты, захватывает отладку и управляет сценами. Интеграция с AI позволяет быстро проверять код и отлаживать игры прямо в движке.

JavaScript5612
n24q02m/better-godot-mcp

n24q02m/better-godot-mcp

Сервер для разработки игр на Godot Engine с AI-агентами: 17 инструментов для управления сценами, скриптами и ресурсами напрямую, без запуска редактора. Ускоряет создание прототипов.

TypeScript37
alex-gon/thegamecrafter-mcp-server

alex-gon/thegamecrafter-mcp-server

MCP сервер, связывающий ИИ-ассистента с API The Game Crafter для проектирования и оценки настольных игр через естественный язык. Просмотр каталога компонентов, создание проектов, добавление карт и плат, загрузка изображений, мгновенный расчёт цены — всё через ассистента. Полезен инди-дизайнерам и...

TypeScript3
jiayao/mcp-chess

jiayao/mcp-chess

MCP-сервер для игры в шахматы с любой языковой моделью. Включает визуализацию доски, ходы в SAN, список допустимых ходов и поиск позиции в PGN по условию. Полезен для обучения и анализа партий.

Python23
Erodenn/godot-mcp-runtime

Erodenn/godot-mcp-runtime

MCP-сервер для Godot 4, который даёт AI-агентам полный контроль над проектом: редактирование сцен, нод, скриптов и запуск с runtime-мостом для скриншотов, симуляции ввода и live GDScript. Незаменим...

TypeScript70
jkiley129/steam-mcp

jkiley129/steam-mcp

Этот MCP сервер подключает Claude к вашей библиотеке Steam. Ищите игры по названию, времени, статусу, получайте детали: жанры, рейтинг, цену. Задавайте вопросы на естественном языке - сервер сам работает с API Steam.

TypeScript5
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин