Необходимость MCP по метаданным вызывает вопросы (если у вас есть доступ к файлам конфигурации), но для чего нам точно может потребоваться MCP по метаданным, так это для 7.7.
У меня есть обработка по обмену, которая продается на Инфостарте уже много лет, и тут прилетел запрос на её доработку, я уже думал отказаться, т.к. нужно было добавить кучу новых (старых) документов в обмен, но вспомнил, что на дворе уже 26 год) и что потратить мне придётся в основном токены.
"Вы ещё покупаете MCP? Тогда мы идём к вам!"
1.Пишем MCP
Как известно, лучший способ получить нужный функционал - навайбкодить его.
Т.к. я хотел всё сделать по-быстрому, да и тяжким грузом висели перед выходными неиспользованные лимиты, решил использовать лучшую на тот момент модель для кодинга в 1С - Opus 4.6 в Claude Code
Claude Code - это CLI (Команд Лайн Интерфейс) т.е. программка для командной строки
Opus 4.6 модель ИИ которую в числе бесчётного множества можно использовать в этой CLI
Открываем пустую папку. Кладем туда конфигурацию 7.7 (1Cv7.MD) и пишем стандартный промпт:
"Я хочу написать mcp сервер для работы с метаданными конфигурации 1С 7.7. Задай необходимые вопросы и напиши понятный тебе план реализации"
Чтобы он не пошёл сразу делать, я включил режим планирования.
Если кому-то интересны ответы на вопросы и рассуждения модели, то они тут
User answered Claude's questions:
· На каком языке/рантайме хотите реализовать MCP сервер? → Python
· В каком формате хранятся ваши метаданные конфигурации 1С 7.7? → Файл 1Cv7.MD (бинарный)
· Какие операции должен поддерживать сервер? → Только чтение (Recommended)
· Какие объекты метаданных 1С 7.7 нужно поддержать в первую очередь? → Все основные
Спасибо! Ещё несколько уточнений, чтобы план был максимально точным.
User answered Claude's questions:
· Есть ли у вас пример файла 1Cv7.MD для тестирования, и где он находится? → Да, есть файл
· Какой MCP-клиент планируете использовать? → Оба
· Известна ли вам внутренняя структура файла 1Cv7.MD, или есть ли у вас ссылки/документация по формату? → Нет, нужно исследовать
Отлично, у меня достаточно информации. Давайте перейдём к планированию — мне нужно исследовать формат файла и существующие инструменты, прежде чем составить детальный план.
Entered plan mode
Claude is now exploring and designing an implementation approach.
Начинаю исследование. Сначала посмотрю, что уже есть в рабочей директории, и параллельно исследую формат 1Cv7.MD и MCP Python SDK.
Explore agents finished (ctrl+o to expand)
Explore project directory · 17 tool uses · 20.2k tokens
Done
Research 1Cv7.MD binary format · 20 tool uses · 28.0k tokens
Done
Research MCP Python SDK · 13 tool uses · 43.1k tokens
Done
У меня есть результаты по структуре проекта и MCP SDK. Теперь нужно исследовать формат 1Cv7.MD и спроектировать план.
Explore(Research 1Cv7.MD format)
Done (28 tool uses · 36.3k tokens · 1m 37s)
Хорошо, у меня есть все результаты исследований. Давайте заглянем в сам бинарный файл, чтобы понять формат контейнера, и затем составлю план.
Read 1 file (ctrl+o to expand)
Отлично! Теперь я вижу, что файл 1cv7.md — это OLE2 Compound Document (сигнатура D0 CF 11 E0). Внутри видны стримы: Root Entry, Report, WorkBook, Dialog Stream, MD Programm text, Container.Profile, MOXCEL. Текстовые
данные в формате вложенных скобок {} с кодировкой Windows-1251.
Это значит, что для парсинга можно использовать Python-библиотеку olefile. Теперь у меня достаточно информации для плана. Пишу его.
Updated plan
План написан. Подведу итоги ключевых решений:
Главное открытие: файл 1Cv7.MD — это OLE2 Compound Document (стандартный формат Microsoft). Это означает, что для чтения можно использовать готовую Python-библиотеку olefile, а не писать парсер бинарного формата с
нуля.
Архитектура (4 слоя):
1. OLE2-ридер — извлекает потоки из контейнера через olefile
2. Парсер скобок — разбирает текстовый формат {"key","value",{...}}
3. Парсер метаданных — строит модель конфигурации из дерева
4. MCP-сервер — FastMCP + 7 инструментов + ресурсы
Стек: Python + mcp SDK (FastMCP) + olefile + pydantic
Этапы 2-4 включают исследовательскую работу — нужно проанализировать содержимое стримов реального файла, чтобы понять точную структуру метаданных.
Ну и итоговое ТЗ Клода самому себе
MCP-сервер для метаданных конфигурации 1С 7.7
Контекст
Нужен MCP-сервер (Model Context Protocol) на Python, который парсит бинарный файл 1Cv7.MD конфигурации 1С:Предприятие 7.7 и предоставляет LLM-клиентам (Claude Code, Claude Desktop) удобный доступ к метаданным:
объектам, их реквизитам, модулям кода, формам.
Исходные данные:
- Файл 1Cv7.MD (~12 МБ) — OLE2 Compound Document (сигнатура D0 CF 11 E0)
- Внутри OLE2-контейнера стримы: MOXCEL, MD Programm text, Dialog Stream, Container.Profile, WorkBook, Report и др.
- Текстовые данные внутри стримов — формат вложенных фигурных скобок {"key","value",{...}} в кодировке Windows-1251
- Операции: только чтение (read-only)
- Клиенты: Claude Code CLI + Claude Desktop (транспорт stdio)
---
Структура проекта

