# Bootstrap Runbook: Полный пайплайн запуска с нуля (новая машина) Дата: 2026-03-23 Статус: рабочий контур подтвержден (`adopt with restrictions`) Цель: поднять наш текущий live read-only bridge к 1С с нуля на новой Windows-машине. ## 1. Что в итоге должно работать После выполнения шагов должны одновременно работать: 1. Python proxy (`onec_mcp_toolkit_proxy`) на `http://127.0.0.1:6003` 2. 1С:Предприятие с открытой обработкой `MCP_Toolkit.epf` в режиме `Прокси` 3. Успешные read-only вызовы: - `get_metadata` - `execute_query` - `get_link_of_object` - `get_object_by_link` Важно: это live request/response мост, не оффлайн-реплика. ## 2. Архитектура (минимум) ```text Клиент/ассистент -> HTTP -> Python Proxy (6003) -> /1c/poll,/1c/result -> MCP_Toolkit.epf -> База 1С ``` ## 3. Что нужно на новой машине 1. Windows (рекомендуемо 64-bit). 2. Установленная платформа 1С (в нашем контуре: `8.3.27.1936`). 3. Тестовая база 1С (БП 2.0) и рабочий пользователь с read-only правами. 4. Git. 5. Miniconda. 6. Доступ к репозиторию `ROCTUP/1c-mcp-toolkit`. ## 4. Рекомендованная структура папок ```text X:\1C\ NDC_1C\ docs\ external\ 1c-mcp-toolkit\ ``` Если диска `X:` нет, можно использовать любой путь, но держать единую структуру. ## 5. Установка и подготовка окружения ### 5.1 Клонировать toolkit ```powershell git clone https://github.com/ROCTUP/1c-mcp-toolkit X:\1C\NDC_1C\external\1c-mcp-toolkit ``` ### 5.2 Проверить `.epf` артефакты ```powershell Get-ChildItem X:\1C\NDC_1C\external\1c-mcp-toolkit\build ``` Ожидаемые файлы: - `MCP_Toolkit.epf` (x64) - `MCP_Toolkit_x86.epf` (x86 fallback) ### 5.3 Создать изолированную conda-среду ```powershell & 'C:\Users\\miniconda3\Scripts\conda.exe' create -y -n ndc_1c_toolkit python=3.11 ``` ### 5.4 Установить зависимости proxy ```powershell & 'C:\Users\\miniconda3\envs\ndc_1c_toolkit\python.exe' -m pip install --upgrade pip & 'C:\Users\\miniconda3\envs\ndc_1c_toolkit\python.exe' -m pip install -r X:\1C\NDC_1C\external\1c-mcp-toolkit\requirements.txt ``` ## 6. Запуск proxy (read-only профиль) Запускать из PowerShell: ```powershell $env:PORT='6003' $env:TIMEOUT='180' $env:ALLOW_DANGEROUS_WITH_APPROVAL='false' $env:ANONYMIZATION_ENABLED='false' $env:RESPONSE_FORMAT='json' $env:LOG_LEVEL='INFO' & 'C:\Users\\miniconda3\envs\ndc_1c_toolkit\python.exe' -m onec_mcp_toolkit_proxy ``` Проверка: ```powershell Invoke-WebRequest http://127.0.0.1:6003/health -UseBasicParsing ``` Ожидаемо: HTTP 200 и `status=healthy`. ## 7. Запуск 1С и обработчика ### 7.1 Открыть 1С:Предприятие Открывать в **режиме Предприятия** (не Конфигуратор). Если UI обработки не появляется в обычном режиме, запускать в управляемом приложении. ### 7.2 Открыть внешнюю обработку `Файл -> Открыть -> X:\1C\NDC_1C\external\1c-mcp-toolkit\build\MCP_Toolkit.epf` ### 7.3 Настроить форму MCP Toolkit 1. Режим: `Прокси` 2. Адрес сервера: `http://127.0.0.1:6003` 3. Идентификатор канала: `default` (или ваш фиксированный channel) 4. Нажать `Подключиться` Ожидаемо в логе формы: - `Подключение к серверу: http://127.0.0.1:6003` - `Успешное подключение к серверу` ## 8. Smoke-проверка после подключения ### 8.1 Metadata ```powershell Invoke-WebRequest "http://127.0.0.1:6003/api/get_metadata?channel=default&meta_type=Документ&limit=20" -UseBasicParsing ``` Ожидаемо: `success=true`. ### 8.2 Query ```powershell $body = @{ query = "ВЫБРАТЬ ПЕРВЫЕ 1 1 КАК Test"; limit = 1 } | ConvertTo-Json Invoke-WebRequest "http://127.0.0.1:6003/api/execute_query?channel=default" ` -Method POST -ContentType "application/json; charset=utf-8" -Body $body -UseBasicParsing ``` Ожидаемо: `success=true`, `Test=1`. ### 8.3 Object link flow 1. Получить `object_description` (например, из `execute_query`). 2. Вызвать `get_link_of_object`. 3. Передать ссылку в `get_object_by_link`. Ожидаемо: объект документа читается. ## 9. Ежедневный рабочий цикл (операторский) ### Старт дня 1. Запустить proxy. 2. Проверить `/health`. 3. Запустить 1С и открыть `MCP_Toolkit.epf`. 4. Проверить статус `Подключено`. 5. Выполнить быстрый test query. ### Стоп дня 1. Отключиться в форме MCP Toolkit. 2. Закрыть 1С. 3. Остановить proxy (Ctrl+C/Stop-Process). ## 10. Траблшутинг (частые проблемы) ### 10.1 Ошибка `Не могу установить соединение` в форме 1С Причина: proxy не запущен или не слушает `6003`. Проверка: ```powershell Invoke-WebRequest http://127.0.0.1:6003/health -UseBasicParsing ``` ### 10.2 `timeout waiting for 1C response` на API Причина: нет активного `.epf` в том же `channel`, форма закрыта, либо канал не совпадает. ### 10.3 `UI не показывается` при открытии `.epf` Обработка имеет управляемые формы. Запускать в 1С:Предприятии (управляемый режим), не в Конфигураторе для рабочего контура. ### 10.4 Кодировка ссылки из `get_link_of_object` выглядит “кракозябрами” Нюанс текущего ответа proxy; вызов рабочий, ссылку можно нормализовать при постобработке. ## 11. Жёсткие правила безопасности 1. Только read-only операции. 2. Не использовать `execute_code`. 3. Не выставлять `6003` во внешний интернет. 4. Держать `ALLOW_DANGEROUS_WITH_APPROVAL=false`. 5. Работать под отдельным техпользователем с минимальными правами чтения. ## 12. Что это даёт и чего не даёт ### Даёт - Живой доступ к текущим данным 1С по запросу. - Runtime metadata + deep read semantics (документы, проводки, субконто, сальдо). ### Не даёт - Мгновенный “весь срез компании” в одном запросе для тяжёлой аналитики. - Автоматическую фоновой репликацию без отдельного слоя витрин/снэпшотов. ## 13. Рекомендованный next step после bootstrap 1. Добавить one-click старт скрипт (`Start-NDC1CBridge.ps1`). 2. Добавить one-click smoke скрипт (`Test-NDC1CBridge.ps1`). 3. Поднять плановую аналитическую витрину (например, 15/60 минут) для тяжёлых задач. --- Итог bootstrap: на новой машине поднимаем контур за последовательность `Proxy -> MCP_Toolkit.epf -> Подключение -> Smoke` и получаем рабочий live read-only мост к 1С на текущем этапе проекта. _________________________________________________ ЗАПУСК ПРКСИ ПЕРЕД ПОДКЛЮЮЧЕНИЕМ К ТУЛКИТ 1С _________________________________________________ Запускай так в PowerShell: $env:PORT='6003' $env:TIMEOUT='180' $env:ALLOW_DANGEROUS_WITH_APPROVAL='false' $env:ANONYMIZATION_ENABLED='false' $env:RESPONSE_FORMAT='json' $env:LOG_LEVEL='INFO' & 'C:\Users\DCTOUCH\miniconda3\envs\ndc_1c_toolkit\python.exe' -m onec_mcp_toolkit_proxy Проверка, что поднялся: Invoke-WebRequest http://127.0.0.1:6003/health -UseBasicParsing Должен вернуть status":"healthy". Остановить: в том же окне Ctrl + C.