MCP-сервер для получения и анализа метаданных и струкутуры баз данных 1С:Предприятие 8.
Функционал сервера основан на использовании библиотеки DaJet Metadata и таким образом аналогичен функционалу DaJet HTTP Server.
DaJet MCP Server получает объекты метаданных 1С:Предприятие 8 вместе с описанием структуры хранения этих объектов в базе данных, то есть с именами таблиц и полей.
- Установить Microsoft .NET 10 SDK
- Скачать дистрибутив DaJet MCP Server
- Создать рабочий каталог и распаковать в него дистрибутив, например:
C:\dajet-mcp-server - Перейти в каталог установки и запустить исполняемый файл
DaJet.Mcp.Server.exe
- Получить образ из Docker Hub
docker pull zhichkin/dajet-mcp-server
- Запустить контейнер в Docker
docker run --name dajet-mcp-server --user=root -it -p 5000:5000 zhichkin/dajet-mcp-server
- Адрес и порт MCP-сервера для работы по протоколу HTTP указываются в файле
appsetting.json. По умолчанию:http://localhost:3000. - Настроить подключения к базам данных 1С:Предприятие 8 в файле
datasources.json. Сервер может работать сразу с несколькими базами данных. Обращение к базам данных выполняется AI-агентом по её имени.
Файл datasources.json
{
"DataSources": [
{
"Name": "MS_TEST",
"Type": "SqlServer",
"ConnectionString": "Data Source=server;Initial Catalog=database;Integrated Security=True;Encrypt=False;"
}
]
}Файл mcp.json
{
"mcpServers": {
"dajet-mcp-server": {
"url": "http://localhost:3000"
}
}
}Создание и подключение произвольных пользовательских MCP-инструментов на DaJet Script
| Инструмент | Описание | Параметры |
|---|---|---|
| get_metadata_type_names | Получает список поддерживаемых типов объектов метаданных | Нет |
| get_database_names | Получает список имён доступных баз данных | Нет |
| reset_cache | Сбрасывает кэш метаданных базы данных (конфигурации) | - Имя базы данных (конфигурации) |
| get_database_description | Получает описание базы данных (конфигурации) по её имени | - Имя базы данных (конфигурации) |
| get_database_metadata | Получает описание структуры метаданных базы данных (конфигурации) по её имени | - Имя базы данных (конфигурации) |
| search_metadata_names | Получает список полных имён объектов метаданных базы данных (конфигурации) по части имени (шаблону) | - Имя базы данных (конфигурации) - Шаблон поиска |
| get_metadata_object | Получает описание структуры объекта метаданных базы данных (конфигурации) по его типу и имени | - Имя базы данных (конфигурации) - Тип объекта метаданных - Имя объекта метаданных |
| get_metadata_object_by_code | Получает описание структуры объекта метаданных базы данных (конфигурации) по его числовому коду | - Имя базы данных (конфигурации) - Код типа объекта метаданных |
| resolve_metadata_references | Получает имена объектов метаданных по их идентификатору UUID для указанной базы данных (конфигурации) | - Имя базы данных (конфигурации) - Список идентификаторов объектов метаданных |
| execute_query | Выполняет произвольный параметризованный запрос SELECT к указанной базе данных. Результат запроса возвращается в виде массива объектов JSON. | - Имя базы данных (конфигурации) - Текст запроса DaJet Script - Именованные параметры запроса |
Пример запроса, который AI-агент должен уметь формировать для инструмента execute_query:
SELECT Ссылка, Код, Наименование
FROM Справочник.Номенклатура
WHERE Код = @КодПараметры для запроса передаются примерно в таком виде:
{
"Код": "333"
}Пример запроса по протоколу MCP
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "execute_query",
"arguments": {
"database": "MS_TEST",
"script": "SELECT TOP 1 Ссылка, Код, Наименование FROM Справочник.Номенклатура WHERE Код = @Код",
"attributes": {
"Код": "333"
}
}
}
}Поддерживаемые типы данных параметров запроса
{
"Булево": true,
"Число": 1234,
"ДатаВремя": "2026-01-01T12:34:56",
"Строка": "Это строка",
"Идентификатор": "1677349A-095F-4488-896F-93425B720FEB",
"Ссылка": "{333:1677349A-095F-4488-896F-93425B720FEB}"
}