npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

drakon-mcp

v0.4.0

Published

MCP-сервер генерации ДРАКОН/ГОСТ 19.701-схем: запись .drakon (DrakonHub 1.5.7) и рендер .jpg настоящим движком DrakonHub в headless-Chromium.

Readme

drakon-mcp

MCP-сервер генерации схем алгоритмов в нотациях ДРАКОН и ГОСТ 19.701-90 («Схема программы», символы «Данные»/«Решение»): запись .drakon (формат DrakonHub 1.5.7) и рендер .jpg с белым фоном движком DrakonHub, переведённым на TypeScript, в headless-Chromium.

Установка

npm install -g drakon-mcp   # или как зависимость проекта

Требуется Node.js ≥ 18 и Chromium (поиск: DRAKON_CHROME → каталоги ms-playwright → PATH: chrome/chromium/msedge).

Шрифты Arimo (public domain) входят в пакет (assets/fonts) — рендер работает сразу после установки.

Возможности

  • tools: generate_drakon (model|graph → .drakon + .jpg, docReady ≤190×250 мм), validate_drakon, render_drakon_file (переэкспорт JPG для существующего .drakon), generate_drakon_from_mermaid (Mermaid Flowchart → ДРАКОН/ГОСТ 19.701), render_sequence (Mermaid sequenceDiagram → .jpg + .mmd);
  • resources: drakon://drakonhub-format, drakon://code-mapping, drakon://contract, drakon://sequence-format (правила сиквенс-диаграмм);
  • валидатор профиля (zod, строгий; while/repeat — вопросами, DrakonGraph.loopGRAPH_LOOP_UNSUPPORTED);
  • конвертер DrakonGraphDrakonModel (конвенция: заголовок «Начало программы», note→content, стиль {"maxWidth":240,"headerFont":"15px Arimo"});
  • транспилятор Mermaid → DrakonModel: слияние веток, циклы ДЛЯ (loopbegin/loopend), выборка select/case для 3+ выходов, иконки ввода-вывода;
  • сиквенс-рендер в духе sequencediagram.org (src/sequence/: parser → metrics → painter, canvas 2D): участники, стрелки всех типов, активации (колбы), фрагменты alt/else, opt, loop, par, critical, note, create/destroy, autonumber, title;
  • рендер: puppeteer-core (поиск Chromium: DRAKON_CHROME → ms-playwright → PATH), сеть запрещена (только file:/data:), PNG→JPG: sharp flatten #FFFFFF, качество 92, 4:4:4, предел 4096 px.

CLI

drakon-render <файл.drakon|модель.json|сиквенс.mmd> [--scale 1|2|4] [--png] [--check]

Движок (TypeScript)

Движок DrakonHub 1.5.7 полностью переведён на TypeScriptsrc/drakon-host/engine/ (1:1 относительно оригинала, поведение зафиксировано parity-тестами на 25 моделях):

  • engine/canvas/ — ядро DrakonCanvas: раскладка skewer, рендер, виджеты, модели, редактирование, текстовый конвейер, все ГОСТ 19.701-патчи (gost.ts);
  • engine/common/ — dh2common: check-контур, подписи Да/Нет/Конец/Ветка (15 языков), UI;
  • engine/pseudocode/ — drakongen (toPseudocode ru/en/no);
  • engine/svg/ — canvas2svg (C2S); engine/geometry/, engine/dom/, engine/editing/, engine/utils.ts, engine/config.ts;
  • host.ts — DI-сборка и API host-страницы (window.__drakon*).

Исходная поставка DrakonHub 1.5.7 зафиксирована в doc/vendor/vendor-manifest.json (sha256 оригиналов; reference). Шрифты — корневой assets/fonts (в пакете — dist/assets/fonts); host-страница получает их базовый URL от render.ts (window.__drakonFontBase).

Сборка из исходников

bun install
bun run build:host   # бандл движка → src/drakon-host/bundle/ (gitignored)
bun run check        # tsc + тесты (e2e-рендеры требуют Chromium)

Запуск

npx drakon-mcp                             # Node ≥ 18
bunx --bun drakon-mcp@latest               # Bun (для машин с Node < 18)
drakon-render <файл.drakon|модель.json> [--scale 1|2|4] [--check]

В opencode MCP настраивается командой ["bunx", "--bun", "-y", "drakon-mcp@latest"] (если системный Node младше 18) либо ["npx", "-y", "drakon-mcp@latest"] (Node ≥ 18).

Окружение: DRAKON_CHROME (путь к Chromium), DRAKON_OUT_ROOT (корень записи, по умолчанию корень проекта), DRAKON_OUT_DIR (подкаталог по умолчанию, doc), DRAKON_BROWSER_IDLE_MS, DRAKON_LOG.

Разработка

  • bun test — unit (test/engine), parity против baseline (test/baseline), e2e рендеры; bun x tsc --noEmit — типы.
  • bun run scripts/capture-baseline.ts — пересъём эталонов (при смене Chromium/платформы — отдельным коммитом).
  • bun run scripts/reachability-map.ts — карта достижимости API движка.

Совместимость

Файлы .drakon открываются в DrakonHub Desktop 2026.06.05 (движок 1.5.7, с патчами ГОСТ — поддержка data/decision). Оригинальный движок — public domain (© Stepan Mitkin, DrakonHub), см. NOTICE и doc/vendor/vendor-manifest.json.