---
Этапы реализации
Этап 1: Инициализация проекта
- Создать pyproject.toml с зависимостями:
- mcp>=1.7 — MCP SDK (FastMCP)
- olefile>=0.47 — чтение OLE2 Compound Documents
- pydantic>=2.0 — модели данных
- Создать структуру каталогов src/mcp_1c77/ и tests/
- Настроить .gitignore
Этап 2: OLE2-ридер (ole_reader.py)
Читает бинарный файл 1Cv7.MD через olefile и извлекает потоки (streams).
Ключевые функции:
- open_md_file(path) -> OleFileIO — открытие файла
- list_streams(ole) -> list[str] — список всех стримов в контейнере
- read_stream(ole, name) -> str — чтение стрима, декодирование из Windows-1251
- get_main_metadata_stream(ole) -> str — получение основного потока метаданных
Задача этого этапа — разобраться, какие именно стримы содержат описание объектов конфигурации (справочников, документов и т.д.), а какие — код модулей и описания форм. Для этого нужно прочитать и проанализировать все
стримы из тестового файла.
Этап 3: Парсер формата скобок (bracket_parser.py)
Метаданные 1С 7.7 хранятся в текстовом формате с вложенными фигурными скобками:
{"Dialogs",
{"Frame",
{"-11","0","400","204",...}},
{"Controls",
{"&Кнопка","BUTTON","1342177291",...}}}
Ключевые функции:
- parse(text: str) -> BracketNode — рекурсивный парсер текста в дерево узлов
- BracketNode — dataclass/модель: values: list[str], children: list[BracketNode]
Парсер должен корректно обрабатывать:
- Вложенные скобки {}
- Строки в кавычках "..." (с экранированием "" внутри)
- Значения без кавычек
- Кодировку Windows-1251
Этап 4: Парсер метаданных 1С (metadata.py)
Использует ole_reader и bracket_parser для построения высокоуровневой модели конфигурации.
Ключевые функции:
- load_configuration(path: str) -> Configuration — загрузка и парсинг файла
- Извлечение объектов по типам из дерева метаданных:
- Справочники (Catalogs)
- Документы (Documents)
- Журналы документов (Document Journals)
- Регистры (Registers)
- Перечисления (Enums)
- Отчёты (Reports)
- Обработки (Data Processors)
- План счетов (Chart of Accounts)
- Константы (Constants)
Важно: Точная структура дерева метаданных будет уточнена в процессе анализа реального файла. Этап включает исследовательскую работу — чтение и анализ стримов.
Этап 5: Pydantic-модели (models.py)
class Configuration # Корневой объект конфигурации
class MetadataObject # Базовый объект метаданных (имя, синоним, комментарий)
class Attribute # Реквизит объекта (имя, тип, длина)
class TabularSection # Табличная часть
class Catalog # Справочник (+ реквизиты, табличные части, формы)
class Document # Документ (+ реквизиты, табличные части, формы)
class Register # Регистр (измерения, ресурсы, реквизиты)
class Enum # Перечисление (значения)
class Report # Отчёт/Обработка
class ChartOfAccounts # План счетов
class DocumentJournal # Журнал документов
class Constant # Константа

