Skip to main content
Glama

Trino MCP Server

by dreadew
README.md6.87 kB
# Trino MCP Server [![CI](https://github.com/dreadew/trino-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/dreadew/trino-mcp/actions/workflows/ci.yml) **Model Context Protocol (MCP) сервер для анализа схем базы данных Trino** Этот проект представляет собой MCP сервер, который предоставляет мощные инструменты для анализа структуры баз данных Trino. Сервер принимает параметры подключения динамически и поддерживает работу с множественными подключениями одновременно. ## 🚀 Основные возможности ### Базовые операции - **Проверка подключения** к Trino серверам - **Навигация по структуре БД**: каталоги → схемы → таблицы - **Описание структуры таблиц** с детальной информацией о колонках - **Безопасное выполнение SQL запросов** с ограничениями - **Анализ запросов** через EXPLAIN без выполнения ### Работа с DDL - **Валидация DDL выражений** перед выполнением - **Анализ зависимостей** между объектами базы данных - **Безопасное выполнение DDL** с предварительной проверкой - **Обнаружение конфликтов** имен объектов - **Построение графа зависимостей** для правильного порядка создания ### Документация и анализ - **Автогенерация документации** схемы базы данных - **Анализ качества DDL** с рекомендациями - **Обнаружение потенциальных проблем** в структуре - **Статистика использования подключений** ## 🛠 Установка ### Требования - Python 3.11+ - Poetry для управления зависимостями - Доступ к Trino серверу ### Установка зависимостей ```bash # Клонирование репозитория git clone <repository-url> cd VkHackMCP # Установка зависимостей через Poetry poetry install # Или через pip (если Poetry не используется) pip install -r requirements.txt ``` ### Настройка окружения Создайте файл `.env` на основе `.env.example`: ```bash cp .env.example .env ``` Пример конфигурации `.env`: ```env # Настройки приложения APP_NAME=trino-mcp LOG_LEVEL=INFO ``` ## 🎯 Запуск ### Разработка ```bash # Запуск MCP сервера для разработки make run-server # Или напрямую через Python poetry run python -m src.api.server ``` ### Форматирование и проверка кода ```bash # Форматирование кода make format # Проверка стиля кода make lint # Все проверки сразу make check-all ``` ### Docker ```bash # Сборка образа docker build -t trino-mcp . # Запуск контейнера docker run -it trino-mcp ``` ## 📖 Использование MCP сервер предоставляет следующие инструменты: ### Базовые инструменты #### `connection_status` Проверяет статус подключения к Trino серверу. ```json { "jdbc_url": "jdbc:trino://host:443?user=analyst" } ``` #### `list_catalogs` Возвращает список всех доступных каталогов. ```json { "jdbc_url": "jdbc:trino://host:443?user=analyst" } ``` #### `list_schemas` Получает список схем в указанном каталоге. ```json { "jdbc_url": "jdbc:trino://host:443?user=analyst", "catalog": "hive" } ``` #### `describe_table` Описывает структуру таблицы с детальной информацией о колонках. ```json { "jdbc_url": "jdbc:trino://host:443?user=analyst", "table": "users", "schema": "default", "catalog": "hive" } ``` ### Инструменты для работы с DDL #### `validate_ddl_statements` Анализирует список DDL выражений без их выполнения. ```json { "ddl_list": [ "CREATE TABLE users (id bigint, name varchar(255))", "CREATE VIEW active_users AS SELECT * FROM users WHERE active = true" ] } ``` #### `execute_ddl_statements` Выполняет DDL с предварительной валидацией. ```json { "jdbc_url": "jdbc:trino://host:443?user=analyst", "ddl_list": ["CREATE TABLE test (id bigint)"], "catalog": "hive", "schema": "default", "validate_first": true } ``` #### `analyze_schema_dependencies` Анализирует зависимости между объектами и рекомендует порядок создания. ```json { "jdbc_url": "jdbc:trino://host:443?user=analyst", "ddl_list": [ "CREATE VIEW v1 AS SELECT * FROM table1", "CREATE TABLE table1 (id bigint)" ], "catalog": "hive", "schema": "default" } ``` ### Инструменты анализа и документации #### `generate_schema_documentation` Создает документацию для схемы базы данных. ```json { "jdbc_url": "jdbc:trino://host:443?user=analyst", "catalog": "hive", "schema": "default", "include_ddl": ["CREATE TABLE additional (id bigint)"] } ``` ### Пример workflow ```python # 1. Проверка подключения connection_status(jdbc_url="jdbc:trino://host:443?user=analyst") # 2. Анализ существующей структуры list_catalogs(jdbc_url="...") list_schemas(jdbc_url="...", catalog="hive") list_tables(jdbc_url="...", schema="default", catalog="hive") # 3. Валидация новых DDL validate_ddl_statements(ddl_list=["CREATE TABLE ...", "CREATE VIEW ..."]) # 4. Анализ зависимостей analyze_schema_dependencies(jdbc_url="...", ddl_list=["..."]) # 5. Выполнение DDL execute_ddl_statements(jdbc_url="...", ddl_list=["..."], validate_first=True) # 6. Генерация документации generate_schema_documentation(jdbc_url="...", catalog="hive", schema="default") ``` ## 📊 Мониторинг ### Статистика подключений ```json { "tool": "get_connection_stats" } ```

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dreadew/trino-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server