$git clone https://github.com/vladimir-kharin/1c_mcpИнструмент для создания MCP (Model Context Protocol) серверов на платформе 1С:Предприятие. Позволяет разрабатывать расширения 1С, которые предоставляют данные и функциональность базы для AI-ассистентов (чаты с языковыми моделями, Claude Desktop, Cursor и других AI-клиентов).
| 1 | # Разработка MCP-серверов в 1С |
| 2 | |
| 3 | Инструмент для создания MCP (Model Context Protocol) серверов на платформе 1С:Предприятие. Позволяет разрабатывать расширения 1С, которые предоставляют данные и функциональность базы для AI-ассистентов (чаты с языковыми моделями, Claude Desktop, Cursor и других AI-клиентов). |
| 4 | |
| 5 | Подробное видео о проекте и его возможностях: |
| 6 | [VK Видео](https://vkvideo.ru/video-219359576_456239024) | [Youtube](https://youtu.be/ZEla85JsfCo) | [Rutube](https://rutube.ru/video/ba1c64432d1a5b6cfd2335b83bf47071/) |
| 7 | |
| 8 | Проект содержит готовое расширение для 1С, которое берет на себя всю техническую рутину протокола MCP. Вам остается только реализовать бизнес-логику ваших инструментов. Инструменты для работы с метаданными конфигурации 1С доступны "из коробки". |
| 9 | |
| 10 | ## Как это работает: Концепция MCP |
| 11 | |
| 12 | Качество ответа языковой модели (LLM) напрямую зависит от качества предоставленного ей контекста. Подготовка такого контекста вручную может быть трудоемкой. |
| 13 | |
| 14 | **Model Context Protocol (MCP)** — это открытый стандарт, который позволяет модели самой запрашивать необходимые данные через специальные "инструменты" (tools), предоставляемые вашим сервером. Таким образом, контекст для решения задачи собирается автоматически. |
| 15 | |
| 16 | ## Компоненты проекта |
| 17 | |
| 18 | 1. **`src/1c_ext/`** - **Расширение 1С:** Ядро решения. Реализует MCP-сервер и инструменты. |
| 19 | 2. **`src/py_server/`** - **Python-прокси:** Опциональный, но рекомендуемый компонент для решения инфраструктурных задач. |
| 20 | |
| 21 | ## Быстрый старт |
| 22 | |
| 23 | ### Шаг 1: Установка расширения 1С |
| 24 | |
| 25 | Подключите готовое, собранное расширение из каталога `build/MCP_Сервер.cfe` в вашу конфигурацию. |
| 26 | |
| 27 | ### Шаг 2: Публикация HTTP-сервиса |
| 28 | |
| 29 | Опубликуйте на веб-сервере HTTP-сервис `mcp_APIBackend`, который находится в расширении. |
| 30 | |
| 31 | > **Важно:** Регистр имени базы в URL должен точно совпадать с именем публикации (например, `base`, а не `Base`). Несовпадение регистра приводит к редиректам, которые превращают POST-запросы в GET. |
| 32 | |
| 33 | > **Важно:** Для прямого подключения AI-клиента к 1С (без прокси) требуется публиковать базу без необходимости аутентификации ("вшить" реквизиты доступа к базе в default.vrd), что является небезопасным. Решение этой проблемы описано в разделе "Варианты подключения". |
| 34 | |
| 35 | ### Шаг 3: Подключение AI-клиента |
| 36 | |
| 37 | Подключите MCP-клиент (например, Cursor) к опубликованному HTTP-сервису (`.../ваша_база/hs/mcp/`). Примеры настроек для разных клиентов находятся в папке [`mcp_client_settings/`](./mcp_client_settings/). |
| 38 | |
| 39 | ## Варианты подключения |
| 40 | |
| 41 | ### Вариант 1: Прямое подключение к 1С |
| 42 | |
| 43 | - **Как работает:** `AI-клиент ←→ HTTP-сервис 1С` |
| 44 | - **Ограничения:** |
| 45 | - Требует публикации HTTP-сервиса без аутентификации 1С. |
| 46 | - Невозможно подключить клиенты, требующие транспорт `stdio`. |
| 47 | - Ограниченная совместимость с некоторыми HTTP-клиентами из-за нюансов протокола. |
| 48 | |
| 49 | ### Вариант 2: Подключение через Python-прокси (Рекомендуется) |
| 50 | |
| 51 | - **Как работает:** `AI-клиент ←→ MCP-прокси (Python) ←→ HTTP-сервис 1С` |
| 52 | - **Зачем он нужен?** Прокси решает ключевые инфраструктурные проблемы: |
| 53 | - **Проблема транспорта:** Позволяет подключать клиенты, работающие по `stdio`. |
| 54 | - **Проблема аутентификации:** Реализует протокол `OAuth2` (стандартный способ аутентификации в MCP) и передает авторизацию в 1С через `Basic Auth`. Это позволяет **не отключать** аутентификацию 1С на веб-сервере. Прокси поддерживает два режима: работа от имени одного фиксированного пользователя или "проброс" аутентификации каждого пользователя под его собственными учетными данными. |
| 55 | |
| 56 | - **Настройка и запуск прокси:** |
| 57 | - Детальная инструкция по требованиям, установке, настройке и запуску находится в [документации Python-прокси](./src/py_server/README.md). |
| 58 | |
| 59 | ### Вариант 3: Запуск прокси в Docker |
| 60 | |
| 61 | Для изолированного запуска прокси-сервера в контейнере: |
| 62 | |
| 63 | ```bash |
| 64 | # Скопируйте пример конфигурации |
| 65 | cp .env.docker.example .env |
| 66 | |
| 67 | # Отредактируйте .env (укажите URL, логин, пароль) |
| 68 | # Запустите контейнер |
| 69 | docker-compose up -d |
| 70 | ``` |