Этап 7: Конфигурация клиентов
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"1c77-metadata": {
"command": "python",
"args": ["-m", "mcp_1c77.server"],
"env": {
"PYTHONPATH": "C:\\Projects\\77MCP\\src"
}
}
}
}
Claude Code: аналогичная конфигурация через claude mcp add.
Этап 8: Тестирование
- Unit-тесты для bracket_parser — парсинг разных структур скобок
- Unit-тесты для ole_reader — чтение стримов из тестового файла
- Integration-тесты для metadata — загрузка реального 1Cv7.MD
- Ручное тестирование MCP-сервера через Claude Code / Claude Desktop
---
Порядок работы
1. Этап 1 — Инициализация проекта (pyproject.toml, структура)
2. Этап 2 — OLE2-ридер + исследование стримов реального файла
3. Этап 3 — Парсер скобочного формата
4. Этап 4 + 5 — Парсер метаданных + модели (итеративно, на основе анализа файла)
5. Этап 6 — MCP-сервер и инструменты
6. Этап 7 — Конфигурация клиентов
7. Этап 8 — Тестирование
Особенность: Этапы 2-4 потребуют исследовательской работы — анализа содержимого стримов OLE2-файла, чтобы понять точную структуру метаданных. План будет уточняться по мере обнаружения деталей формата.
---
Зависимости
mcp>=1.7
olefile>=0.47
pydantic>=2.0
Верификация
1. python -m mcp_1c77.server — сервер запускается без ошибок
2. В Claude Code: claude mcp add 1c77-metadata -- python -m mcp_1c77.server и вызов open_configuration("C:\\Projects\\77MCP\\1cv7.md") — возвращает сводку
3. Вызов list_objects("Справочник") — возвращает список справочников
4. Вызов get_object("Справочник", "<имя>") — возвращает реквизиты
5. Вызов search("...") — находит объекты по имени
6. Все unit-тесты проходят: pytest tests/
Да, ТЗ на самом деле не итоговое, но об этом позже (это будет первый лайфхак)
Дальше я вспомнил, что неплохо бы всё это положить в докер контейнер + прикрутить веб-интерфейс загрузки MD-файла. С чем он тоже успешно, а главное быстро справился.

Ну а дальше самое интересное, я стал дорабатывать обработку по обмену.
И тут
Лайфхак 1 - Хотите доработать MCP? - просто погоняйте его в работе и спросите - "что ИИ не хватает в нём?" она рассказала всё про недостатки инструмента и составила подробное ТЗ для его улучшения.

