Skip to main content
Glama

gti-1c-mcp

MCP-сервер (Model Context Protocol) для 1С:БИТ / БИТ.СТРОИТЕЛЬСТВО.

Три независимых блока:

  • База знаний инструкций — полнотекстовый поиск и выдача 73 инструкций пользователя 1С.БИТ

  • Профили доступа RBAC — keyword-подбор профиля группы доступа, матрица ролей, валидация, уровень согласования

  • Маппинг должность → профили — типовые профили доступа по должности на основе реальных обезличенных данных (417 должностей)

Не содержит LLM-зависимостей и логики провижининга заявок — это отдельный сервис.


Репозитории


Related MCP server: INFATON MCP35

Инструменты (22)

База знаний

Инструмент

Назначение

list_instructions

Список всех инструкций (фильтры по коду/ключевому слову)

search_instructions

Keyword-поиск (scoring по TF + позиции)

get_instruction

Полный текст по id или коду (ИП-301, ИП-403 и т.д.)

semantic_search_instructions

Семантический поиск (TF-IDF + cosine similarity, офлайн)

list_instructions_by_topic

Инструкции по тематическому разделу

Профили доступа

Инструмент

Назначение

suggest_access_profile

Keyword-подбор профиля группы доступа (режим single / multi)

get_roles_matrix

Полная матрица ролей RBAC (с фильтрами)

validate_roles

Проверка корректности набора ролей

get_approval_level

Уровень согласования по набору ролей

explain_profile

Объяснение профиля на языке бизнеса: что делает, какие разделы, какое согласование

search_by_role

Поиск профиля по роли 1С (для администраторов)

get_profiles_by_function

Профили доступа, покрывающие указанную бизнес-функцию RBAC

Маппинг должность → профили (обезличенные данные)

Инструмент

Назначение

suggest_profile_by_job

Типовые профили доступа по названию должности (417 должностей, нечёткий поиск)

list_jobs

Список всех должностей из базы данных с фильтром по подстроке

Новые инструменты — управление доступом (v2.1)

Инструмент

Назначение

get_instruction_access_requirements

[Идея 2] Какие профили и роли нужны для выполнения действий из конкретной инструкции. Отвечает: «Почему сотрудник не может это сделать?»

get_access_wizard

[Идея 1] Интерактивный мастер подбора прав. Шаг 1: вопросы для уточнения контекста. Шаг 2: список профилей + готовый текст заявки на доступ

get_user_access_journey

[Идея 3] Полная цепочка «Должность → Профили → Бизнес-функции → Роли → Согласование → Инструкции». Для HR и руководителей


Примеры использования новых инструментов

get_user_access_journey — «Что получит кладовщик в 1С?»

Пользователь: "Что видит кладовщик в 1С?"

Агент: get_user_access_journey(job_title="кладовщик")

Результат:
  journey_for: "Кладовщик"
  total_persons_in_db: 36
  summary:
    what_employee_will_see_in_1c: [складские документы, заявки на МПЗ, ...]
    overall_approval_level: "accounting"
    overall_approvers: ["Линейный руководитель", "Главный бухгалтер"]
  access_chain: [8 профилей с % охвата по реальным данным]
  relevant_instructions: [5 релевантных инструкций]

get_access_wizard — «Оформить заявку на доступ»

Шаг 1 — получить вопросы:
  get_access_wizard(employee_description="новый кладовщик склад ТМЦ")
  → status: NEED_CLARIFICATION, questions: [5 уточняющих вопросов]

Шаг 2 — передать ответы:
  get_access_wizard(
    employee_description="новый кладовщик склад ТМЦ",
    answers=["Кладовщик", "Склад №3", "Нет", "Нет", "Да, приём и отпуск ТМЦ"]
  )
  → status: OK
  → recommended_profiles: [...] с объяснением что сможет делать сотрудник
  → ready_to_use_request_text: готовый текст заявки на доступ

get_instruction_access_requirements — «Почему сотрудник не может создать заявку РДС?»

Пользователь: "Иванов не может создать заявку на расходование ДС"

Агент: get_instruction_access_requirements(instruction_id="wiki-kazn-zayavka-rds.md")

Результат:
  required_profiles: [БИТ.Исполнитель казначейства, БИТ.Казначей, ...]
  approval_level: "accounting"
  approvers_required: ["Линейный руководитель", "Главный бухгалтер"]
  if_access_denied_hint: "Используйте get_user_access_journey для проверки..."

