MCP-сервер для 1С: семантический поиск, CRUD через OData, обогащение объектов по EnterpriseData схеме
Project description
tab-ai-mcp (tab_mcp)
MCP-коннектор к 1С:Предприятие — компонент архитектуры ТАБ:Библиотека искусственного интеллекта.
Архитектура
Claude / MCP-клиент
│
▼
tab_mcp ──── OData ────► База 1С (+ БИИ)
│
└─── HTTP ──────────► tab_ss (семантический поиск, прогнозирование, аномалии)
│
└──────────────► tab_ca (мультиагент LLM)
│
└──► LLM провайдеры
(openai, deepseek, gigachat…)
- tab_mcp — этот сервер. MCP-коннектор к 1С и к tab_ss
- tab_ss — сервис семантического поиска и аналитики (on-prem или облако)
- tab_ca — мультиагент LLM, внутри tab_ss
- БИИ — ТАБ:Библиотека ИИ, расширение 1С:Предприятие
Возможности
- CRUD объектов 1С — чтение, создание, изменение, удаление через OData REST API
- Семантический поиск — найти "молоко пастеризованное" без точного совпадения строк (через tab_ss)
- Обогащение объектов — максимально полный объект по стандарту EnterpriseData (XDTO, 822 типа)
- Прогнозирование — динамика продаж и других временных рядов (через tab_ss)
- Проверка документов — наличие подписи и печати на сканах (через tab_ss)
Установка
# Рекомендуется: uvx (не требует установки Python окружения)
uvx tab-ai-mcp
# Или через pip
pip install tab-ai-mcp
tab-ai-mcp
Для
uvxнуженuv:curl -LsSf https://astral.sh/uv/install.sh | sh
Настройка Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"1c": {
"command": "uvx",
"args": ["tab-ai-mcp"],
"env": {
"ONEC_BASE_URL": "http://ваш-сервер/имя-базы",
"ONEC_USERNAME": "ваш-логин",
"ONEC_PASSWORD": "ваш-пароль",
"ONEC_ORGANIZATION": "имя-организации-в-tab_ss",
"TAB_SS_API_KEY": "ваш-ключ-tab_ss"
}
}
}
}
ONEC_ORGANIZATION— ключевой параметр. Каждая 1С база с БИИ имеет свой идентификатор организации в tab_ss. После его задания все инструменты семантического поиска работают без явного указания организации.
Переменные окружения
| Переменная | Описание | По умолчанию |
|---|---|---|
ONEC_BASE_URL |
URL базы 1С, например http://server/myapp |
— (обязательно) |
ONEC_USERNAME |
Логин пользователя 1С | — |
ONEC_PASSWORD |
Пароль пользователя 1С | — |
ONEC_ORGANIZATION |
Идентификатор организации в tab_ss (разрез данных) | — (рекомендуется) |
TAB_SS_URL |
URL сервиса tab_ss (on-prem или облако) | облако Railway |
TAB_SS_API_KEY |
Ключ доступа к tab_ss | встроенный ключ |
Обратная совместимость: принимаются также
TAB_AI_BASE_URLиTAB_AI_API_KEY.
Если
ONEC_ORGANIZATIONне задан, его нужно передавать в каждом вызовеsync_1c_to_tab_ssиsemantic_search_1c.
Требование к 1С: опубликованный OData сервис. Конфигуратор → Администрирование → Публикация на веб-сервере → "Опубликовать стандартный интерфейс OData"
Инструменты (MCP Tools)
OData → База 1С
| Инструмент | Описание |
|---|---|
list_1c_types() |
Список всех типов объектов базы (каталоги, документы, регистры) |
query_1c(entity_type, filter, select, top, skip) |
OData запрос с фильтрами |
get_1c_object(entity_type, ref_id) |
Объект по GUID с XDTO обогащением |
create_1c_object(entity_type, data) |
Создать объект |
update_1c_object(entity_type, ref_id, data) |
Обновить объект |
delete_1c_object(entity_type, ref_id) |
Удалить объект |
get_xdto_schema(type_name) |
Схема полей типа по стандарту EnterpriseData |
list_xdto_covered_types() |
Типы, покрытые XDTO обогащением |
tab_ss — семантический поиск и аналитика
| Инструмент | Описание |
|---|---|
sync_1c_to_tab_ss(entity_type, organization, object_type_label) |
Синхронизировать данные 1С → tab_ss |
semantic_search_1c(organization, object_type_label, search_text) |
Поиск по смыслу |
semantic_search_multi_property(organization, object_type_label, search_properties) |
Поиск по нескольким свойствам |
set_tab_ss_provider_token(provider, token) |
Настроить токен LLM провайдера в tab_ss |
forecast_1c_data(table_data, months_count) |
Прогноз временных рядов |
verify_document_signature(document_base64) |
Проверка подписи и печати |
Примеры
"Создай счёт на оплату на молоко"
Claude выполнит автоматически:
sync_1c_to_tab_ss("Catalog_Номенклатура", "org1", "Номенклатура")— индексирует справочникsemantic_search_1c("org1", "Номенклатура", "молоко")→ находит GUID товараget_xdto_schema("Document_СчетПокупателю")→ узнаёт обязательные поляcreate_1c_object("Document_СчетПокупателю", {...})→ создаёт документ
"Покажи данные контрагента Ромашка"
query_1c("Catalog_Контрагенты", filter="contains(Наименование,'Ромашка')")
→ получаем Ref_Key
get_1c_object("Catalog_Контрагенты", ref_id)
→ полный объект со всеми полями EnterpriseData
OData фильтры
"Наименование eq 'Молоко'"
"contains(Наименование,'Мол')"
"ДатаДокумента ge datetime'2024-01-01T00:00:00'"
"Контрагент_Key eq guid'12345678-1234-1234-1234-123456789012'"
XDTO обогащение
При вызове get_1c_object сервер:
- Получает объект из 1С через OData (только заполненные поля)
- Ищет тип в схеме EnterpriseData (822 типа)
- Добавляет все стандартные поля с
nullдля незаполненных - Возвращает объект с
_xdto_schema— описанием всех полей
Например: OData вернул 5 полей → после обогащения объект содержит 43 поля.
Связь с ТАБ:БИИ
tab_mcp — часть экосистемы ТАБ:Библиотека искусственного интеллекта.
Семантический поиск реализован через тот же backend (tab_ss), что и функции
НайтиПоСмыслуОбъектСУказаннымиСвойствамиАсинх и СпрогнозируйДинамикуИзмененияДанных
внутри самой библиотеки 1С.
Лицензия
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tab_ai_mcp-0.1.1.tar.gz.
File metadata
- Download URL: tab_ai_mcp-0.1.1.tar.gz
- Upload date:
- Size: 83.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8092a3caadf8fe55258348fc268dedbee42f8d78fee3713ff80fd6fd570f430f
|
|
| MD5 |
736532298bcf6f1b3da85dfd73bf6b0a
|
|
| BLAKE2b-256 |
1ed9eed4762c2a23c9b9e29dca2df39ec61e782ff30c14105518ea4f02917cee
|
File details
Details for the file tab_ai_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: tab_ai_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 87.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06a31c22513fa9d5c66f962a5cba8015c1f87c0257fb929e6460a5699a3b288d
|
|
| MD5 |
2bff57f8b51907e24e474e6db6728d11
|
|
| BLAKE2b-256 |
d728fabf406e7316728bf5799a3e46db0695c338d3818c929f729c358187de8c
|