MCP-сервер для прямой работы с клиентом тестирования без менеджера тестирования
Overview
MCP-сервер для работы AI-агентов с интерфейсом . Позволяет агенту открывать формы, читать и изменять данные, работать с таблицами, записывать и воспроизводить сценарии действий. Сервер подключается напрямую к локальному или удалённому клиенту тестирования 1С по его сетевому протоколу. - Подключение к локальному или удалённому тест-клиенту по адресу и порту; порядок подключения определяется автоматически. - Запуск/останов тест-клиента 1С на компьютере MCP-сервера (файловая или серверная база, логин/пароль) с ожиданием готовности и авто-подключением — tc_session(action="launch_client"/"stop_client"). - Навигация по дереву UI: активное окно → форма → элементы (по иерархическим ключам). - Чтение: значения полей, вид/класс/заголовки элементов, таблицы, области табличного документа. - Действия: ввод текста/HTML, клики, флажки, выбор из списков/меню, работа с таблицами и деревом, календарь, гиперссылки, навигация по строкам и окнам. - click при включённом READBACK возвращает активное окно.
README
1C Testpilot
MCP-сервер для работы AI-агентов с интерфейсом 1С:Предприятия. Позволяет агенту открывать формы, читать и изменять данные, работать с таблицами, записывать и воспроизводить сценарии действий.
Сервер подключается напрямую к локальному или удалённому клиенту тестирования 1С по его сетевому протоколу.
Возможности
- Подключение к локальному или удалённому тест-клиенту по адресу и порту; порядок подключения определяется автоматически.
- Запуск/останов тест-клиента 1С на компьютере MCP-сервера (файловая или серверная база, логин/пароль) с ожиданием
готовности и авто-подключением —
tc_session(action="launch_client"/"stop_client"). - Навигация по дереву UI: активное окно → форма → элементы (по иерархическим ключам).
- Чтение: значения полей, вид/класс/заголовки элементов, таблицы, области табличного документа.
- Действия: ввод текста/HTML, клики, флажки, выбор из списков/меню, работа с таблицами и деревом, календарь, гиперссылки, навигация по строкам и окнам.
clickпри включённом READBACK возвращает активное окно.diagnostics=Trueдополнительно читает текущие сообщения окна; они могут относиться к предыдущим действиям.- Обзор формы —
get_context: элементы, состояния, значения полей и текущий ввод;save_as_snapshot=Trueсохраняет снимок для последующего сравнения без повторного чтения. - Сравнение состояния формы:
create_snapshotсохраняет снимок,compare_snapshotпоказывает изменения относительно текущего состояния.include_tables=Trueпри создании снимка или обзоре формы добавляет сравнение строк по порядку, без раскрытия дерева. Строки остаются выделенными; на 8.3 подготовка может вызвать обработчики активации строки. Список и удаление —list_snapshotsиdelete_snapshot. Снимки хранятся в памяти до удаления, вытеснения или остановки сервера. - Чтение нескольких полей —
read_fields; заполнение полей формы —set_fields, ячеек текущей строки таблицы —set_row_values; добавление заполненных строк —add_rows. При заполненииtextзадаёт текст поля,checked— нужное состояние флажка. Заполнение проверяет принятые значения и останавливается при проблеме, сохраняя результат выполненных шагов. read_documentчитает табличный документ целиком или прямоугольную область;find_textищет текст и возвращает адреса подходящих ячеек.- Поиск строк таблицы:
find_rowsотбирает прочитанные строки по тексту колонок с учётом текущих отборов и свёрнутых узлов. Это не поиск по всей базе. - Запись и воспроизведение сценариев (uilog): агент выполняет шаги → получает XML-сценарий → воспроизводит его. Два режима записи (см. переменные окружения).
- 10 инструментов по типам объектов клиента тестирования; конкретная операция выбирается
параметром
action(до 155 действий). Версионный гейтинг по целевой версии платформы.
Требования
- Windows или Linux для MCP-сервера. Платформа 1С (напр. 8.3.27 или 8.5.1) нужна на компьютере тест-клиента.
- Python 3.10+.
- Тест-клиент 1С — либо поднимается действием
tc_session(action="launch_client"), либо запускается заранее:1cv8.exe ENTERPRISE /F"" /TESTCLIENT -TPort
Установка
Установка из репозитория GitHub. Нужны Git и pipx.
pipx install git+https://github.com/ROCTUP/1c-testpilot.git
pipx ensurepath
После установки перезапустите терминал и MCP-клиент, чтобы они увидели команду 1c-testpilot.
Зависимости устанавливаются автоматически в отдельное окружение.
Если репозиторий уже скачан, установите проект из его корневой папки:
pipx install .
Подключение к MCP-клиенту
Выберите способ подключения: stdio — MCP-клиент сам запускает 1C Testpilot; Streamable HTTP — вы запускаете сервер отдельно, а MCP-клиент подключается по URL.
Через stdio
Команда 1c-testpilot должна быть доступна в PATH MCP-клиента. Если клиент её не находит,
укажите в command полный путь к исполняемому файлу.
Claude Desktop (документация).
Откройте Settings → Developer → Edit Config и добавьте сервер в mcpServers:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json. - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json.
{
"mcpServers": {
"1c-testpilot": {
"command": "1c-testpilot",
"env": { "TC1C_TRANSPORT": "stdio" }
}
}
}
После изменения файла полностью перезапустите Claude Desktop.
Claude Code (документация):
claude mcp add --env TC1C_TRANSPORT=stdio --transport stdio --scope user 1c-testpilot -- 1c-testpilot
--scope user делает сервер доступным во всех проектах. Состояние подключения можно
посмотреть командой /mcp внутри Claude Code.
Codex (документация).
Добавьте в ~/.codex/config.toml:
[mcp_servers.1c-testpilot]
command = "1c-testpilot"
env = { TC1C_TRANSPORT = "stdio" }
Или добавьте сервер через CLI:
codex mcp add 1c-testpilot --env TC1C_TRANSPORT=stdio -- 1c-testpilot
Состояние подключения — /mcp в Codex. Для длительных операций, например запуска 1С,
можно добавить tool_timeout_sec = 120 в секцию сервера; стандартный таймаут Codex — 60 секунд.
Без установки пакета можно указать напрямую: "command": "python", "args": ["/app/server.py"].
Через Streamable HTTP
Запустите 1C Testpilot в отдельном терминале.
Windows, PowerShell:
$env:TC1C_TRANSPORT = "streamable-http"
$env:TC1C_HTTP_HOST = "127.0.0.1"
$env:TC1C_HTTP_PORT = "6004"
$env:TC1C_HTTP_PATH = "/mcp"
1c-testpilot
Linux, Bash:
TC1C_TRANSPORT=streamable-http TC1C_HTTP_HOST=127.0.0.1 TC1C_HTTP_PORT=6004 TC1C_HTTP_PATH=/mcp 1c-testpilot
Пока сервер работает, он принимает MCP-подключения по адресу http://127.0.0.1:6004/mcp.
Настройки TC1C_* задаются в окружении этого процесса сервера.
Claude Code:
claude mcp add --transport http --scope user 1c-testpilot http://127.0.0.1:6004/mcp
Эта настройка работает и в локальных сессиях вкладки Code приложения Claude Desktop: они используют MCP-конфигурацию Claude Code. Подключение к HTTP-серверу выполняется напрямую. Документация Claude Code Desktop.
Если сервер с таким именем уже добавлен через stdio, сначала удалите прежнюю запись
командой claude mcp remove --scope user 1c-testpilot.
Codex — используйте URL в секции сервера в ~/.codex/config.toml:
[mcp_servers.1c-testpilot]
url = "http://127.0.0.1:6004/mcp"
При переходе со stdio замените прежние command, args и env на url.
Для новой записи можно использовать CLI:
codex mcp add 1c-testpilot --url http://127.0.0.1:6004/mcp
Для подключения с другого компьютера задайте TC1C_HTTP_HOST равным сетевому IP компьютера
с 1C Testpilot и укажите этот IP в URL клиента. Порт 6004 должен быть доступен из сети клиента.
Встроенной HTTP-аутентификации в 1C Testpilot нет; доступ к серверу ограничивается вашей сетью
или внешним прокси с аутентификацией и HTTPS.
Также поддерживается прежний транспорт SSE: TC1C_TRANSPORT=sse, адрес подключения
http://127.0.0.1:6004/sse. У него стандартные пути /sse и /messages/;
TC1C_HTTP_PATH применяется только к Streamable HTTP.
Подключение к клиенту тестирования 1С
Адрес, порт и версия платформы 1С передаются инструменту tc_session при выполнении
действия connect. Эти параметры относятся к клиенту тестирования 1С и не задаются
в конфигурации подключения MCP. Запуск клиента выполняется действием launch_client.
- При локальном подключении
hostможно опустить: по умолчанию127.0.0.1. - Удалённый клиент запустите с
/TESTCLIENT -TPort; его порт должен быть доступен с компьютера MCP-сервера. launch_clientиstop_clientработают на компьютере MCP-сервера. На Linux для обычного запуска клиента нужен графический сеанс; для подключения к уже запущенному — не нужен.- На Windows 10+ и Linux параметр
desktop="isolated"вlaunch_clientзапускает 1С на отдельном рабочем столе, не мешая пользователю. По умолчанию —desktop="default", обычный запуск. Изолированные клиенты поддерживают скриншоты и завершаются вместе с MCP-сервером. На Linux требуется Xvfb (sudo apt install xvfbв Ubuntu/Debian); графический сеанс не нужен. - Можно работать с несколькими базами или одной базой под разными пользователями.
Подключение выбирается через
connection_id, список —tc_session(action="list_connections").
Именованные профили
Настройки запуска и подключения можно сохранить в YAML-файле
(примеры всех допустимых параметров), указав его путь в TC1C_PROFILES_FILE.
tc_session(action="list_profiles") показывает доступные профили;
launch_client(profile="ut_admin") запускает клиент, connect(profile="remote_demo")
подключается к работающему. Оба действия относятся к tc_session.
Явно переданные параметры переопределяют профиль. Имя использованного профиля видно в list_connections.
Для запуска профиль содержит base и параметры launch_client, для подключения — port
и необязательные host, version. Для серверной базы укажите server: true и base: 'server1c\Trade'.
description задаёт описание. Пароль — строка в password
или значение переменной окружения с именем из password_env; одновременно их задавать нельзя.
Пароли в YAML заключайте в кавычки. Значения паролей не выводятся в списке профилей и журнале;
при запуске 1С пароль передаётся в командной строке процесса.
Файл перечитывается при обращении. Относительные пути base и exe в профиле считаются от его папки.
wait задаёт ожидание запуска в секундах: по умолчанию 60, например wait: 120 для долгой загрузки базы.
Переменные окружения
Задаются в окружении процесса сервера или в файле по образцу .env.example:
1c-testpilot --env-file "D:/Testpilot/.env"
При запуске из MCP-клиента добавьте аргументы к команде:
{
"mcpServers": {
"1c-testpilot": {
"command": "1c-testpilot",
"args": ["--env-file", "D:/Testpilot/.env"]
}
}
}
Путь к файлу — абсолютный или относительно рабочего каталога сервера. Переменные окружения
имеют приоритет над значениями файла. Без --env-file файл .env не загружается;
если указанный файл недоступен, сервер сообщает об ошибке и не запускается.
-
TC1C_PROFILES_FILE— путь к YAML-файлу профилей, абсолютный или от рабочего каталога сервера. По умолчанию не задан. -
TC1C_CONNECTION_LIMIT— максимум зарегистрированных подключений, по умолчанию16. Отключённый клиент, запущенный сервером, учитывается доstop_client. Лимит ссылокTC1C_REF_LIMITприменяется отдельно к каждому подключению. -
TC1C_RECORD_MODE— режим записи сценариев:synth(по умолчанию — сервер собирает сценарий из вызовов инструментов, покрывая все действия агента) илиnative(журнал тест-клиента; составное чтение таблицы сервер дополняет командами снятия выделения). -
TC_PLATFORM_VERSION— целевая версия платформы (напр.8.3.24.1548): действия, чей метод в этой версии отсутствует, не публикуются; версия используется в рукопожатии. -
TC1C_RESPONSE_FORMAT— формат ответов:toon(по умолчанию) илиjson(режим совместимости). -
TC1C_COMPACT_REFS— адресация элементов:id(по умолчанию),prefixилиoff.idработает с TOON и JSON;prefixсокращает адреса только в TOON. Прежниеtrueиfalseпринимаются как синонимыprefixиoff. -
TC1C_REF_LIMIT— максимум элементов в реестре одного подключения, по умолчанию100000; положительное целое число. Ограничение действует во всех режимах адресации. -
TC1C_VERIFY_TARGET— проверка существования объекта перед действием,true(по умолчанию) илиfalse. -
TC1C_READBACK— чтение состояния до и после действия,true(по умолчанию) илиfalse. -
TC1C_SNAPSHOT_LIMIT— максимум сохранённых состояний форм на сервере, по умолчанию100. -
TC1C_SNAPSHOT_MEMORY_MB— лимит хранилища состояний в МиБ, по умолчанию128. При переполнении вытесняются давно не использовавшиеся снимки. -
TC1C_SCREENSHOTS— снимки окна 1С,true(по умолчанию) илиfalse. Приfalseдействиеget_screenshotи его параметры не публикуются. -
TC1C_LOGGING— журнал MCP-вызовов, по умолчаниюtrue; приfalseдействия управления журналом скрыты. -
TC1C_LOG_AUTO_START— начинать журнал автоматически, по умолчаниюfalse. -
TC1C_LOG_DIR— каталог журналов на сервере, по умолчаниюlogs. -
TC1C_LOG_SCREENSHOTS— разрешить снимки в журнале, по умолчаниюtrue; независимо отTC1C_SCREENSHOTS. -
TC1C_LOG_MAX_MB— общий лимит журналов в МиБ, по умолчанию1024. Старые завершённые журналы удаляются; если места недостаточно, запись приостанавливается.
Формат ответов
Формат ответов — TOON (компактный, по умолчанию) или JSON.
Выбор: TC1C_RESPONSE_FORMAT.
Режим адресации элементов задаётся через TC1C_COMPACT_REFS:
id— короткие ссылкиref, передаваемые в действия без изменений; по умолчанию.prefix— сокращённые адреса со словарями в ответе TOON; в JSON адреса полные.off— полные адресаkeyиhandle.
Инструменты
Сервер публикует 10 инструментов — по типам объектов клиента тестирования; операция выбирается
параметром action, до 155 действий. Список действий с методами 1С, применимыми типами и
параметрами вынесен в отдельный документ:
docs/TOOLS.md.
Действие get_screenshot в tc_app возвращает изображение окна 1С со всплывающими списками,
не переключая фокус. MCP-сервер и клиент должны работать на одном компьютере:
Windows или Linux с X11/XWayland. На Linux нужен доступ к сеансу клиента через DISPLAY и XAUTHORITY;
захват приложений, работающих напрямую через Wayland, не поддерживается. Свёрнутое окно нужно открыть.
scale задаёт масштаб 25–100%, grid включает координатную сетку, region=[x,y,width,height]
ограничивает область в пикселях исходного снимка. Неполный снимок сопровождается предупреждением.
В сценарий снимки не записываются.
Журнал работы агента
В tc_session: start_logging начинает запись, get_logging_status показывает состояние,
stop_logging завершает её и возвращает пути к JSONL-журналу и HTML-отчёту.
Параметр screenshot_mode: off — без снимков, actions — после изменений и при ошибках,
all — после каждого вызова. По умолчанию actions, либо off, если снимки журнала запрещены.
PNG сохраняются рядом с отчётом и не добавляются в ответы агенту. Для снимков нужен локальный клиент.
Журнал каждого подключения независим; отключение клиента завершает запись. Повторный start_logging
сохраняет текущий журнал. Записываются MCP-вызовы; run_scenario пока представлен одним вызовом.
Запись и воспроизведение сценариев
tc_scenario(action="record_start") → выполнить действия → tc_scenario(action="record_finish") возвращает
XML-сценарий (uilog) и lost_actions (действия, не попавшие в сценарий; при непустом списке
сценарий неполный). Воспроизведение — tc_scenario(action="run_scenario", uilog=...).
Режим записи — TC1C_RECORD_MODE.
Ограничения
- Протокол закрытый и может отличаться между версиями платформы. Локальное подключение проверено на Windows с 8.3.27 и 8.5.1; удалённое — к Windows с 8.3.27 и к Ubuntu с 8.3.27. Способ подключения выбирается автоматически по ответу тест-клиента.
Install
This server does not publish a one-line install command.
Open the repository installation guideConfiguration
{
"mcpServers": {
"1c-testpilot": {
"command": "1c-testpilot",
"env": { "TC1C_TRANSPORT": "stdio" }
}
}
}