О, после этих доработок (самой же моделью) работа закипела. Ещё бы, ведь теперь в MCP была даже валидация семёрочных запросов, на которых ИИ до этого спотыкался постоянно. Вы тоже можете дорабатывать mcp под себя. вот он
2.Пишем обработку обмена
Если интересно, то вот промпт по доработке обмена
Это обработка по выгрузке документов из 1С 77 Торговля и склад в 1С Бухгалтерия 8 по com
Список выгружаемых объектов заполняется в ЗаполнитьСписокОбъектов(Версия) Версия="ТиСБП3" и дале нужные типы документов выбераются на форме
выгрузка происходит в три этапа
1. Получение данных (контрагентов и т.п.) ПолучитьДанные_сервер();
2. Предворительный просмотр (опционально) ЗаполнитьПредварительныйПросмотр_Сервер();
В этих двух этапах запрос собирается функцией ПолучитьТекстЗапросаИзСКД из макета Запросы
3. Создать документы СоздатьДокументы_сервер()
Нужно проверь выгрузка каких из следующих документов не реализована в обработке и реализовать
АвансовыйОтчет
ВозвратОтПокупателя
Доверенность
ИнвентаризацияТМЦ
КомплектацияТМЦ
КорректировкаДолга
ОприходованиеТМЦ
ОтчетККМ
ПеремещениеТМЦ
ПКО
ПоступлениеДопРасходы
ПоступлениеПрочее
ПоступлениеТМЦ
ПоступлениеТМЦИмпорт
Реализация
РеализацияПрочее
РеализацияРозница
РКО
СписаниеТМЦ
СтрокаАвансОтчетаОплата
СтрокаАвансОтчетаПрочее
СтрокаАвансОтчетаТМЦ
Для понимания структуры 1С77 используй mcp
Если нужно понимание структуры базы бухгалтерии 8, то смотри папку C:\Projects\БП3_0_188_22
Задай необходимые вопросы и реализуй!
Как видно, я прошу его использовать MCP для 7.7, но не прошу использовать MCP для восьмёрки, а просто подкидываю модели каталог с файлами базы. И на это есть причина, если коротко - современные модели абсолютно спокойно разберутся с вашими метаданными быстрее и дешевле чем через MCP. А если ещё это и топовые модели, то и с синтаксисом, и с валидацией своего же кода. Об этом возможно следующая статья если будет интересно кому то.
Не буду выкладывать полный лог работы (она была не быстрой) Опять же если интересно, могу выложить в комментах.
В первой итерации ИИ потратил все мои токены понял структуру моей обработки и реализовал примерно половину задачи без моего участия.
И что самое классное и удивительное - он понял мою суперкостыльную суперкрутую (но недооценённую сообществом) систему заглушек
Сам добавил туда всё, что нужно и выставил нужные флаги у элементов схемы СКД.
Дальше бы мне остановиться и забрать выигрыш, но я хотел принципиально не написать ни одной строчки кода и в итоге сделал это! Иногда это было реально похоже на "я просто программист и хочу, чтобы программа работала"



В процессе я осознал ещё несколько лайфхаков
Лайфхак 2 - Если выясняется, что проблему быстрее и дешевле поправить самому, правим сами.
Вот на такую маленькую ошибку

Я потратил 6% лимита ОПуса (всё ещё из за этого страдаю)

Лайфхак 3 - Скажите модели, чтобы она записывала ошибки в память.

Особенно если это относится к архитектурным особенностям вашего продукта.
Почему я пишу тут писать не в Claude.MD или в Memory ? Потому, что я пользуюсь кучей разных моделей и там разные файлы, куда нужно это писать. Пусть сама выбирает.
Вот так это выглядит


Ну и это не противоречит Лайфхаку 2, т.к. можно записать в память, но не исправлять (пусть кожаный мешок трудится тоже)

Можно ещё добавить, чтобы он проверил, но не исправлял, так он лучше поймёт, как себе записать

Лайфхак 4 - Простые задачи делегируй дешёвым моделям

Вы не подумайте, GLM может и не с таким справиться (я в прошлых статьях её обозревал). просто не нашёл скрина. Вот эту GLM которую я купил за 3 доллара в месяц я никак не могу истратить...
Ну или вот Qwen (он вообще бесплатный) мне помогает в ci cd

Итог:
Обработка была дописана до работоспособного состояния без ручного кодирования, ну а дальше бесконечные доводки, доработки (куда же без них). Но в срок я всё равно не уложился (ну тут я уже сам виноват, озвучить нужно было в два раза больше, да и вайбкодил я по вечерам)
Много ещё разных лайфхаков я хочу показать и постараюсь сделать это в следующих статьях.
Прошу вас делиться вашими лайфхаками в комментариях
Критика приветствуется. Ведь мы живём в эпоху, когда нет ничего правильного. То, что сегодня эффективно, завтра уже устарело и никому не нужно.
Ссылка на ютуб, где я вайбкодил mcp (можно скачать, если тут не открывается)
Ещё раз ссылка на MCP сервер пользуйтесь на здоровье!
Предыдущие статьи:
Вайб-кодинг в 1С: как рефакторить код бесплатно с помощью VS Code и Roo Code
Вайб-кодинг в 1С: как заставить ИИ БЕСПЛАТНО писать новый код с помощью MCP-серверов
Вайб-кодинг в 1С: Подключаем локальные MCP-сервера к любой нейросети через MCP SuperAssistant
Спасибо за внимание и понимание, я не могу это держать в себе!