项目简介

本项目提供了一个基于Model Context Protocol (MCP) 的后端服务器实现,它将Trino分布式SQL查询引擎的能力集成到大型语言模型(LLM)应用生态中。通过这个服务器,LLM客户端可以标准化地发现、访问Trino中的数据表,并调用SQL查询工具。

主要功能点

  • 资源暴露: 将配置的Trino目录和模式下的所有数据表列出并作为标准MCP资源提供给客户端。
  • 数据读取: 允许MCP客户端通过资源的URI读取Trino表中数据的前100行。
  • 工具注册: 注册一个名为 'execute_sql' 的MCP工具,使LLM客户端能够执行任意Trino SQL查询。
  • 查询执行: 当客户端调用 'execute_sql' 工具时,服务器将执行指定的SQL,并返回结果或状态信息。
  • 连接配置: Trino连接信息(如主机、端口、用户、目录、模式)通过环境变量进行配置。
  • 协议支持: 支持通过Stdio标准输入/输出流进行MCP协议通信,方便与各种MCP客户端集成。

安装步骤

  1. 确保您的系统已安装 Python 3.9 或更高版本,以及 'uv' 包管理器(推荐,安装命令:'pip install uv')。
  2. 克隆此GitHub仓库到本地:
    git clone https://github.com/Dataring-engineering/mcp-server-trino.git
  3. 进入项目目录:
    cd mcp-server-trino
  4. 使用 'uv' 安装项目依赖:
    uv sync

服务器配置

此MCP服务器通过环境变量获取Trino的连接详情。在MCP客户端的配置中,您需要指定如何启动这个服务器进程,并设置相应的环境变量。

以下是MCP客户端配置文件中针对此服务器的典型配置片段示例(通常位于 'mcpServers' 部分):

{
  "mcpServers": {
    "trino": {
      "command": "uv",
      "args": [
        "--directory",
        "<path_to_mcp_server_trino_repo>",
        "run",
        "mcp_server_trino"
      ],
      "env": {
        "TRINO_HOST": "<Trino服务器主机名或IP>",
        "TRINO_PORT": "<Trino服务器端口,例如 8080>",
        "TRINO_USER": "<连接Trino所需的用户名,必需>",
        "TRINO_PASSWORD": "<连接Trino所需的密码,可选,取决于您的Trino认证设置>",
        "TRINO_CATALOG": "<要访问的默认Trino Catalog名称,例如 hive, tpch,必需>",
        "TRINO_SCHEMA": "<要访问的默认Trino Schema名称,例如 default, public,必需>"
      }
    }
  }
}

请将示例中 '<...>' 部分替换为您的实际值。'command' 和 'args' 指示您的MCP客户端如何执行并启动 'mcp_server_trino' 应用,而 'env' 部分则为该进程设置运行所需的Trino连接环境变量。

基本使用方法

配置完成后,启动您的MCP客户端。客户端将自动启动并连接到Trino MCP服务器。之后,LLM即可通过MCP协议与服务器交互:

  • LLM可以通过调用服务器的 'list_resources' 方法来发现Trino中的表资源列表。
  • LLM可以通过调用 'read_resource' 方法并提供表的URI(格式如 'trino://table_name/data')来获取表的数据样本。
  • LLM可以通过调用 'list_tools' 方法来发现可用的 'execute_sql' 工具。
  • LLM可以通过调用 'call_tool' 方法,指定工具名为 'execute_sql' 并在参数中提供 '{"query": "SELECT * FROM my_table LIMIT 10"}' 来执行SQL查询。

服务器负责与Trino建立连接、执行请求的操作并将结果(如表数据、查询结果或错误信息)通过MCP协议返回给客户端。

信息

分类

数据库与文件