MCP сервер для LLM агентов
MCP Сервер является сердцем нашего решения. Он предоставляет сервисам LLM Chat и Gitlab Agent возможность взаимодействовать с инфраструктурой, в которй MCP сервер запущен.
На стороне MCP сервера реализовано взаимодействие со следующими объектами:
- Базы данных, все, для которых есть драйвера для
sqlalchemy - Файловые хранилища (S3, SMB)
- Kafka
- Веб интерфейсы
Для файловых хранилищ поддерживаются следующие форматы данных:
- CSV, TSV
- JSON, XML
- Parquet
Основные действия над базами данных:
- проверить доступность
- проверить наличие схемы.таблицы
- получить DDL (структуру таблицы)
- получить sample данных для проверки структуры таблицы
Основные действия над хранилищами
- проверить доступность хранилища
- проверить доступность каталога и проверить наличие файла
- прочитать файл или его часть (для текстовых форматов)
- получить схему для parquet файлов
Основные действия над интернет ресурсами
- проверить доступность ресурса
- получить первые 2000 символов ответа ресурса
Развертывание сервиса
Наш проект подготовлен для контейнеризации и содержит Dockerfile для сборки образа.
Для работы сервиса необходимо настроить следующие параметры переменных окружения:
-
HTTP_PROXY - адрес прокси сервера, если ваша среда не имеет прямого выхода в интернет
-
HTTPS_PROXY - адрес прокси сервера для https запросов, если ваша среда не имеет прямого выхода в интернет
-
GITLAB_URL - адрес сервера Gitlab для доступа к апи
-
GITLAB_TOKEN - действующий токен с уровнем доступа, чтение и запись через API
-
PROJECT_PATH - путь до проекта, в котором будут создаваться ветки
-
AIRFLOW_URL - адрес сервера Apache Airflow
-
AIRFLOW_USER - Пользователь, который имеет доступ к REST API сервера Airflow
-
AIRFLOW_PASSWORD - Паспорт пользователя
Для сборки образа указываем все необходимые переменные окружения и запускаем процесс сборки
$ git clone https://github.com/AnatoliyAksenov/chat-app-backend.git
$ cd chat-app-backend
$ docker build -t chat-app-backend:0.0.1 --build-arg HTTPS_PROXY=http://10.0.0.7:3128 \
--build-arg LDAP_SERVER=10.0.0.100 \
--build-arg LDAP_SERVER=1389 \
--build-arg POSTGRESQL_URL=postgres://10.0.0.7:5432/chat .
Также, для своего тестового контура мы настроили сборку и деплой приложения через cicd.
Архитектура решения
Продублировано из репозитория Gitlab Агента
Агент состоит из двух основных модулей:
- LLM Чат (пользовательский интерфейс)
- LLM Gitlab Агент (сервис)
Также, для работы сервисов необходим MCP сервер с набором инструметов для взаимодействия с базами данных и хранилищами.
Создание нового пайплайна для загрузки данных начинается в чате. Пользователь в процессе общения с агентом передает все необходимые данные для создания новой загрузки данных. Агент чата, после сбора необходимых данных, создает в приложении Gitlab issue, где собрана вся информация для создания пайплайна. После создания issue Gitlab вызывает webhook к LLM Gitlab Агенту и запускает обработку issue. Gitlab Агент обрабатывает issue и создает в репозитории Gitlab в выделенном проекте новую ветку и передает в нее весь созданный код и документацию, создает Merge Request и завершает свою работу.
При принятии Merge Request'a срабатывает cicd по доставке изменений в Airflow.
Связанные проекты:
- MCP Сервер: https://github.com/AnatoliyAksenov/chat-app-mcp
- LLM Chat backend: https://github.com/AnatoliyAksenov/chat-app-backend
- LLM Chat frontend: https://github.com/AnatoliyAksenov/chat-app-frontend
- Gitlab Agent: https://github.com/AnatoliyAksenov/gitlab-agent
- Infrastructure: https://github.com/AnatoliyAksenov/it-brew-infra
Также, мы подготовили развернутый стенд
Kroki server
docker run -p 8008:8000 --name kroki -d yuzutech/kroki
Minio object storage
docker run -p 9001:9000 --name minio -d minio/minio