mcp-trino

by tuannvm

Integrations

  • Allows AI assistants to execute SQL queries against a Trino distributed SQL query engine, with support for catalog/schema/table discovery and schema inspection.

Сервер Trino MCP в Go

Высокопроизводительный сервер Model Context Protocol (MCP) для Trino, реализованный на Go. Этот проект позволяет помощникам ИИ беспрепятственно взаимодействовать с распределенным механизмом SQL-запросов Trino с помощью стандартизированных инструментов MCP.

Обзор

Этот проект реализует сервер Model Context Protocol (MCP) для Trino на Go. Он позволяет помощникам ИИ получать доступ к распределенному движку SQL-запросов Trino через стандартизированные инструменты MCP.

Trino (ранее PrestoSQL) — это мощный механизм распределенных SQL-запросов, предназначенный для быстрой аналитики больших наборов данных.

Функции

  • ✅ Реализация MCP-сервера на Go
  • ✅ Выполнение SQL-запросов Trino с помощью инструментов MCP
  • ✅ Каталог, схема и обнаружение таблиц
  • ✅ Поддержка Docker-контейнеров
  • ✅ Поддерживает транспорты STDIO и HTTP
  • ✅ Поддержка событий, отправленных сервером (SSE), для Cursor и других клиентов MCP
  • ✅ Совместимо с Cursor, Claude Desktop, Windsurf, ChatWise и любыми MCP-совместимыми клиентами.

Установка

Homebrew (macOS и Linux)

Самый простой способ установить mcp-trino — использовать Homebrew:

# Add the tap repository brew tap tuannvm/mcp # Install mcp-trino brew install mcp-trino

Для обновления до последней версии:

brew update && brew upgrade mcp-trino

Альтернативные методы установки

Ручная загрузка
  1. Загрузите соответствующий двоичный файл для вашей платформы со страницы релизов GitHub .
  2. Поместите двоичный файл в каталог, включенный в ваш PATH (например, /usr/local/bin в Linux/macOS)
  3. Сделайте его исполняемым ( chmod +x mcp-trino в Linux/macOS)
Из источника
git clone https://github.com/tuannvm/mcp-trino.git cd mcp-trino make build # Binary will be in ./bin/

Загрузки

Вы можете загрузить готовые двоичные файлы для вашей платформы:

ПлатформаАрхитектураСсылка для скачивания
macOSx86_64 (Интел)Скачать
macOSARM64 (Apple Silicon)Скачать
линуксx86_64Скачать
линуксARM64Скачать
Окнаx86_64Скачать

Или посмотрите все доступные загрузки на странице релизов GitHub .

Интеграция МКП

Этот MCP-сервер может быть интегрирован с несколькими приложениями ИИ:

Использование образа Docker

Чтобы использовать образ Docker вместо локального двоичного файла:

{ "mcpServers": { "mcp-trino": { "command": "docker", "args": ["run", "--rm", "-i", "-e", "TRINO_HOST=<HOST>", "-e", "TRINO_PORT=<PORT>", "-e", "TRINO_USER=<USERNAME>", "-e", "TRINO_PASSWORD=<PASSWORD>", "-e", "TRINO_SCHEME=http", "ghcr.io/tuannvm/mcp-trino:latest"], "env": {} } } }

Примечание : специальное DNS-имя host.docker.internal позволяет контейнеру подключаться к службам, запущенным на хост-машине. Если ваш сервер Trino запущен в другом месте, замените на соответствующий хост.

Эту конфигурацию Docker можно использовать в любом из перечисленных ниже приложений.

Курсор

Для использования с Cursor создайте или отредактируйте ~/.cursor/mcp.json :

{ "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }

Замените переменные среды на конкретную конфигурацию Trino.

Для транспортного режима HTTP+SSE (поддерживается для интеграции курсора):

{ "mcpServers": { "mcp-trino-http": { "url": "http://localhost:9097/sse" } } }

Затем запустите сервер в отдельном терминале с помощью:

MCP_TRANSPORT=http TRINO_HOST=<HOST> TRINO_PORT=<PORT> TRINO_USER=<USERNAME> TRINO_PASSWORD=<PASSWORD> mcp-trino

Клод Десктоп

Для использования с Claude Desktop отредактируйте файл конфигурации Claude:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{ "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }

После обновления конфигурации перезапустите Claude Desktop. Вы должны увидеть инструменты MCP, доступные в меню инструментов.

Виндсерфинг

Для использования с Windsurf создайте или отредактируйте mcp_config.json :

{ "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }

Перезапустите Windsurf, чтобы применить изменения. Инструменты Trino MCP будут доступны для Cascade AI.

ChatWise

Для использования с ChatWise выполните следующие действия:

  1. Откройте ChatWise и перейдите в «Настройки».
  2. Перейдите в раздел «Инструменты».
  3. Нажмите значок «+», чтобы добавить новый инструмент.
  4. Выберите «Командная строка MCP»
  5. Настройте, указав следующие данные:
    • ID: mcp-trino (или любое другое имя по вашему желанию)
    • Команда: mcp-trino
    • Аргументы: (оставьте пустым)
    • Env: Добавьте следующие переменные среды:
      TRINO_HOST=<HOST> TRINO_PORT=<PORT> TRINO_USER=<USERNAME> TRINO_PASSWORD=<PASSWORD>

Кроме того, вы можете импортировать конфигурацию из JSON:

  1. Скопируйте этот JSON в буфер обмена:
    { "mcpServers": { "mcp-trino": { "command": "mcp-trino", "args": [], "env": { "TRINO_HOST": "<HOST>", "TRINO_PORT": "<PORT>", "TRINO_USER": "<USERNAME>", "TRINO_PASSWORD": "<PASSWORD>" } } } }
  2. В разделе «Настройки ChatWise» > «Инструменты» нажмите значок «+».
  3. Выберите «Импорт JSON из буфера обмена».
  4. Чтобы включить инструмент, переключите переключатель рядом с ним.

После включения нажмите на значок молотка под полем ввода в ChatWise, чтобы получить доступ к инструментам Trino MCP.

Доступные инструменты MCP

Сервер предоставляет следующие инструменты MCP:

выполнить_запрос

Выполнение SQL-запроса к Trino с полной поддержкой SQL для сложных аналитических запросов.

Пример подсказки:

«Сколько у нас клиентов в каждом регионе? Можете ли вы отобразить их в порядке убывания?»

Пример:

{ "query": "SELECT region, COUNT(*) as customer_count FROM tpch.tiny.customer GROUP BY region ORDER BY customer_count DESC" }

Ответ:

{ "columns": ["region", "customer_count"], "data": [ ["AFRICA", 5], ["AMERICA", 5], ["ASIA", 5], ["EUROPE", 5], ["MIDDLE EAST", 5] ] }

список_каталогов

Перечислите все каталоги, доступные на сервере Trino, и получите полное представление о вашей экосистеме данных.

Пример подсказки:

«К каким базам данных у нас есть доступ в нашей среде Trino?»

Пример:

{}

Ответ:

{ "catalogs": ["tpch", "memory", "system", "jmx"] }

список_схем

Перечислите все схемы в каталоге, что поможет вам эффективно ориентироваться в иерархии данных.

Пример подсказки:

«Какие схемы или наборы данных доступны в каталоге tpch?»

Пример:

{ "catalog": "tpch" }

Ответ:

{ "schemas": ["information_schema", "sf1", "sf100", "sf1000", "tiny"] }

список_таблиц

Перечислите все таблицы в схеме, чтобы получить представление о доступных наборах данных.

Пример подсказки:

«Какие таблицы доступны в схеме tpch tiny? Мне нужно знать, какие данные мы можем запросить».

Пример:

{ "catalog": "tpch", "schema": "tiny" }

Ответ:

{ "tables": ["customer", "lineitem", "nation", "orders", "part", "partsupp", "region", "supplier"] }

получить_таблицу_схему

Получите схему таблицы, понимая структуру ваших данных для лучшего планирования запросов.

Пример подсказки:

«Какие столбцы есть в таблице клиентов? Мне нужно знать типы данных и структуру, прежде чем писать запрос».

Пример:

{ "catalog": "tpch", "schema": "tiny", "table": "customer" }

Ответ:

{ "columns": [ { "name": "custkey", "type": "bigint", "nullable": false }, { "name": "name", "type": "varchar", "nullable": false }, { "name": "address", "type": "varchar", "nullable": false }, { "name": "nationkey", "type": "bigint", "nullable": false }, { "name": "phone", "type": "varchar", "nullable": false }, { "name": "acctbal", "type": "double", "nullable": false }, { "name": "mktsegment", "type": "varchar", "nullable": false }, { "name": "comment", "type": "varchar", "nullable": false } ] }

Эта информация бесценна для понимания имен столбцов, типов данных и ограничений допустимости значений NULL перед написанием запросов к таблице.

Пример «от начала до конца»

Вот полный пример взаимодействия, показывающий, как помощник на основе искусственного интеллекта может использовать эти инструменты для ответа на бизнес-вопрос:

Запрос пользователя: «Можете ли вы помочь мне проанализировать наших крупнейших клиентов? Я хочу узнать 5 лучших клиентов с самыми большими остатками на счетах».

Рабочий процесс AI Assistant:

  1. Сначала ознакомьтесь с доступными каталогами
    > Using list_catalogs tool > Discovers tpch catalog
  2. Затем найдите доступные схемы
    > Using list_schemas tool with catalog "tpch" > Discovers "tiny" schema
  3. Изучите доступные таблицы
    > Using list_tables tool with catalog "tpch" and schema "tiny" > Finds "customer" table
  4. Проверьте схему таблицы клиентов
    > Using get_table_schema tool > Discovers "custkey", "name", "acctbal" and other columns
  5. Наконец, выполните запрос
    > Using execute_query tool with: > "SELECT custkey, name, acctbal FROM tpch.tiny.customer ORDER BY acctbal DESC LIMIT 5"
  6. Возвращает результаты пользователю:
    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локальный хост
ТРИНО_ПОРТПорт сервера Trino8080
ТРИНО_ПОЛЬЗОВАТЕЛЬПользователь Тринотрино
ТРИНО_ПАРОЛЬПароль Трино(пустой)
ТРИНО_КАТАЛОГКаталог по умолчаниюпамять
ТРИНО_СХЕМАСхема по умолчаниюпо умолчанию
ТРИНО_СХЕМАСхема подключения (http/https)https
ТРИНО_SSLВключить SSLистинный
TRINO_SSL_INSECUREРазрешить небезопасный SSLистинный
TRINO_ALLOW_WRITE_QUERIESРазрешить SQL-запросы, не предназначенные только для чтенияЛОЖЬ
MCP_ТРАНСПОРТМетод транспортировки (stdio/http)стдио
MCP_PORTHTTP-порт для 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

Процесс выпуска

Когда изменения объединяются с основной веткой:

  1. Проверки CI проводятся для подтверждения качества и безопасности кода.
  2. В случае успеха автоматически создается новый релиз со следующими данными:
    • Семантическое версионирование на основе сообщений о коммитах
    • Бинарные сборки для нескольких платформ
    • Публикация образа Docker в GitHub Container Registry
    • SBOM и подтверждение происхождения

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    Go server implementing Model Context Protocol (MCP) for filesystem operations.
    Last updated -
    228
    Go
    MIT License
  • -
    security
    A
    license
    -
    quality
    This server implements the Model Context Protocol (MCP) to handle asynchronous tasks with real-time status tracking, robust error handling, and automatic resource management.
    Last updated -
    2
    1
    JavaScript
    MIT License
  • A
    security
    F
    license
    A
    quality
    A Model Context Protocol (MCP) server that provides a simple sleep/wait tool, useful for adding delays between operations such as waiting between API calls or testing eventually consistent systems.
    Last updated -
    1
    6
    7
    JavaScript
  • -
    security
    -
    license
    -
    quality
    A Model Context Protocol (MCP) server that interacts with system APIs, allowing users to check connections, search employees, register breakfast, and update chemical information by shifts.
    Last updated -
    2

View all related MCP servers

ID: sf23b6j9h9