Доработка и адаптация MCP 1С под текущие задачи при работе с Агентами
Источник разработки: https://github.com/vladimir-kharin/1c_mcp
MCP-прокси сервер для 1С:Предприятие - мост между AI-агентами (Claude, Cursor) и вашей базой 1С. Получайте метаданные, анализируйте структуру конфигурации и генерируйте код через естественный язык!
Представьте, что у вас есть мощный ИИ-помощник, который может "разговаривать" с вашей базой 1С. Этот прокси-сервер как переводчик: он берет запросы от ИИ на понятном ему языке (MCP-протокол) и переводит их в команды, которые понимает 1С.
Простыми словами:
- 🤖 ИИ спрашивает: "Какие справочники есть в конфигурации?"
- 🔄 Прокси переводит это в JSON-RPC запрос к 1С
- 📊 1С отвечает списком справочников
- ✅ Прокси переводит ответ обратно для ИИ
- 🔄 Два режима работы: stdio (для локальных программ) и HTTP (для веб-приложений)
- 🔐 Безопасность: OAuth2 авторизация - каждый пользователь работает под своими учетными данными
- ⚡ Быстродействие: асинхронная обработка, поддержка множества одновременных пользователей
- 🔧 Универсальность: работает со всеми типами MCP-клиентов
- 📊 Аналитика: получение метаданных, структуры объектов, предопределенных данных
# 1. Клонируйте репозиторий
git clone https://github.com/your-repo/1c-mcp-server.git
cd 1c-mcp-server
# 2. Создайте виртуальное окружение
python -m venv venv
# 3. Активируйте окружение
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Mac
# 4. Установите зависимости
pip install -r requirements.txt# Настройте переменные окружения
set MCP_ONEC_URL=http://localhost/base
set MCP_ONEC_USERNAME=admin
set MCP_ONEC_PASSWORD=password
# Запустите сервер
python -m src.py_server stdio# Создайте файл конфигурации
copy env.example .env
# Отредактируйте .env (минимум):
# MCP_ONEC_URL=http://localhost/base
# MCP_ONEC_USERNAME=admin
# MCP_ONEC_PASSWORD=password
# Запустите сервер
python -m src.py_server http --port 8000# Проверьте здоровье сервера
curl http://localhost:8000/health
# Ожидаемый ответ:
{
"status": "healthy",
"onec_connection": "ok",
"auth": {"mode": "none"}
}Получить список объектов метаданных указанного типа.
{
"name": "list_metadata_objects",
"arguments": {
"metaType": "Catalogs",
"nameMask": "Номенклатура",
"maxItems": 10
}
}Результат: Список найденных объектов с именами и описаниями.
Получить подробную структуру объекта (реквизиты, табличные части).
{
"name": "get_metadata_structure",
"arguments": {
"metaType": "Catalogs",
"name": "Номенклатура"
}
}Результат: Полная структура объекта с типами данных.
Получить список предопределенных элементов.
{
"name": "list_predefined_data",
"arguments": {
"metaType": "Catalogs",
"name": "Номенклатура",
"predefinedMask": "Услуга"
}
}Получить детальную информацию о предопределенном элементе.
{
"name": "get_predefined_data",
"arguments": {
"metaType": "Catalogs",
"name": "Номенклатура",
"predefinedName": "Услуга"
}
}| Параметр | Описание | По умолчанию | Обязательный |
|---|---|---|---|
MCP_ONEC_URL |
URL базы 1С | - | ✅ |
MCP_ONEC_USERNAME |
Имя пользователя | - | ✅ (без OAuth2) |
MCP_ONEC_PASSWORD |
Пароль | - | ✅ (без OAuth2) |
MCP_HOST |
Хост сервера | 127.0.0.1 |
❌ |
MCP_PORT |
Порт сервера | 8000 |
❌ |
MCP_AUTH_MODE |
Режим авторизации | none |
❌ |
# Включить OAuth2
MCP_AUTH_MODE=oauth2
MCP_PUBLIC_URL=http://your-server:8000
# Таймауты токенов
MCP_OAUTH2_CODE_TTL=120 # authorization code (сек)
MCP_OAUTH2_ACCESS_TTL=3600 # access token (сек)
MCP_OAUTH2_REFRESH_TTL=1209600 # refresh token (14 дней)- 💻 Для локальных MCP-клиентов (Claude Desktop, Cursor)
- 📡 Общение через stdin/stdout
- 🔒 Логи идут в stderr
- 🌐 Для веб-приложений и множественных клиентов
- 📊 Endpoints:
/mcp/,/sse,/health,/info - 🔐 Поддержка OAuth2 авторизации
Все запросы выполняются от одного пользователя из конфигурации.
Каждый клиент авторизуется своими креденшилами 1С.
Поддерживаемые flows:
- 🔑 Password Grant - прямая передача username/password
- 🔄 Authorization Code + PKCE - стандартный flow с формой авторизации
┌─────────────────┐
│ MCP Client │ 🤖 Claude Desktop, Cursor
│ (stdio/HTTP) │
└────────┬────────┘
│ MCP Protocol
▼
┌────────────────────┐
│ Python Proxy │ 🔄 Проксирование MCP → JSON-RPC
│ - mcp_server │
│ - http_server │
│ - stdio_server │
│ - onec_client │
└────────┬───────────┘
│ JSON-RPC over HTTP
│ 🔐 Basic Auth (username:password)
▼
┌────────────────────┐
│ 1C HTTP Service │ 📡 /hs/mcp/rpc
│ (расширение) │
└────────────────────┘
# Запуск автоматических тестов
python testMCP_grok_plus_2.py
# Результаты сохраняются в testMCP.md- Проверьте
MCP_ONEC_URL - Убедитесь, что HTTP-сервис 1С опубликован
- Проверьте учетные данные
- Включите DEBUG логи:
--log-level DEBUG
- Установите
MCP_AUTH_MODE=oauth2 - Проверьте
MCP_PUBLIC_URL - Для Password Grant: проверьте креденшилы
- Для Authorization Code: проверьте PKCE параметры
- Проверьте конфигурацию клиента
- Убедитесь, что сервер запущен
- Проверьте логи на ошибки
- Для stdio: проверьте переменные окружения
- 📖 agents.md - полная техническая документация
- ⚙️ env.example - пример конфигурации
- 🧪 testMCP.md - результаты тестирования
Мы приветствуем вклад в развитие проекта!
- 🍴 Fork репозиторий
- 🌿 Создайте feature branch:
git checkout -b feature/amazing-feature - 💾 Commit изменения:
git commit -m 'Add amazing feature' - 📤 Push в branch:
git push origin feature/amazing-feature - 🔄 Создайте Pull Request
MIT License - свободно используйте в коммерческих и личных проектах.
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 📧 Email: [email protected]
Источник разработки: https://github.com/vladimir-kharin/1c_mcp
⭐ Если проект оказался полезным, поставьте звезду на GitHub!
Разработано с ❤️ для сообщества 1С разработчиков