1C Odata MCP
About
MCP-сервер для 1С:Предприятие через OData: данные 1С на естественном языке из Claude. Чтение по умолчанию, запись по флагу. Работает с любой 1С, где включён OData — облако (Scloud/1cFresh), сервер с SQL или локальная файловая база.
Details
- Author
- evilbruce666
- Categories
- Productivity, Database, Other
Jump to
Setup
Install 1C Odata MCP in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/evilbruce666/1c-odata-mcp
Follow the installation instructions in the repository README, then restart your MCP client.
1c-odata-mcp — универсальный MCP-сервер для 1С:Предприятие через OData
🇬🇧In short:an MCP server that connects 1C:Enterprise to any MCP client (Claude, Cursor, VS Code, local models…) over the standard OData interface. Ask your accounting database in plain language (debtors, sales, taxes, cash flow) and get the number back; opt-in, preview-gated write. Read-only by default. Run withnpx -y 1c-odata-mcp. Works with any 1C where OData is published — cloud, SQL or local file base.
MCP-сервер (Model Context Protocol) для 1С:Предприятие через стандартный интерфейс OData.Позволяет работать с данными 1С на естественном языке излюбого MCP-клиента— Claude, Cursor, VS Code, JetBrains, локальные модели (Ollama, LM Studio): спрашивать про контрагентов, документы, остатки, дебиторку, продажи и движение денег — а при явном включении ещё и создавать/изменять справочники и документы, проводить, регистрировать оплаты.
Если вы искали,как подключить 1С к нейросети / ИИ, готовыйконнектор 1С ODataилиинтеграцию 1С с Claudeбез программирования на стороне 1С — это оно.
- 🔌 ЛюбойMCP-клиент: Claude Desktop и Claude Code, Cursor, VS Code (Continue/Cline), JetBrains — илокальные модели(Ollama, LM Studio)
- 🔐Данные остаются у вас— сервер это локальный процесс, ходит только в вашу базу; с локальной моделью данные вообще не покидают сеть
- 🏢 Несколько информационных баз и организаций (юрлиц) одновременно
- 🔒Только на чтение по умолчанию; запись — через двойной предохранитель и предпросмотр
- 🚀 Запуск одной командой:npx -y 1c-odata-mcp
- ⚙️ Ничего не ставится на стороне 1С — достаточно опубликованногоOData(без COM-соединения, без доступа к SQL)
📘 Установка, публикация OData и подключение к Claude — пошагово вdocs/CONNECTING.md.Здесь — про сам проект, возможности и ограничения.
Коннектор общается с 1Столько через OData. Если он включён — всё работает одинаково,как бы ни была развёрнута ваша база:
Тип хранилища (файловая или SQL) сам по себе сложностьне меняет— важно лишь, поднята ли веб-публикация OData.Без включённого OData коннектор работать не может(он не использует COM и не лезет в SQL напрямую).
➡️ Пошаговая инструкция под каждый вариант — вdocs/ODATA-SETUP.md. Адрес базы, учётка и подключение к Claude — вdocs/CONNECTING.md.
Сырой OData 1С — это сотни техническихEntitySetс кириллическими именами (Catalog_Контрагенты,Document_РеализацияТоваровУслуг,AccumulationRegister_ТоварыНаСкладах) и GUID-ключами. Работать с этим из чата невозможно, а писать свой код под каждый отчёт долго.
Сервер прячет всю технику за понятными инструментами. Вы спрашиваете обычным языком — ИИ сам выбирает нужный инструмент, ходит в OData вашей базы и возвращает готовый ответ. Для руководителя — быстрый срез по бизнесу, для бухгалтера — рутина создания документов под контролем.
- «Покажи дебиторку» → сальдо счёта 62 по контрагентам
- «История по контрагенту Ромашка» → все документы и взаиморасчёты
- «Остатки на складе» → количество и сумма по номенклатуре
- «Продажи за май», «движение денег за квартал» → обороты за период
- поиск контрагентов и документов, карточки объектов, карта базы
Действия (при включённой записи, всегда с предпросмотром и подтверждением):
- «Заведи контрагента ООО Ромашка, ИНН …, телефон, email, расчётный счёт, директора»
- «Выстави счёт покупателю на 3 шт по 1000» → документ-черновик
- «Создай поступление от поставщика и реализацию покупателю», «проведи документ» → проводки формирует сама 1С
- «Оформи возврат от покупателя», «перемещение между складами», «оприходование / списание / инвентаризацию»
- «Проведи оплату», «списание с расчётного счёта», «приходный / расходный кассовый ордер»
- «Выпиши счёт-фактуру на реализацию», «акт об оказании услуг»
- изменение реквизитов, строк документов; проведение и пометка на удаление
Читать можно документлюбоготипа (не только из списка выше) — «покажи возвраты за май», «найди перемещения» и т.п.
Полный перечень — в разделеИнструменты.
Ниже — Claude Desktop, но диалог выглядит так же в любом MCP-клиенте.
Вы: Кто из покупателей должен больше всего и на сколько? Claude: (вызывает read.analytics.get_debtors) Топ дебиторов на сегодня: 1. ООО «Ромашка» — 1 240 500 ₽ 2. ИП Иванов — 318 000 ₽ 3. ООО «Берёзка» — 94 050 ₽ Всего по счёту 62: 1 800 000 ₽. Вы: Заведи нового покупателя ООО «Восход», ИНН 7701234567, и выстави счёт на 10 шт по 2500. Claude: (dry-run) Будут созданы: • Контрагент «ООО Восход» (ИНН 7701234567) • Счёт покупателю на 25 000 ₽ (10 × 2500) Подтвердить создание? Вы: Да Claude: Готово: контрагент 00-000123, счёт № … (черновик, непроведён).
Впервые слышите про MCP?Это открытый протокол (Model Context Protocol), по которому ИИ-ассистент подключается к внешним инструментам. Здесь инструмент — ваша 1С: ассистент сам вызывает нужные функции и возвращает ответ. Ничего программировать не нужно — три шага ниже.
-
Опубликуйте ODataв 1С и добавьте нужные объекты в «Состав» (подробно —docs/CONNECTING.md; если OData ещё не включён —docs/ODATA-SETUP.md).
Пропишите серверв Claude Desktop (claude_desktop_config.json), подставив адрес и учётные данные:
{ "mcpServers": { "1c-odata": { "command": "npx", "args": ["-y", "1c-odata-mcp"], "env": { "ODATA_BASE_URL": "https://<сервер>/<база>/odata/standard.odata/", "ODATA_USERNAME": "...", "ODATA_PASSWORD": "..." } } } }
Перезапустите Claude Desktop(полностью) и спросите: «проверь соединение с 1С».
Полная настройка (адрес OData по площадкам, авторизация, запуск из исходников, Claude Code, диагностика ошибок) — вdocs/CONNECTING.md.
55 инструментов (21 чтение/аналитика + 34 записи). У всех есть необязательный параметрdatabase(какая база 1С — см.read.system.list_databases); у аналитических — ещё иorganization(фильтр по юрлицу — см.read.system.list_organizations).
Запись (✍️ требует включения, работает через dry-run →confirm=true):
Все инструменты проверены на живой базе1С:Бухгалтерия предприятия 3.0.
По умолчанию сервер работает только на чтение.Запись включается осознанно, черездва независимых предохранителя:
- Глобальный рубильникREAD_ONLY=false.
- Пер-базовый флагODATA_DB_<ИМЯ>_WRITABLE=true— базы без него остаются read-only даже при снятом глобальном. Так можно открыть запись в одну базу (напр. ИП) и защитить другие (напр. ООО).
- dry-run по умолчанию— инструмент сначала показывает, что создаст, и пишет только приconfirm=true;
- мягкое удаление—write.entity.mark_for_deletionставит пометку (как в 1С); жёсткогоDELETEнет;
- на стороне 1С в «Состав OData» включаются только нужные объекты, а у пользователя 1С должны быть права на запись.
Приватность данных.Сервер — локальный процесс на вашей машине: он ходит только в вашу базу 1С (по Basic-аутентификации) и отдаёт данные вашему MCP-клиенту. Никаких сторонних серверов проекта в цепочке нет. Если использоватьлокальную модель(Ollama, LM Studio), данные 1С вообще не покидают вашу сеть. Секреты — только из.env(или блокаenvконфига); пароль и заголовок авторизации в логи не попадают.
Как именно включить запись —docs/CONNECTING.md → Включение записи.
- Несколько отдельных баз(разные OData-адреса) — один сервер обслуживает все; имя базы передаётся параметромdatabase. Настройка в.env— см.docs/CONNECTING.md. Пример запроса: «сравни выручку buh и torg за май».
- Несколько организаций (юрлиц) в одной базе— отдельное подключение не нужно, работает фильтрorganization. Пример: «остатки по организации Ромашка».
- Нужен опубликованный OData.Сервер работает только через стандартный интерфейс OData 1С. Прямого доступа к SQL, COM-соединения или файлам сервера 1С он не использует и не требует.
- Объект должен быть в «Составе OData».Если объект не опубликован, инструмент вернёт вежливую подсказку с именем объекта и путём, куда его добавить. Публикуйте по мере необходимости.
- Целевая конфигурация — Бухгалтерия предприятия 3.0.Имена объектов автоопределяются из$metadata, но аналитика (дебиторка/остатки) и счета учёта документов рассчитаны на план счетов БП 3.0. На УТ/ERP и самописных конфигурациях чтение справочников/документов работает, а бухгалтерская аналитика может потребовать доработки.
- Документы создаются непроведёнными.Проводки формирует сама 1С при проведении (write.document.post_documentили вручную) — сервер не «рисует» проводки напрямую.
- Регламентные операции не создаются.Закрытие месяца, амортизацию, расчёт себестоимости/НДС генерирует обработка «Закрытие месяца» своими алгоритмами — через OData их не запустить. Читать (read.document.search_documents/read.document.get_document) можно.
- Оплата (write.money.create_payment).Документ создаётся и проводится, но бухгалтерские проводки Дт 51 Кт 62 формируются только если у банковского счёта организации настроен счёт учёта (51) — это настройка в 1С.
- ОГРН и прочие доп.реквизиты.Пишутся, только если в базе заведён соответствующий «дополнительный реквизит» (Администрирование → Дополнительные реквизиты). Иначе инструмент честно сообщает, что записать некуда.
- Адреспишется текстом-представлением (не структурированный ФИАС-адрес).
- Пагинация и лимиты.Чтобы не выгружать тысячи строк, действует размер страницы и защитный максимум (ODATA_PAGE_SIZE/ODATA_MAX_ROWS); большие выборки усекаются с пометкой.
Локальный процесс на Node.js, общается с клиентом по протоколу MCP черезstdio, а с 1С — по HTTP к OData (Basic-аутентификация). Стек:Node.js 20+,TypeScript(strict), официальный@modelcontextprotocol/sdk, нативныйfetch,zod(валидация),pino(логи в stderr),fast-xml-parser(разбор$metadata).
Карта объектов строится автоматически из$metadataбазы и кешируется; запросы собираются типобезопасным билдером. Несколько баз — у каждой свой клиент и свой кеш метаданных.
src/ index.ts точка входа context.ts реестр баз: Connection (клиент + кеш $metadata) + ServerContext mcp/server.ts инициализация MCP SDK, регистрация инструментов, stdio odata/ клиент, билдер запросов, пагинация, разбор $metadata, аналитика, справочные резолверы, обработка ошибок, проверка публикации tools/ инструменты: meta, counterparties, documents, registers, cashflow, sales, organization, write config/ конфигурация (.env, мультибаза) и маппинг имён/счетов types/ типы OData и доменные типы
- +vs%20в OData 1С.1С не декодирует+в пробел внутри$filter(отвечает 400), поэтому query-string собирается черезencodeURIComponent(пробел →%20), а неURLSearchParams.
- Счета учёта документовне подставляются автоматически через OData (это делает форма 1С при выборе номенклатуры) — сервер берёт их из регистра «Счета учёта номенклатуры», с откатом на стандартные коды плана счетов.
- Логи и stderr.stdoutзанят JSON-RPC, поэтому логи идут вstderr— но только в терминале. Под MCP-клиентом (когдаstdin— pipe) логи пишутся в файл<tmpdir>/1c-odata-mcp/server.log, чтобы не сломать клиентов, трактующих любой вывод вstderrкак фатальную ошибку. Вернуть логи вstderr:MCP_LOG_STDERR=1.
- Типизированные ответы.У всех 55 инструментов объявленoutputSchema— клиенты, поддерживающиеstructuredContent(не только текстовый JSON), могут типизировать ответ, не парсить текст.
- Имена инструментов.Трёхсегментныйdot-notation:<read|write>.<категория>.<имя>(напр.read.analytics.get_debtors,write.sales.create_shipment) — группирует инструменты по категории и сразу видно, чтение это или запись.
MCP-клиент «висит» / запрос отваливается по таймауту.Если зависают даже мелкие вызовы (read.system.health_check,read.system.list_databases) — это почти всегдазалипший процесс MCP(в Claude Desktop лечится полным перезапуском приложения, Cmd+Q и заново), а не база. Здоровыйread.system.health_checkотвечает за секунду.
Указываю другую базу, а она «недоступна» / отвечает только одна.Параметрdatabase— этоимяизread.system.list_databases(полеname, напр.ooo), а не «человеческое» название (label, напр. «ООО Ромашка»). Обращайтесь по имени.
Ответ пустой / «объектов 0».Не настроенСостав OData— добавьте нужные объекты в 1С (см.docs/ODATA-SETUP.mdиdocs/CONNECTING.md).
Работает медленно.Это латентностьвашей 1С / хостинга, не Claude: годовые выборки на «шумных» базах бывают 10–30 секунд. Спрашивайте более узким периодом (квартал/месяц) — ответ приходит за секунды.
Нужен ли доступ к SQL базы или COM?Нет. Сервер использует толькоOData— ничего не ставится внутри 1С, в SQL напрямую он не лезет.
Безопасно ли пускать ИИ к боевой базе?По умолчанию —только чтение. Запись включается двумя независимыми флагами и работает через предпросмотр (dry-run) с подтверждением. Физического удаления нет (только пометка). См.Безопасность.
Какая 1С подойдёт?Любая, где включён OData — облако (Scloud/1cFresh), сервер с SQL или локальная файловая база. Пошагово под каждый случай —docs/ODATA-SETUP.md.
MIT. Проект открытый — пользуйтесь, форкайте, присылайте issue и PR:https://github.com/evilbruce666/1c-odata-mcp.
⭐ Если коннектор оказался полезен —поставьте звезду на GitHubи расскажите вDiscussions, какие вопросы задаёте своей 1С. Это лучшая мотивация развивать проект.
Connect SAP Business One (SQL Server) to Claude AI Desktop via MCP. Query financials, inventory, sales, and purchasing with natural language.
A read-only MCP server for querying live Oracle SCM data, powered by the CData JDBC Driver.
A read-only MCP server by CData that enables LLMs to query live data from Sage 300.
A read-only MCP server for SAP BusinessObjects BI, powered by the CData JDBC Driver.
A read-only MCP server by CData that enables LLMs to query live data from Epicor Kinetic.
A read-only MCP server by CData that enables LLMs to query live data from Exact Online.
A read-only MCP server for Intacct, enabling LLMs to query live data using the CData JDBC Driver.
1C:Enterprise integration — metadata, BSL code search, queries, event log, syntax reference. One Go binary, zero dependencies.
A read-only MCP server for querying live SAP Fieldglass data, powered by the CData JDBC Driver.
Manage Apache Superset datasets, metrics, and SQL queries.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





