Skip to main content
Glama

mcp-trino

by tuannvm
MIT License
64
  • Apple
  • Linux

Сервер Trino MCP в Go

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

Статус рабочего процесса GitHub Перейти к версии Trivy Скан СЛСА 3 Перейти Отчетная Карточка Перейти к ссылке Образ Докера Релиз GitHub Лицензия: Массачусетский технологический институт

Обзор

Этот проект реализует сервер 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/

Загрузки

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

Платформа

Архитектура

Ссылка для скачивания

macOS

x86_64 (Интел)

Скачать

macOS

ARM64 (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

локальный хост

ТРИНО_ПОРТ

Порт сервера 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

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

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

  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 -
    511
    MIT License
  • -
    security
    A
    license
    -
    quality
    An MCP server that enables listing and querying Trino tables using Python, providing access to data resources through the Model-Control-Protocol.
    Last updated -
    17
    MIT License
  • -
    security
    A
    license
    -
    quality
    A Model Context Protocol (MCP) server that allows AI assistants like Claude to interact with Go's Language Server Protocol (LSP) and benefit from advanced Go code analysis features.
    Last updated -
    43
    Apache 2.0
  • -
    security
    A
    license
    -
    quality
    This is a Model Context Protocol (MCP) server implemented in Go, providing a tool to analyze Go pprof performance profiles.
    Last updated -
    33
    MIT License
    • Linux
    • Apple

View all related MCP servers

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/tuannvm/mcp-trino'

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