MCP сервер для работы с 1С через протокол OData
Project description
MCP сервер для работы с OData 1C
MCP (Model Context Protocol) сервер на Python для интеграции с системой 1С через OData API. Предоставляет инструменты для работы с данными, метаданными и документами 1С с автоматическим сохранением в JSON файлы.
Возможности
- 📊 Получение метаданных - структура метаобъектов 1С с сохранением в JSON
- 🔍 Запросы к данным - получение данных из 1С с сохранением в JSON файлы
- 🗂️ Локальная работа - фильтрация и анализ JSON данных без обращения к 1С
- 📝 CRUD операции - создание, редактирование, удаление документов
- 🏪 Специальные документы - создание документов РТиУ с бизнес-правилами
- 🔐 Аутентификация - Basic Auth для подключения к 1С
- 💾 JSON архитектура - все данные сохраняются в структурированные JSON файлы
- 📋 Логирование - структурированные логи через loguru
Особенности JSON-архитектуры
- Экономия контекста LLM - функции возвращают только статусную информацию
- Быстрая локальная работа - анализ данных без повторных запросов к 1С
- Персистентность данных - все загруженные данные сохраняются между сессиями
- Прозрачность - все данные доступны в читаемом JSON формате
Быстрый старт
1. Установка зависимостей
uv sync
2. Конфигурация
Скопируйте config.example в .env и укажите параметры подключения:
cp config.example .env
Отредактируйте .env:
ODATA_BASE_URL=http://your-1c-server/Base/odata/standard.odata/
ODATA_USERNAME=your_username
ODATA_PASSWORD=your_password
3. Запуск сервера
uv run main.py
4. Подключение к серверу
"connect_1c_mcp": {
"url": "http://localhost:8000/sse", // url сервера
"transport": "sse"
},
Доступные инструменты
Получение данных из 1С
fetch_1c_metadata()- получить и сохранить структуру метаобъектов в JSONfetch_1c_data()- получить данные из 1С и сохранить в JSON файлget_1c_entity()- получить конкретную сущность по ключу
CRUD операции с сущностями
create_1c_entity()- создать новую сущность (справочник, документ и др.)update_1c_entity()- обновить существующую сущность в 1Сdelete_1c_document()- удалить документ из 1Сcreate_rtu_document()- создать документ РТиУ на основании другого документа
Устаревшие функции (используйте новые)
→ используйтеcreate_1c_document()create_1c_entity()→ используйтеupdate_1c_document()update_1c_entity()
Работа с локальными JSON данными
list_cached_data()- получить список всех сохраненных JSON файловget_file_structure()- получить структуру JSON файла (поля, типы, примеры)filter_local_data()- фильтровать и сортировать данные из локального JSON файлаcount_local_data()- подсчитать записи в локальном JSON файле
Управление кэшем
get_cache_info()- получить информацию о состоянии кэшаclear_metadata_cache()- очистить кэш метаданныхclear_data_cache()- очистить все сохраненные данные
Рекомендуемый рабочий процесс
fetch_1c_metadata()- получить структуру метаобъектов 1Сfetch_1c_data()- загрузить нужные данные в JSON файлlist_cached_data()- посмотреть список сохраненных файловget_file_structure()- изучить структуру файла с даннымиfilter_local_data()с сортировкой илиcount_local_data()- анализировать локальные данные
Новые возможности локального анализа
Сортировка данных
# Получить первые 10 записей, отсортированных по полю "Description"
filter_local_data(
file_name="Catalog_Products_abc123.json",
sort_by="Description",
sort_desc=False, # По возрастанию
limit=10
)
Анализ структуры файла
# Получить информацию о полях, типах и примерах значений
get_file_structure(file_name="Catalog_Products_abc123.json")
# Можно использовать короткое имя - система найдет файл автоматически
get_file_structure(file_name="Catalog_Products")
Создание и обновление сущностей
Создание элемента справочника
create_1c_entity(
entity_set="Catalog_Products",
data={
"Code": "PROD001",
"Description": "Новый товар",
"Price": 1000.00
}
)
Создание документа
create_1c_entity(
entity_set="Document_SalesOrder",
data={
"Number": "SO-001",
"Organization_Key": "guid'...'",
"Counterparty_Key": "guid'...'"
# Дата будет добавлена автоматически
}
)
Обновление сущности
update_1c_entity(
entity_set="Catalog_Products",
entity_key="guid'...'",
data={
"Description": "Обновленное наименование",
"Price": 1200.00
}
)
Умный поиск файлов
Все функции работы с локальными данными поддерживают умный поиск файлов:
Варианты поиска:
- По точному имени:
Catalog_Products_abc123.json - С расширением .json:
Catalog_Products.json(найдетCatalog_Products_abc123.json) - По началу имени:
Catalog_Products(найдетCatalog_Products_abc123.json) - По частичному совпадению:
Products(найдет файл, содержащий "Products" в имени)
Правила поиска:
- Сначала ищется точное совпадение имени файла
- Если не найдено и запрос содержит
.json, расширение убирается из поиска - Ищутся файлы, начинающиеся с указанного имени
- Если не найдено, ищутся файлы, содержащие указанное имя
- При множественных совпадениях выбирается самый новый файл
Архитектура
Подробное описание архитектуры проекта см. в architecture.md.
Требования
- Python 3.12+
- Доступ к OData API 1С
- Настроенная аутентификация в 1С
Поддержка и развитие
Проект активно развивается. Вопросы и предложения по улучшению приветствуются через Issues.
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 mcp_1c-0.1.0.1.tar.gz.
File metadata
- Download URL: mcp_1c-0.1.0.1.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f84efb6c16da5073d1981afbef021df7c312775966b8737c5ed27816f6ee4ba8
|
|
| MD5 |
48969ef4e5607d65594446b157a5f745
|
|
| BLAKE2b-256 |
159143e2cc22a9ef34df223a55fb118914d8f583a8807c9df59438914c87f077
|
Provenance
The following attestation bundles were made for mcp_1c-0.1.0.1.tar.gz:
Publisher:
python-publish.yml on darkClaw921/mcp_1c
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_1c-0.1.0.1.tar.gz -
Subject digest:
f84efb6c16da5073d1981afbef021df7c312775966b8737c5ed27816f6ee4ba8 - Sigstore transparency entry: 590714870
- Sigstore integration time:
-
Permalink:
darkClaw921/mcp_1c@068b3c1e3d63cfa290520857734ac3ae2eff0d94 -
Branch / Tag:
refs/tags/v0.1.0.1 - Owner: https://github.com/darkClaw921
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@068b3c1e3d63cfa290520857734ac3ae2eff0d94 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mcp_1c-0.1.0.1-py3-none-any.whl.
File metadata
- Download URL: mcp_1c-0.1.0.1-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9699ab63c5fba3afca698dda04ebb7ec4e4c0a6fdf3bfe3923d158955d96e079
|
|
| MD5 |
40ba9e8c5214b6669064d3b83bceb6a2
|
|
| BLAKE2b-256 |
45760b7630b099ae094a2b4f3fd62347388c5f9979933c21aea505b9fd41743b
|
Provenance
The following attestation bundles were made for mcp_1c-0.1.0.1-py3-none-any.whl:
Publisher:
python-publish.yml on darkClaw921/mcp_1c
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_1c-0.1.0.1-py3-none-any.whl -
Subject digest:
9699ab63c5fba3afca698dda04ebb7ec4e4c0a6fdf3bfe3923d158955d96e079 - Sigstore transparency entry: 590714932
- Sigstore integration time:
-
Permalink:
darkClaw921/mcp_1c@068b3c1e3d63cfa290520857734ac3ae2eff0d94 -
Branch / Tag:
refs/tags/v0.1.0.1 - Owner: https://github.com/darkClaw921
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@068b3c1e3d63cfa290520857734ac3ae2eff0d94 -
Trigger Event:
release
-
Statement type: