Сервер Trino MCP в Go
Высокопроизводительный сервер Model Context Protocol (MCP) для Trino, реализованный на Go. Этот проект позволяет помощникам ИИ беспрепятственно взаимодействовать с распределенным механизмом SQL-запросов Trino с помощью стандартизированных инструментов MCP.
Обзор
Этот проект реализует сервер Model Context Protocol (MCP) для Trino на Go. Он позволяет помощникам ИИ получать доступ к распределенному движку SQL-запросов Trino через стандартизированные инструменты MCP.
Trino (ранее PrestoSQL) — это мощный механизм распределенных SQL-запросов, предназначенный для быстрой аналитики больших наборов данных.
Related MCP server: Trino MCP Server
Функции
✅ Реализация MCP-сервера на Go
✅ Выполнение SQL-запросов Trino с помощью инструментов MCP
✅ Каталог, схема и обнаружение таблиц
✅ Поддержка Docker-контейнеров
✅ Поддерживает транспорты STDIO и HTTP
✅ Поддержка событий, отправленных сервером (SSE), для Cursor и других клиентов MCP
✅ Совместимо с Cursor, Claude Desktop, Windsurf, ChatWise и любыми MCP-совместимыми клиентами.
Установка
Homebrew (macOS и Linux)
Самый простой способ установить mcp-trino — использовать Homebrew:
Для обновления до последней версии:
Альтернативные методы установки
Ручная загрузка
Загрузите соответствующий двоичный файл для вашей платформы со страницы релизов GitHub .
Поместите двоичный файл в каталог, включенный в ваш PATH (например,
/usr/local/binв Linux/macOS)Сделайте его исполняемым (
chmod +x mcp-trinoв Linux/macOS)
Из источника
Загрузки
Вы можете загрузить готовые двоичные файлы для вашей платформы:
Платформа | Архитектура | Ссылка для скачивания |
macOS | x86_64 (Интел) | |
macOS | ARM64 (Apple Silicon) | |
Линукс | x86_64 | |
Линукс | ARM64 | |
Окна | x86_64 |
Или посмотрите все доступные загрузки на странице релизов GitHub .
Интеграция МКП
Этот MCP-сервер может быть интегрирован с несколькими приложениями ИИ:
Использование образа Docker
Чтобы использовать образ Docker вместо локального двоичного файла:
Примечание : специальное DNS-имя
host.docker.internalпозволяет контейнеру подключаться к службам, запущенным на хост-машине. Если ваш сервер Trino запущен в другом месте, замените на соответствующий хост.
Эту конфигурацию Docker можно использовать в любом из перечисленных ниже приложений.
Курсор
Для использования с Cursor создайте или отредактируйте ~/.cursor/mcp.json :
Замените переменные среды на вашу конкретную конфигурацию Trino.
Для транспортного режима HTTP+SSE (поддерживается для интеграции курсора):
Затем запустите сервер в отдельном терминале с помощью:
Клод Десктоп
Для использования с Claude Desktop отредактируйте файл конфигурации Claude:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
После обновления конфигурации перезапустите Claude Desktop. Вы должны увидеть инструменты MCP, доступные в меню инструментов.
Виндсерфинг
Для использования с Windsurf создайте или отредактируйте mcp_config.json :
Перезапустите Windsurf, чтобы применить изменения. Инструменты Trino MCP будут доступны для Cascade AI.
ChatWise
Для использования с ChatWise выполните следующие действия:
Откройте ChatWise и перейдите в «Настройки».
Перейдите в раздел «Инструменты».
Нажмите значок «+», чтобы добавить новый инструмент.
Выберите «Командная строка MCP»
Настройте, указав следующие данные:
ID:
mcp-trino(или любое другое имя по вашему желанию)Команда:
mcp-trinoАргументы: (оставьте пустым)
Env: Добавьте следующие переменные среды:
TRINO_HOST=<HOST> TRINO_PORT=<PORT> TRINO_USER=<USERNAME> TRINO_PASSWORD=<PASSWORD>
Кроме того, вы можете импортировать конфигурацию из JSON:
Скопируйте этот JSON в буфер обмена:
{ "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }В разделе «Настройки ChatWise» > «Инструменты» нажмите значок «+».
Выберите «Импорт JSON из буфера обмена».
Чтобы включить инструмент, переключите переключатель рядом с ним.
После включения нажмите на значок молотка под полем ввода в ChatWise, чтобы получить доступ к инструментам Trino MCP.
Доступные инструменты MCP
Сервер предоставляет следующие инструменты MCP:
выполнить_запрос
Выполнение SQL-запроса к Trino с полной поддержкой SQL для сложных аналитических запросов.
Пример подсказки:
«Сколько у нас клиентов в каждом регионе? Можете ли вы показать их в порядке убывания?»
Пример:
Ответ:
список_каталогов
Перечислите все каталоги, доступные на сервере Trino, и получите полное представление о вашей экосистеме данных.
Пример подсказки:
«К каким базам данных у нас есть доступ в нашей среде Trino?»
Пример:
Ответ:
список_схем
Перечислите все схемы в каталоге, что поможет вам эффективно ориентироваться в иерархии данных.
Пример подсказки:
«Какие схемы или наборы данных доступны в каталоге tpch?»
Пример:
Ответ:
список_таблиц
Перечислите все таблицы в схеме, чтобы получить представление о доступных наборах данных.
Пример подсказки:
«Какие таблицы доступны в схеме tpch tiny? Мне нужно знать, какие данные мы можем запросить».
Пример:
Ответ:
получить_таблицу_схему
Получите схему таблицы, понимая структуру ваших данных для лучшего планирования запросов.
Пример подсказки:
«Какие столбцы есть в таблице клиентов? Мне нужно знать типы данных и структуру, прежде чем писать запрос».
Пример:
Ответ:
Эта информация бесценна для понимания имен столбцов, типов данных и ограничений допустимости значений NULL перед написанием запросов к таблице.
Пример «от начала до конца»
Вот полный пример взаимодействия, показывающий, как помощник на основе искусственного интеллекта может использовать эти инструменты для ответа на бизнес-вопрос:
Запрос пользователя: «Можете ли вы помочь мне проанализировать наших крупнейших клиентов? Я хочу узнать 5 лучших клиентов с самыми большими остатками на счетах».
Рабочий процесс AI Assistant:
Сначала ознакомьтесь с доступными каталогами
> Using list_catalogs tool > Discovers tpch catalogЗатем найдите доступные схемы
> Using list_schemas tool with catalog "tpch" > Discovers "tiny" schemaИзучите доступные таблицы
> Using list_tables tool with catalog "tpch" and schema "tiny" > Finds "customer" tableПроверьте схему таблицы клиентов
> Using get_table_schema tool > Discovers "custkey", "name", "acctbal" and other columnsНаконец, выполните запрос
> Using execute_query tool with: > "SELECT custkey, name, acctbal FROM tpch.tiny.customer ORDER BY acctbal DESC LIMIT 5"Возвращает результаты пользователю:
The top 5 customers with highest account balances are: 1. Customer #65 (Customer#000000065): $9,222.78 2. Customer #13 (Customer#000000013): $8,270.47 3. Customer #89 (Customer#000000089): $7,990.56 4. Customer #11 (Customer#000000011): $7,912.91 5. Customer #82 (Customer#000000082): $7,629.41
Этот непрерывный рабочий процесс демонстрирует, как инструменты MCP позволяют помощникам на базе искусственного интеллекта исследовать и запрашивать данные в диалоговой форме.
Конфигурация
Сервер можно настроить с помощью следующих переменных среды:
Переменная | Описание | По умолчанию |
ТРИНО_ХОСТ | Имя хоста сервера Trino | локальный хост |
ТРИНО_ПОРТ | Порт сервера Trino | 8080 |
ТРИНО_ПОЛЬЗОВАТЕЛЬ | Пользователь Трино | трино |
ТРИНО_ПАРОЛЬ | Пароль Трино | (пустой) |
ТРИНО_КАТАЛОГ | Каталог по умолчанию | память |
ТРИНО_СХЕМА | Схема по умолчанию | по умолчанию |
ТРИНО_СХЕМА | Схема подключения (http/https) | https |
ТРИНО_SSL | Включить SSL | истинный |
TRINO_SSL_INSECURE | Разрешить небезопасный SSL | истинный |
TRINO_ALLOW_WRITE_QUERIES | Разрешить SQL-запросы, не предназначенные только для чтения | ЛОЖЬ |
TRINO_QUERY_TIMEOUT | Время ожидания запроса в секундах | 30 |
MCP_ТРАНСПОРТ | Метод транспортировки (stdio/http) | стдио |
MCP_PORT | HTTP-порт для http-транспорта | 9097 |
MCP_HOST | Хост для HTTP-обратных вызовов | локальный хост |
Примечание : если для
TRINO_SCHEMEустановлено значение «https»,TRINO_SSLавтоматически устанавливается значение true независимо от предоставленного значения.
Важно : режим соединения по умолчанию — HTTPS. Если вы используете сервер Trino только с HTTP, необходимо установить
TRINO_SCHEME=httpв переменных среды.
Примечание по безопасности : по умолчанию разрешены только запросы только для чтения (SELECT, SHOW, DESCRIBE, EXPLAIN) для предотвращения SQL-инъекции. Если вам нужно выполнить операции записи или другие запросы, не требующие чтения, установите
TRINO_ALLOW_WRITE_QUERIES=true, но учтите, что это обходит эту защиту безопасности.
Для интеграции курсора : при использовании с курсором установите
MCP_TRANSPORT=httpи подключитесь к конечной точке/sse. Сервер будет автоматически обрабатывать соединения SSE (Server-Sent Events).
Внося вклад
Вклады приветствуются! Пожалуйста, не стесняйтесь отправлять запрос на включение.
Лицензия
Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.
CI/CD и релизы
В этом проекте используются GitHub Actions для непрерывной интеграции и GoReleaser для автоматизированных выпусков.
Непрерывные проверки интеграции
Наш конвейер непрерывной интеграции выполняет следующие проверки всех PR и фиксирует изменения в основной ветке:
Качество кода
Линтинг : использование golangci-lint для проверки распространенных проблем кода и нарушений стиля
Проверка модуля Go : обеспечение правильной поддержки go.mod и go.sum
Форматирование : проверка правильности форматирования кода с помощью gofmt
Безопасность
Сканирование уязвимостей : использование govulncheck для проверки известных уязвимостей в зависимостях
Сканирование зависимостей : использование Trivy для сканирования уязвимостей в зависимостях (КРИТИЧЕСКИХ, ВЫСОКИХ и СРЕДНИХ)
Генерация SBOM : создание спецификации программного обеспечения для отслеживания зависимостей
SLSA Provenance : создание проверяемого происхождения сборки для безопасности цепочки поставок
Тестирование
Модульные тесты : запуск тестов с обнаружением гонок и отчетами о покрытии кода
Проверка сборки : обеспечение успешной сборки кодовой базы
Безопасность CI/CD
Наименьшие привилегии : рабочие процессы выполняются с минимальными требуемыми разрешениями.
Закрепленные версии : все действия GitHub используют определенные версии для предотвращения атак на цепочку поставок.
Обновления зависимостей : Автоматические обновления зависимостей через Dependabot
Процесс выпуска
Когда изменения объединяются с основной веткой:
Проверки CI проводятся для подтверждения качества и безопасности кода.
В случае успеха автоматически создается новый релиз со следующими данными:
Семантическое версионирование на основе сообщений о коммитах
Бинарные сборки для нескольких платформ
Публикация образа Docker в GitHub Container Registry
SBOM и подтверждение происхождения