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.
Metadata
Release files for mcp-1c 0.1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcp_1c-0.1.0.1.tar.gz | 18.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_1c-0.1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.9 kB
Release files / mcp_1c-0.1.0.1.tar.gz
| Download URL | mcp_1c-0.1.0.1.tar.gz |
|---|---|
| Size | 18.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f84efb6c16da5073d1981afbef021df7c312775966b8737c5ed27816f6ee4ba8
|
|
BLAKE2b-256 checksum How to use checksums |
159143e2cc22a9ef34df223a55fb118914d8f583a8807c9df59438914c87f077
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2025.
Transparency logRelease files / mcp_1c-0.1.0.1-py3-none-any.whl
| Download URL | mcp_1c-0.1.0.1-py3-none-any.whl |
|---|---|
| Size | 18.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9699ab63c5fba3afca698dda04ebb7ec4e4c0a6fdf3bfe3923d158955d96e079
|
|
BLAKE2b-256 checksum How to use checksums |
45760b7630b099ae094a2b4f3fd62347388c5f9979933c21aea505b9fd41743b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2025.
Transparency log