Лёгкое Windows-приложение для безопасного доступа AI-агентов к данным 1С через MCP-протокол.
Вес: ~8 МБ · Запуск: мгновенный · Зависимости: нет
Trusted Gateway — посредник между AI-агентом и вашей базой 1С:
AI-агент ──MCP (HTTP)──▶ Trusted Gateway ──MCP/HTTP──▶ 1С
│
маскирует ФИО,
серийники, коды
Агент никогда не видит реальные имена, ИНН, КПП, серийные номера. Вместо этого он получает псевдонимы (Контрагент_a3f2b1c0d8). Суммы, количества, даты, перечисления, счета передаются открыто — агент может анализировать цифры, но не деанонимизировать людей.
Текст анализа от агента приложение расшифровывает локально — пользователь видит реальные имена, агент — нет.
- Windows 10/11 (x64)
- 1С:Предприятие 8.3 с установленным расширением MCP_Сервер.cfe (из последнего релиза)
Для сборки из исходников дополнительно нужен Go 1.21+.
- Скачайте последний релиз со страницы Releases — там есть
TrustedGateway.exeиMCP_Сервер.cfe - Установите расширение
MCP_Сервер.cfeв вашу базу 1С - Убедитесь, что HTTP-сервис
hs/mcpопубликован и доступен - Запустите
TrustedGateway.exe - Откроется браузер с интерфейсом на
http://127.0.0.1:8767 - Введите URL вашего MCP-сервера и токен доступа, нажмите Подключиться
Шлюз работает как MCP-сервер (Streamable HTTP) на http://127.0.0.1:8767/mcp.
claude mcp add --transport http --scope user trusted-gateway http://localhost:8767/mcpСоздайте .cursor/mcp.json (или .mcp.json в корне проекта):
{
"mcpServers": {
"trusted-gateway": {
"type": "http",
"url": "http://localhost:8767/mcp"
}
}
}| Инструмент | Описание |
|---|---|
gateway_status |
Статус подключения к 1С, наличие сессии |
gateway_query |
Выполнить запрос к 1С (данные автоматически маскируются с учётом типов колонок) |
gateway_execute_code |
Выполнить произвольный код 1С (результат маскируется с рекурсивным обходом вложенных структур и массивов) |
gateway_suggest_fields |
Агент предлагает открыть поля для анализа — пользователь одобряет одним кликом |
gateway_apply_analysis |
Отправить анализ в шлюз для расшифровки псевдонимов |
gateway_pull_note |
Забрать одобренные пользователем данные (ручной режим) |
gateway_clear_session |
Очистить текущую сессию |
Все инструкции для агента встроены в описания инструментов — дополнительная настройка не требуется.
| Вкладка | Назначение |
|---|---|
| MCP | Подключение к серверу, ввод запроса (слева), ответ (справа). Редактор с подсветкой 1С-синтаксиса (Ace Editor) |
| Результат | Таблица с цветовыми индикаторами колонок: 🔒 замаскированные (оранжевые), открытые (зелёные), шифр (акцентные). Кнопка «Отправить агенту», фильтры, быстрое открытие поля по клику на замок/заголовок колонки |
| Анализ данных от агента | Расшифрованный анализ от агента |
| Настройки | URL, токен, белый список полей с поддержкой шаблонов *, политика типов, авто-режим (зашифрованы через Windows DPAPI) |
Режимы работы:
- Авто-режим — данные отправляются агенту сразу после выполнения запроса
- Ручной режим — пользователь проверяет данные на вкладке «Результат» и нажимает «Отправить агенту»
Предложение полей от агента:
Агент может запросить открытие полей через gateway_suggest_fields. Поля появляются как кликабельные метки — пользователь выбирает нужные и нажимает «Подтвердить». Браузерное уведомление и мигание кнопки в панели задач сигнализируют, что агент ждёт одобрения.
Белый список полей:
Белый список поддерживает точные имена и простые шаблоны с *: например, Регистратор*, *Дата, Сумма*. На вкладке «Результат» замаскированное поле можно сразу открыть кликом по замку или тексту заголовка колонки — без перехода в контекстное меню.
Выделение ячеек: как в Excel — клик, перетаскивание, Shift+клик, Ctrl+C.
Шлюз использует многослойную защиту:
Шлюз получает схему колонок из 1С (типы метаданных) и применяет политику по типам:
| Тип колонки | Действие по умолчанию |
|---|---|
Перечисление.*, ПланСчетов.*, ПланВидовХарактеристик.* |
Открыто |
Системные перечисления платформы без точки (ВидДвиженияНакопления, ВидСчета и т.п.) |
Открыто |
Примитивы: Число, Дата, Булево, УникальныйИдентификатор |
Открыто |
Классификаторы: Справочник.Валюты, СтавкиНДС, СтраныМира, БанкиРФ |
Открыто |
Документ.* |
Открыто |
Справочник.*, Задача.*, БизнесПроцесс.* |
Маскируется |
Строка, ХранилищеЗначения, ДвоичныеДанные |
Маскируется |
| Составные типы с обрезанием (>10 вариантов) | Решаются по видимым типам: без видимых опасных типов открываются |
| Колонка с несколькими типами, где хоть один — опасный | Маскируется |
Дополнительно exact-поля Номер и Дата по умолчанию открыты как типовые реквизиты документов; совпадение только точное, поэтому НомерПаспорта/ДатаРождения не раскрываются.
Политика настраивается в разделе «Настройки → Политика типов»: можно добавлять свои типы/префиксы, переводить их в «открыто» или «принудительно маскировать».
Шлюз перед отправкой в 1С вычищает ПРЕДСТАВЛЕНИЕ(X) / ПРЕДСТАВЛЕНИЕССЫЛКИ(X) / PRESENTATION(X) / REFPRESENTATION(X), подставляя на их место аргумент. Это позволяет сохранить тип колонки (ссылка, а не строка) и применить маскировку по типам вместо безусловной маскировки для типа Строка.
Вложенные скобки, строковые литералы, комментарии — уважаются. Нормализация псевдонимов (КАК/AS) выравнивает имя колонки под исходное поле.
Применяется там, где схема типов недоступна (старые версии 1С MCP без IncludeSchema):
| Тип значения | Действие |
|---|---|
Пустые значения, null |
Не маскируются |
Числа Go (int, float64, bool) |
Не маскируются |
| Числовые строки ≤15 знаков без ведущих нулей | Не маскируются (суммы) |
Числовые строки с ведущими нулями (00000142) |
Маскируются (серийники) |
| Числовые строки >15 знаков | Маскируются (длинные коды) |
| ИНН, КПП, СНИЛС, ОГРН, БИК (по имени поля) | Всегда маскируются |
| Вложенные объекты и массивы | Рекурсивный обход — маскируются на любой глубине |
| Все остальные строки | Маскируются |
allow_plain поля (белый список по имени) |
Никогда не маскируются |
Опция «Не шифровать числовые значения» — отключает маскировку для всех числовых полей (цены, суммы, количества).
Псевдонимы детерминированы: одно значение всегда даёт один и тот же псевдоним в рамках сессии (соль = HMAC от серверного токена).
- Настройки (URL, токен) зашифрованы через Windows DPAPI — только ваш пользователь может расшифровать
- Маскировка принудительна — MCP-сервер всегда возвращает маскированный режим, агент не может запросить иное
- Нормализация псевдонимов —
КАК/ASв запросе приводится к имени исходного поля, чтобы агент не смог обойти список разрешённых полей переименованием - Только localhost — HTTP-сервер слушает только
127.0.0.1 - Таймаут запросов — 300 секунд, лимит строк 5 000, лимит размера ответа 10 МБ
- Защита от перебора — rate-limit на частые запросы, детекция brute-force по количеству малорезультативных запросов
git clone https://github.com/alonehobo/1c-trusted-gateway.git
cd 1c-trusted-gateway
# Установить rsrc для встраивания иконки (только один раз)
go install github.com/akavel/rsrc@latest
rsrc -ico Icon.ico -o rsrc.syso
# Запустить тесты
go test ./...
# Собрать без консольного окна
go build -ldflags "-H windowsgui -s -w" -o TrustedGateway.exe .trusted-gateway-go/
├── main.go # Точка входа, загрузка настроек, запуск сервера
├── tray_windows.go # Системный трей Windows (Shell_NotifyIcon, balloon, flash)
├── web.go # TrustedWebApp: состояние приложения, сессии
├── http_handlers.go # HTTP-сервер, все API-эндпоинты, SSE, маршрутизация
├── mcp_server.go # MCP-сервер для агента (Streamable HTTP, JSON-RPC 2.0)
├── mcp_client.go # HTTP-клиент для 1С MCP (Streamable HTTP, SSE)
├── service.go # Runtime: выполнение запросов, парсинг схемы, bundle
├── privacy.go # Маскировка табличных данных, генерация псевдонимов
├── privacy_test.go # Тесты маскировки по типам колонок
├── type_policy.go # Политика маскирования по типам колонок 1С
├── type_policy_test.go # Тесты политики типов
├── query_normalize.go # Strip ПРЕДСТАВЛЕНИЕ(), нормализация КАК/AS
├── query_normalize_test.go
├── ner.go # NER-маскировка свободного текста (execute_code)
├── logs.go # Буфер логов, экспорт в UI
├── config.go # Структуры конфигурации, загрузка из файла
├── credential_store.go # Шифрование настроек через Windows DPAPI
├── helpers.go # Утилиты: парсинг JSON-полей, CSV, санитизация
├── ui.go # Встраивание HTML/CSS/JS через go:embed
├── ui.html # HTML-каркас интерфейса
├── ui.css # Стили интерфейса
├── ui_core.js # Состояние приложения, SSE, общая отрисовка
├── ui_results.js # Вкладка «Результат», таблица, фильтры, контекстное меню
├── ui_actions.js # Действия UI: whitelist/remask/exclude/approve
├── ui_settings.js # Вкладка «Настройки», таблицы полей и политики типов
├── ui_onboarding.js # Онбординг и guided tour
├── ui_editor.js # Ace Editor и автодополнение 1С-запросов
├── Icon.ico # Иконка приложения
├── app.rc # Ресурсный файл для встраивания иконки в EXE
├── cmd/
│ └── dump-settings/ # CLI-утилита для дампа settings.bin
└── releases/
└── MCP_Сервер.cfe # Расширение 1С для MCP-сервиса
- ROCTUP — за проект
1c-mcp-toolkit.