Установка и подключение

Сервер поддерживает два режима работы:

Режим

Транспорт

Когда использовать

stdio (рекомендуется)

stdin/stdout

Локально в IDE — IDE сама запускает и останавливает процесс

HTTP

HTTP/SSE

Корпоративный сервер — один экземпляр для всей команды


Режим stdio — запуск через IDE (рекомендуется)

Требования

Больше ничего не нужно. IDE сама запускает сервер при открытии и останавливает при закрытии. Никаких daemon-процессов, открытых портов и ручных перезапусков.


OpenCode

Добавить в ~/.config/opencode/opencode.json:

{
  "mcp": {
    "gti-1c": {
      "type": "local",
      "command": ["npx", "-y", "gti-1c-mcp"],
      "enabled": true
    }
  }
}

Готово. После сохранения файла перезапустите OpenCode.


Claude Desktop

Файл конфигурации: %APPDATA%\Claude\claude_desktop_config.json (Windows) или ~/Library/Application Support/Claude/claude_desktop_config.json (macOS).

{
  "mcpServers": {
    "gti-1c": {
      "command": "npx",
      "args": ["-y", "gti-1c-mcp"]
    }
  }
}

Cursor

Файл .cursor/mcp.json в корне проекта или ~/.cursor/mcp.json глобально:

{
  "mcpServers": {
    "gti-1c": {
      "command": "npx",
      "args": ["-y", "gti-1c-mcp"]
    }
  }
}

Continue.dev

В файле ~/.continue/config.json:

{
  "mcpServers": [
    {
      "name": "gti-1c",
      "command": "npx",
      "args": ["-y", "gti-1c-mcp"]
    }
  ]
}

Передача переменных окружения (1С-подключение)

Если нужно подключить живую базу 1С, передайте переменные через env:

OpenCode:

{
  "mcp": {
    "gti-1c": {
      "type": "local",
      "command": ["npx", "-y", "gti-1c-mcp"],
      "enabled": true,
      "environment": {
        "ONEC_URL": "http://ваш-сервер/база",
        "ONEC_USERNAME": "технический_пользователь",
        "ONEC_PASSWORD": "пароль"
      }
    }
  }
}

Claude Desktop / Cursor:

{
  "mcpServers": {
    "gti-1c": {
      "command": "npx",
      "args": ["-y", "gti-1c-mcp"],
      "env": {
        "ONEC_URL": "http://ваш-сервер/база",
        "ONEC_USERNAME": "технический_пользователь",
        "ONEC_PASSWORD": "пароль"
      }
    }
  }
}

Режим HTTP — корпоративный сервер

Используйте если один экземпляр сервера обслуживает несколько пользователей.

Требования

  • Node.js 18+ или Docker

  • Git

Вариант A — локальный запуск (Node.js)

git clone https://github.com/RomanSaranindev/gti-1c-mcp.git
cd gti-1c-mcp
npm install
cp .env.example .env
# Отредактировать .env — задать MCP_API_TOKEN
npm start

Проверить:

curl http://localhost:3031/health

Вариант B — Docker

git clone https://github.com/RomanSaranindev/gti-1c-mcp.git
cd gti-1c-mcp
cp .env.example .env
# Отредактировать .env — задать MCP_API_TOKEN
docker-compose up -d

Подключение клиентов к HTTP-серверу

OpenCode:

{
  "mcp": {
    "gti-1c": {
      "type": "remote",
      "url": "http://192.168.1.100:3031/mcp",
      "headers": { "X-MCP-Token": "ВАШ_ТОКЕН" },
      "enabled": true
    }
  }
}

Claude Desktop / Cursor:

{
  "mcpServers": {
    "gti-1c": {
      "url": "http://192.168.1.100:3031/mcp",
      "headers": { "X-MCP-Token": "ВАШ_ТОКЕН" }
    }
  }
}

Открыть порт в брандмауэре (если сервер удалённый):

New-NetFirewallRule -DisplayName "gti-1c-mcp" -Direction Inbound -Protocol TCP -LocalPort 3031 -Action Allow

Переменные окружения

Переменная

По умолчанию

Назначение

MCP_PORT

3031

Порт HTTP-сервера

MCP_API_TOKEN

gti-mcp-token-2024

Токен авторизации (смените!)

