项目简介
本项目提供了一个基于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客户端集成。
安装步骤
- 确保您的系统已安装 Python 3.9 或更高版本,以及 'uv' 包管理器(推荐,安装命令:'pip install uv')。
- 克隆此GitHub仓库到本地:
git clone https://github.com/Dataring-engineering/mcp-server-trino.git - 进入项目目录:
cd mcp-server-trino - 使用 '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协议返回给客户端。
信息
分类
数据库与文件