Content
# 1C MCP Toolkit
**Система интеграции AI-агентов с базами данных 1С:Предприятие через MCP и REST API**
## 📋 Описание
1C MCP Toolkit — это решение для подключения AI-агентов (Kiro, Claude и др.) к базам данных 1С:Предприятие. Поддерживает два варианта работы: **встроенный сервер** (HTTP-сервер запускается прямо внутри обработки 1С, без Python) и **прокси** (Python-сервер с long polling).
**Ключевые преимущества:**
- ✅ Не требуется изменение конфигурации 1C
- ✅ Не нужна публикация 1C сервера
- ✅ Не использует COM-соединение
- ✅ Совместимость с 1С:Предприятие 8.2.13+ / 8.3.25
- ✅ **Встроенный сервер**: Python не нужен — HTTP-сервер запускается прямо в 1С
- ✅ Поддержка Docker (режим Прокси)
## 🏗️ Архитектура
### Вариант 1: Встроенный сервер
HTTP-сервер запускается прямо внутри обработки 1С. Python не нужен.
```
┌─────────────────┐ MCP / REST API ┌──────────────────┐
│ AI Агент │ ◄───────────────► │ 1С (.epf) │
│ (Kiro, Claude) │ /mcp /api/* │ Встр. HTTP-сервер│
└─────────────────┘ └──────────────────┘
│
▼
┌───────────────┐
│ База данных 1С│
└───────────────┘
```
### Вариант 2: Прокси-режим
```
┌─────────────────┐ MCP / REST API ┌─────────────────┐
│ AI Агент │ ◄─────────────────────────► │ │
│ (Kiro, Claude) │ /mcp /api/* │ Python Proxy │
└─────────────────┘ │ Server │
│ │
┌─────────────────┐ HTTP Long Polling │ (FastAPI + │
│ 1С Обработка │ ◄─────────────────────────► │ MCP SDK) │
│ (внешняя .epf) │ /1c/poll, /1c/result │ │
└─────────────────┘ └─────────────────┘
│ │
▼ │
┌─────────────────┐ ┌───────┴───────┐
│ База данных 1С │ │ Docker │
│ (8.2.13/8.3.25) │ │ Container │
└─────────────────┘ └───────────────┘
```
## 🚀 Быстрый старт
### Вариант 0: Встроенный сервер (без Python, рекомендуется)
1. Откройте `build/MCP_Toolkit.epf` в 1С:Предприятие
2. В форме выберите режим **«Встроенный сервер»**
3. Нажмите «Запустить сервер»
4. Настройте AI-агент на `http://<ip-компьютера-1С>:6003/mcp`
> **macOS:** встроенный сервер работает и на macOS нативно (без Python). Нужно
> собрать нативные компоненты как universal (x86_64 + arm64) — см.
> [`native_components/BUILDING_MACOS.md`](native_components/BUILDING_MACOS.md).
> Сборку автоматизирует CI (`.github/workflows/build-macos.yml`), Mac для этого
> иметь не обязательно.
### Вариант 1: Docker Hub (режим Прокси)
Запуск прокси-сервера из готового образа на Docker Hub:
```bash
docker run -d -p 6003:6003 -e ALLOW_DANGEROUS_WITH_APPROVAL=true --restart unless-stopped --name 1c-mcp-toolkit-proxy roctup/1c-mcp-toolkit-proxy
```
### Вариант 2: Docker Compose
```bash
# Клонировать репозиторий
git clone <repository-url>
cd 1c-mcp-toolkit
# Запустить через Docker Compose
docker-compose up -d
```
### Вариант 3: Прямой запуск Python
```bash
# Создать виртуальное окружение
python -m venv .venv
.venv\Scripts\activate # Windows
# или
source .venv/bin/activate # Linux/Mac
# Установить зависимости
pip install -r requirements.txt
# Запустить сервер
python -m onec_mcp_toolkit_proxy
```
Сервер запустится по адресу `http://localhost:6003`
## 📦 Установка обработки 1C
1. Скачайте готовую обработку из папки build **[MCP_Toolkit.epf](./build/MCP_Toolkit.epf)**
2. Откройте обработку в 1C (Файл → Открыть)
3. В настройках обработки укажите:
- URL прокси-сервера: `http://localhost:6003`
- (опционально) ID канала для изоляции команд
4. Нажмите кнопку "Подключиться"
## ⚙️ Настройка AI-агента
### Kiro IDE
Добавьте в файл `.kiro/settings/mcp.json`:
```json
{
"mcpServers": {
"onec-mcp-toolkit-proxy": {
"url": "http://localhost:6003/mcp",
"transport": "http",
"type": "streamable-http",
"disabled": false,
"autoApprove": ["execute_query", "get_metadata"]
}
}
}
```
### Claude Desktop
> **Важно:** `claude_desktop_config.json` поддерживает только stdio-серверы
> (поля `command`/`args`). Формат с `url`/`transport` (как в секции Kiro IDE выше)
> Claude Desktop **не понимает** — такая запись игнорируется. Для подключения к
> HTTP-серверу используйте один из вариантов ниже.
#### Вариант 1. Мост mcp-remote (требуется Node.js)
Откройте конфигурационный файл:
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
Добавьте конфигурацию:
```json
{
"mcpServers": {
"onec-mcp-toolkit-proxy": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://127.0.0.1:6003/mcp",
"--allow-http",
"--transport", "http-only"
]
}
}
}
```
Перезапустите приложение.
> Используйте `127.0.0.1`, а не `localhost` — так надёжнее с точки зрения
> IPv4/IPv6-биндинга. Флаг `--allow-http` разрешает подключение по http без TLS.
#### Вариант 2. Custom Connector (без Node.js)
На платных планах HTTP-сервер можно добавить через UI:
**Settings → Connectors → Add custom connector**, указав URL `http://localhost:6003/mcp`.
### 🔐 Аутентификация по токену (встроенный сервер)
По умолчанию встроенный сервер не требует аутентификации. Чтобы её включить, задайте на форме в поле **«Токен доступа»** значение (или нажмите «Сгенерировать»), затем добавьте в конфигурацию клиента заголовок `Authorization: Bearer <token>`:
```json
{
"mcpServers": {
"onec-mcp-toolkit": {
"url": "http://127.0.0.1:6003/mcp",
"transport": "http",
"headers": { "Authorization": "Bearer ВАШ_ТОКЕН" }
}
}
}
```
Для Claude Desktop через `mcp-remote` — аргумент `--header "Authorization: Bearer ВАШ_ТОКЕН"`. Пустой токен = аутентификация выключена. Подробнее (границы безопасности, ротация, legacy SSE) — в [README_FULL.md](README_FULL.md#аутентификация-по-токену-bearer).
## 🛠️ Доступные MCP-инструменты
| Инструмент | Описание |
|-----------|----------|
| **execute_query** | Выполнение запросов на языке запросов 1C |
| **execute_code** | Выполнение произвольного кода 1C |
| **get_metadata** | Получение информации о структуре метаданных базы |
| **get_event_log** | Получение записей из журнала регистрации |
| **get_object_by_link** | Получение объекта по навигационной ссылке |
| **get_link_of_object** | Генерация навигационной ссылки на объект |
| **find_references_to_object** | Поиск всех ссылок на объект |
| **get_access_rights** | Получение прав доступа к объектам метаданных |
| **get_bsl_syntax_help** | Справочник по встроенному языку BSL: поиск функций, методов, типов и языковых конструкций |
| **get_screenshot** | Снимок активного окна 1С и возврат в виде base64 PNG (только Windows) |
| **submit_for_deanonymization** | Отправка финального ответа для деанонимизации (только при включённой анонимизации) |
| **restart_1c_session** | Перезапуск текущей сессии 1С (требуется после обновления конфигурации; новая сессия стартует автоматически) |
| **close_1c_session** | Закрытие текущей сессии 1С с возвратом команды запуска новой (для операций, требующих эксклюзивного доступа к базе) |
## 🌐 REST API (альтернатива MCP)
Для AI-агентов, не поддерживающих протокол MCP, или при предпочтении стандартных HTTP-запросов, прокси предоставляет REST API с той же функциональностью.
**Базовый URL:** `http://localhost:6003/api/`
### Доступные эндпоинты
| Эндпоинт | Метод | Описание |
|----------|-------|----------|
| `/api/execute_query` | POST | Выполнение запросов 1C |
| `/api/execute_code` | POST | Выполнение кода 1C |
| `/api/get_metadata` | GET/POST | Получение метаданных |
| `/api/get_event_log` | POST | Журнал регистрации |
| `/api/get_object_by_link` | POST | Получить объект по ссылке |
| `/api/get_link_of_object` | POST | Генерация ссылки на объект |
| `/api/find_references_to_object` | POST | Поиск ссылок на объект |
| `/api/get_access_rights` | POST | Получение прав доступа |
| `/api/get_bsl_syntax_help` | POST | Справочник по языку BSL |
| `/api/submit_for_deanonymization` | POST | Отправить текст для деанонимизации (только при включённой анонимизации) |
| `/api/restart_1c_session` | POST | Перезапустить сессию 1С |
| `/api/close_1c_session` | POST | Закрыть сессию и получить команду запуска новой |
### Формат ответов
Большинство ответов следуют единой структуре:
**Успех:** `{"success": true, "data": <результат>}`
**Ошибка:** `{"success": false, "error": "Описание ошибки"}`
**Исключение:** `submit_for_deanonymization` возвращает `{"received": true}` при успехе (без поля `data`).
Подробные примеры использования REST API доступны в полной документации.
## 🕵️ Анонимизация данных
Инструмент поддерживает автоматическую анонимизацию персональных и конфиденциальных данных. Реальные значения заменяются стабильными токенами (`[ORG-00001]`, `[PER-00001]`, `[INN-00001]` и т.д.). Агент может передавать токены обратно в запросы — сервер автоматически восстанавливает реальные значения.
**Режим «Встроенный сервер»:**
- Настройка через форму обработки 1С: дерево полей метаданных, словарь из справочников 1С, регулярные выражения
**Режим «Прокси»:**
- Управляется переменными окружения (`ANONYMIZATION_ENABLED=true`)
- Дополнительно: SpaCy NER, изоляция токенов по каналам, умная анонимизация псевдонимов колонок
Подробная документация: **[ANONYMIZATION.md](./ANONYMIZATION.md)**
## 🔒 Безопасность
- Опасные операции блокируются настраиваемым черным списком
- Используйте `ALLOW_DANGEROUS_WITH_APPROVAL=true` для режима подтверждения
- Рекомендуется настроить `autoApprove` только для безопасных инструментов
## 📝 Изоляция каналов
При подключении нескольких клиентов 1C к одному прокси-серверу можно изолировать потоки команд с помощью ID каналов.
### Использование с MCP
```json
{
"mcpServers": {
"onec-dev": {
"url": "http://localhost:6003/mcp?channel=dev-environment",
"transport": "http",
"type": "streamable-http"
},
"onec-prod": {
"url": "http://localhost:6003/mcp?channel=prod-environment",
"transport": "http",
"type": "streamable-http"
}
}
}
```
### Использование с REST API
Все REST-эндпоинты поддерживают изоляцию каналов через параметр запроса `?channel=<id>`:
```bash
# Канал для разработки
curl -X POST "http://localhost:6003/api/execute_query?channel=dev-environment" \
-H "Content-Type: application/json" \
-d '{"query": "ВЫБРАТЬ 1"}'
# Канал для продакшена
curl -X POST "http://localhost:6003/api/execute_query?channel=prod-environment" \
-H "Content-Type: application/json" \
-d '{"query": "ВЫБРАТЬ 1"}'
```
**Важно:** Укажите тот же ID канала в настройках обработки 1C для соответствующего окружения.
## 🎓 Skills для AI-агентов
При использовании **REST API** рекомендуется использовать готовые skills, которые содержат детальные инструкции по работе с 1C MCP Toolkit.
### Доступные skills
📁 **Папка:** `skills/`
| Skill | Описание | Рекомендуется для |
|-------|----------|-------------------|
| **calling-1c-rest-api-via-curl** | Полное руководство по использованию REST API через curl: все эндпоинты, форматы запросов/ответов, примеры workflow, обработка ошибок | REST API клиенты, автоматизация, скрипты |
| **composing-1c-queries** | Правила составления корректных запросов на языке запросов 1C: синтаксис, оптимизация, виртуальные таблицы, временные таблицы, JOIN'ы | Работа с данными 1C через execute_query |
### Как использовать
Skills содержат подробные инструкции и reference-документацию для AI-агентов. Каждый skill включает:
- Описание возможностей
- Примеры использования
- Лучшие практики
- Типичные паттерны работы
Для AI-агентов, использующих REST API, skill `calling-1c-rest-api-via-curl` является основным руководством и содержит все необходимые детали для эффективной работы с API.
## 📚 Документация
Подробная документация доступна в **[README_FULL](./README_FULL.md)**
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
markitdown
Python tool for converting files and office documents to Markdown.
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.
yahoo-finance-mcp
Yahoo Finance MCP Server provides detailed financial data and stock information.
codemogger
Codemogger is a code indexing library and MCP server for AI coding agents
AI-Kline
AI-Kline is a Python-based tool for A-share analysis, combining technical...