KNOWLEDGE_DIR

knowledge/instructions

Путь к папке с .md-инструкциями


Структура

gti-1c-mcp/
├── src/
│   ├── server.js           # HTTP + MCP (12 инструментов)
│   ├── knowledge_base.js   # загрузка/поиск/выдача инструкций + fs.watch автоперезагрузка
│   ├── rbac_matrix.js      # матрица RBAC и профили доступа (122 профиля)
│   ├── job_profiles.js     # маппинг должность → профили (417 должностей, обезличенные данные)
│   └── vector_search.js    # TF-IDF + cosine similarity семантический поиск (офлайн)
├── knowledge/
│   └── instructions/       # 73 инструкции пользователя 1С.БИТ (.md)
├── .env.example
├── Dockerfile
├── docker-compose.yml
└── package.json

Безопасность

  • Смените MCP_API_TOKEN перед публичным деплоем.

  • Эндпоинты /health и / доступны без токена, все остальные — нет.

  • Не публикуйте .env файл в репозиторий (он добавлен в .gitignore).

Available Tools

18 tools
execute_1c_queryA

Выполняет произвольный запрос к данным 1С через расширение. Агент может запросить данные из любого справочника, регистра или документа БИТ.ФИНАНС — например, сотрудников, ТМЦ, договоры, путевые листы. ВАЖНО: запросы только на чтение (SELECT), изменение данных не поддерживается. Требует настроенного подключения к 1С.

Inputs: query_text (required), limit, params.

explain_profileA

Объясняет профиль доступа 1С на языке бизнеса: что сотрудник сможет делать, какие разделы программы будут доступны, какое согласование требуется. Принимает id или название профиля.

Inputs: profile_id (required).

get_1c_access_groupsA

Получает группы доступа из рабочей базы 1С и назначенных пользователей. Позволяет узнать реальные роли конкретного сотрудника или все группы в системе. Требует настроенного подключения к 1С.

Inputs: group_name, user_login, include_roles.

get_1c_documentsA

Получает документы из рабочей базы 1С:БИТ.ФИНАНС — путевые листы, платёжные поручения, заявки на оплату, расходные ордера на ГСМ и т.д. Поддерживает фильтрацию по типу документа, периоду, статусу, контрагенту. Требует настроенного подключения к 1С.

Inputs: document_type (required), limit, status, date_to, +2 more.

get_1c_metadataA

Возвращает метаданные конфигурации 1С: список объектов (справочники, документы, регистры и т.д.) с их реквизитами. Используйте перед execute_1c_query чтобы узнать правильные имена таблиц и полей. Требует настроенного подключения к 1С.

Inputs: object_name, object_type, include_attributes.

get_approval_levelA

Определяет уровень согласования для набора ролей: standard (руководитель), accounting (+главбух), transport (+нач. АТ), transport_accounting (+оба).

Inputs: roles (required).

get_instructionA

Возвращает полный текст инструкции пользователя 1С.БИТ по id (из list_instructions/search_instructions) или по коду (ИП-301, ИП-403 и т.д.).

Inputs: id (required), max_chars.

get_roles_matrixA

Возвращает полную матрицу ролей RBAC для 1С:БИТ.ФИНАНС. Используйте для изучения доступных бизнес-функций и их маппинга на роли 1С.

Inputs: search_keyword, filter_requires_transport, filter_requires_accounting.

list_1c_usersA

Получает список пользователей из рабочей базы 1С. Возвращает ФИО, логин, должность, подразделение, группы доступа. Требует настроенного подключения к 1С (ONEC_URL, ONEC_USERNAME, ONEC_PASSWORD в .env).

Inputs: limit, search, department, include_inactive.

list_instructionsB

Возвращает список инструкций пользователя 1С.БИТ, загруженных в базу знаний MCP сервера. Каждая инструкция имеет id, код (ИП-XXX), название и источник.

Inputs: filter_code, filter_keyword.

list_jobsA

Возвращает список должностей из базы данных сотрудников (417 должностей). Поддерживает фильтрацию по подстроке. Помогает найти точное название должности перед вызовом suggest_profile_by_job.

Inputs: limit, filter.

onec_healthA

Проверяет доступность HTTP-сервиса рабочей базы 1С. Показывает статус подключения, конфигурацию и список инструментов, которые расширение предоставляет агенту. Вызывайте первым при любой работе с живой базой 1С.

