Skip to main content

MCP server that generates Russian GOST/ESKD technical documents (passport, manual, TU, mounting, form, label) in md/docx/pdf from product data

Project description

pocketcoder-gost

MCP-сервер для генерации технических документов по ГОСТ/ЕСКД. Шесть текстовых ЭД (паспорт, РЭ, ТУ, ИМ, ФО, этикетка) × три формата (md, docx, pdf) из одного product_data.

Подключается к Claude Code, Cursor или Claude Desktop по протоколу MCP. LLM-инференс — на стороне твоего агента, сервер делает «руки»: знает структуру ГОСТов, штамп ЕСКД, нумерацию, склонения, и собирает финальные файлы под нормоконтроль.

Зачем

Конструктор пишет ТУ или паспорт неделю — copy-paste из соседнего изделия, ручная сверка с ГОСТом, правка нумерации. С pocketcoder-gost весь скелет ЕСКД-документа собирается за секунды из одной структуры product_data, а агент дописывает только техническую конкретику.

Установка

pip install pocketcoder-gost

Опциональные toolchains для рендера в docx/pdf:

Формат Что нужно Установка
md ничего сверх пакета
docx pandoc brew install pandoc  |  apt install pandoc
pdf xelatex + класс eskdx brew install --cask mactex-no-gui  |  apt install texlive-xetex texlive-lang-cyrillic && tlmgr install eskdx

Если toolchain отсутствует — generate_document вернёт {error, hint} с per-OS подсказкой, не упадёт.

Подключение к MCP-клиенту

Добавь в конфиг клиента:

Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS) / %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "pocketcoder-gost": {
      "command": "pocketcoder-gost",
      "args": ["mcp"]
    }
  }
}

Cursor~/.cursor/mcp.json (или .cursor/mcp.json в проекте):

{
  "mcpServers": {
    "pocketcoder-gost": {
      "command": "pocketcoder-gost",
      "args": ["mcp"]
    }
  }
}

Claude Code.mcp.json в корне проекта или ~/.claude.json:

{
  "mcpServers": {
    "pocketcoder-gost": {
      "command": "pocketcoder-gost",
      "args": ["mcp"]
    }
  }
}

После перезапуска клиента в чате доступны 5 tools (list_standards, get_standard_section, get_document_structure, generate_document, validate_normcontrol).

Доступные tools

Tool Назначение
list_standards() Список ГОСТов, входящих в MVP
get_standard_section(standard_id, section) Текст конкретного раздела ГОСТ. section = номер (4.2), toc, meta
get_document_structure(doc_type) Скелет разделов: passport | manual | tu | mounting | form | label
generate_document(doc_type, product_data, format, output_path?) Рендер документа. format = md | docx | pdf. Возвращает путь или {error, hint}
validate_normcontrol(text, standards) Заглушка под валидатор нормоконтроля (полноценный — в v0.2)

Пример: попросить агента сгенерировать паспорт

В чате клиента:

Сделай паспорт на изделие «Блок управления БУС-12», обозначение ЭПТ.421457.001 ПС, разработчик — ООО «Эпотос», в формате PDF.

Агент составит product_data (универсальная модель ProductBase + открытая таблица ТТХ через parameters[]), вызовет generate_document и сохранит passport.pdf в указанный каталог.

Что внутри

pocketcoder_gost/
├── models/           ProductBase, Person, Parameter (pydantic v2)
├── templates/        15 .j2 шаблонов: 6 doc-types × {md,tex} + штамп ЕСКД + таблица ТТХ
├── generators/       md + docx (pandoc) + pdf (xelatex) пайплайны
├── parsers/          парсеры ГОСТ-разделов
├── loaders/          загрузчики product_data
├── standards/        мета-данные стандартов
└── mcp/              FastMCP-сервер, 5 tools

Стандарты, по которым штампует:

  • ГОСТ 2.114-2016 (ТУ)
  • ГОСТ 2.610-2019 (паспорт, РЭ, ИМ, ФО, этикетка)
  • ГОСТ 2.104-2006 (штамп ЕСКД)
  • ГОСТ 2.601-2019 (ЭД на изделие)
  • ГОСТ 15150-69 (условия хранения)
  • ГОСТ 14254-2015 / IEC 60529 (степень защиты IP)
  • ГОСТ 8.417-2002 (единицы величин)

Открытая таблица ТТХ

ProductBase содержит универсальные поля (наименование, обозначение, питание, габариты и т.д.). Доменно-специфичные ТТХ (масса ОТВ, класс пожара, цвет огнетушащего вещества — что угодно) передаются через массив parameters[] с опциональными группами и сносками. Шаблоны автоматически рендерят группированную или плоскую таблицу.

{
  "parameters": [
    {"name": "Огнетушащее вещество", "value": "Аэрозоль", "group": "ТТХ"},
    {"name": "Масса заряда ОТВ", "value": "1,2 кг", "group": "ТТХ"},
    {"name": "Время работы", "value": "8 с", "group": "Эксплуатация", "note": "1"}
  ]
}

Разработка

git clone https://github.com/pocketcoder-ch/pocketcoder-gost.git
cd pocketcoder-gost
uv sync
pytest                       # 125 unit + e2e тестов
python tools/mcp_smoke.py    # 24 live MCP-вызова

Лицензия

MIT. Автор и единственный мейнтейнер — Dmitrii Chashchin (cdv.inbox@gmail.com).

Roadmap

  • v0.1 — MCP + 6 ЕСКД-шаблонов в md/docx/pdf, открытая таблица ТТХ ← текущий
  • v0.2 — валидатор нормоконтроля (ЕСПД 1986, коды 01–47): ёлочки, тире, единицы СИ, мёртвые ссылки на пункты/таблицы, обязательные разделы
  • v0.3+ — облако pocketcoder.tech: HTTP-backend через POCKETCODER_API_KEY, биллинг, коммерческие шаблоны (КП, ТКП, договор)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pocketcoder_gost-0.1.0.tar.gz (87.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pocketcoder_gost-0.1.0-py3-none-any.whl (108.4 kB view details)

Uploaded Python 3

File details

Details for the file pocketcoder_gost-0.1.0.tar.gz.

File metadata

  • Download URL: pocketcoder_gost-0.1.0.tar.gz
  • Upload date:
  • Size: 87.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for pocketcoder_gost-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d10294bb54d7d2d400dfcd392a84a66368f8c05868e345a7d5d51092cbc41307
MD5 dfa41a598e146ad71a4e82c525389861
BLAKE2b-256 957b467030b7a1a650191dd4dba3531633bd0da5fa694162657589b88c4aefb4

See more details on using hashes here.

File details

Details for the file pocketcoder_gost-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pocketcoder_gost-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 253ef6a282b750c561902c91c6989409b666006ce8b0597d6b1e33264e8c6f73
MD5 8d0a76a90c16788404a7ac3bdf27c96b
BLAKE2b-256 4706d57e861e69c339f877b0d5c4c2f84a8ab1f7884f53872d7c230ef682dcfa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page