Inputs: no named parameters.

search_by_roleA

Находит профили доступа и бизнес-функции 1С по конкретному названию роли (например 'бит_ИсполнительКазначейства'). Полезно для администраторов 1С, которые видят роль в базе и хотят понять к какому профилю она относится.

Inputs: role_name (required).

search_instructionsA

Ищет инструкции пользователя 1С.БИТ по ключевым словам (полнотекстовый поиск по базе знаний). Возвращает релевантные инструкции с оценкой соответствия. Используйте для ответа на вопросы 'как сформировать...', 'где найти...', 'как заполнить...' в 1С.БИТ.

Inputs: query (required), limit.

semantic_search_instructionsA

Семантический поиск по инструкциям 1С.БИТ на основе TF-IDF + косинусного сходства. Понимает смысловые запросы лучше, чем keyword-поиск: находит документы по близким понятиям. Например: 'как оформить расход топлива' найдёт инструкции по заправке и ведомостям ГСМ.

Inputs: query (required), limit, min_score.

suggest_access_profileA

Подбирает профиль(и) группы доступа 1С:БИТ.ФИНАНС по описанию задач сотрудника (без LLM, по ключевым словам). Режим 'single' — один лучший профиль. Режим 'multi' — все подходящие профили (для должностей с несколькими профилями, например кладовщик).

ДВУХШАГОВЫЙ ПРОТОКОЛ УТОЧНЕНИЯ: ШАГ 1: Вызовите инструмент БЕЗ параметра answers. Сервер вернёт { status: 'NEED_CLARIFICATION', questions: [...] } — 5 адаптивных вопросов, подобранных под должность/задачи сотрудника. Задайте эти вопросы пользователю последовательно и соберите ответы. ШАГ 2: Вызовите инструмент повторно с параметром answers — массивом строк (ответы в том же порядке, что и вопросы из шага 1). Сервер обогатит запрос ответами и вернёт подобранные профили. ВАЖНО: Никогда не пропускайте шаг 1. Не передавайте answers при первом вызове.

Inputs: request_text (required), mode, answers.

suggest_profile_by_jobA

Подбирает типовые профили доступа 1С по названию должности сотрудника. Использует реальные обезличенные данные из базы сотрудников (417 должностей). Возвращает профили, которые встречаются у >= 40% сотрудников данной должности, с указанием % охвата и количества сотрудников. Поддерживает нечёткий поиск по подстроке названия должности.

Inputs: job_title (required), limit, min_pct.

validate_rolesA

Проверяет корректность набора ролей 1С: какие роли существуют в матрице, какие не найдены, и рекомендует обязательные роли.

Inputs: roles (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 18 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes, but there is overlap between keyword and semantic search, and between suggest_access_profile and suggest_profile_by_job. Descriptions help an agent differentiate them, though occasional ambiguity remains.

    Naming Consistency3/5

    Naming mixes verb_noun (list_instructions), verb_by_noun (search_by_role), and non-verb forms (onec_health). The inconsistency is readable but not predictable, making it harder to guess tool names.

    Tool Count4/5

    18 tools is on the heavier side but justified by the server's three subdomains: instructions, RBAC profiles, and live 1C queries. Each tool has a specific role, though the count slightly exceeds the ideal range.

    Completeness4/5

    The tool surface covers the full read-only workflow: listing, searching, retrieving, explaining, validating, and checking health. Minor gaps exist such as no write/update capabilities, but for the apparent advisory purpose, coverage is solid.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      An MCP server for 1C:Enterprise that provides AI assistants with access to configuration data via vector search, structural indexing, and call graphs. It enables semantic code queries and rapid metadata object lookups without requiring the direct reading of raw files.
      79
      AGPL 3.0
    • A
      license
      B
      quality
      B
      maintenance
      MCP server for 1C:Enterprise ERP with 35 tools: metadata inspection, document CRUD, register queries, and BSP integration. First MCP server for Russian ERP systems (300,000+ organizations). JSON-RPC 2.0 compliant BSL implementation.
      51
      47
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      MCP server for searching and analyzing 1C enterprise metadata and BSL code using a SQLite backend. Enables querying configuration structure, code routines, and performing compliance checks via natural language.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for RAG-based search over 1C Enterprise configuration documentation, enabling natural language queries to find objects like справочники, документы, and отчеты.
      MIT