](https://mseep.ai/app/alaturqua-mcp-trino-python)
MCP Trino服务器
](https://smithery.ai/server/@alaturqua/mcp-trino-python)   ](https://github.com/alaturqua/mcp-trino-python/pkgs/container/mcp-trino-python) 
MCP Trino服务器是 模型上下文协议(MCP) 与Trino和Iceberg无缝集成的服务器,实现了高级 通过标准接口实现数据探索、查询和表维护功能。
用例
- Trino中的交互式数据探索和分析
- 自动冰山表维护和优化
- 构建与Trino数据库交互的人工智能工具
- 使用正确的结果格式执行和管理SQL查询
先决条件
- 正在运行的Trino服务器(或用于本地开发的Docker Compose)
- Python 3.12或更高版本
- Docker(可选,用于容器化部署)
快速开始
1.克隆存储库
git clone https://github.com/alaturqua/mcp-trino-python.git
cd mcp-trino-python2.创建环境文件
创建一个 .env 根目录中的文件:
TRINO_HOST=localhost
TRINO_PORT=8080
TRINO_USER=trino
TRINO_CATALOG=tpch
TRINO_SCHEMA=tiny3.在本地运行Trino(可选)
docker-compose up -d trino这将启动Trino服务器 localhost:8080 具有样本TPC-H和TPC-DS数据。
安装
通过Smithery安装
通过以下方式自动安装适用于Claude Desktop的MCP Trino服务器 铁匠铺:
npx -y @smithery/cli install @alaturqua/mcp-trino-python --client claude使用紫外线(推荐)
uv sync
uv run src/server.py使用pip
pip install -e .
python src/server.py运输方式
服务器支持三种传输模式:
| 运输 | 描述 | 用例 |
|---|---|---|
stdio | 标准I/O(默认) | VS代码、克劳德桌面、本地MCP客户端 |
streamable-http | 带流媒体的HTTP | 远程访问、web客户端、Docker |
sse | 服务器发送事件 | 传统HTTP传输 |
乘坐不同的交通工具
# stdio (default) - for VS Code and Claude Desktop
python src/server.py
# Streamable HTTP - for remote/web access
python src/server.py --transport streamable-http --host 0.0.0.0 --port 8000
# SSE - legacy HTTP transport
python src/server.py --transport sse --host 0.0.0.0 --port 8000使用VS代码
添加到您的VS代码设置(Ctrl+Shift+P → Preferences: Open User Settings (JSON)):
{
"mcp": {
"servers": {
"mcp-trino-python": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"--with",
"trino",
"--with",
"loguru",
"mcp",
"run",
"/path/to/mcp-trino-python/src/server.py"
],
"envFile": "/path/to/mcp-trino-python/.env"
}
}
}
}或添加到 .vscode/mcp.json 在您的工作空间中(没有 mcp 包装器密钥)。
使用Claude Desktop
添加到您的Claude Desktop配置中:
{
"mcpServers": {
"trino": {
"command": "python",
"args": ["./src/server.py"],
"env": {
"TRINO_HOST": "your-trino-host",
"TRINO_PORT": "8080",
"TRINO_USER": "trino"
}
}
}
}Docker使用
塑造形象
docker build -t mcp-trino-python .使用stdio运行(用于VS代码)
docker run -i --rm \
-e TRINO_HOST=host.docker.internal \
-e TRINO_PORT=8080 \
-e TRINO_USER=trino \
mcp-trino-python使用流式HTTP运行
docker run -p 8000:8000 \
-e TRINO_HOST=host.docker.internal \
-e TRINO_PORT=8080 \
mcp-trino-python \
--transport streamable-http --host 0.0.0.0 --port 8000Docker Compose
# Start Trino + MCP server with Streamable HTTP
docker-compose up -d
# Start with SSE transport
docker-compose --profile sse up -d
# Run stdio for testing
docker-compose --profile stdio run --rm mcp-trino-stdioVS代码与Docker
{
"mcp": {
"servers": {
"mcp-trino-python": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--network",
"mcp-trino-python_trino-network",
"-e",
"TRINO_HOST=trino",
"-e",
"TRINO_PORT=8080",
"-e",
"TRINO_USER=trino",
"mcp-trino-python"
]
}
}
}
}配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
| TRINO_HOST | TRINO服务器主机名 | 本地主机 |
| TRINO_PORT | TRINO服务器端口 | 8080 |
| trin/user | Trino用户名 | Trino |
| TRINO_CATALOG | 默认目录 | 无 |
| TRINO_SCHEMA | 默认模式 | 无 |
| TRINO_HTTP_SCHEME | HTTP方案(HTTP/https) | HTTP |
| TRINO_PASSWORD | TRINO密码 | 无 |
工具
查询和探索工具
- show_catalogs
- 列出所有可用目录 - 无需参数
- show_schemas
- 列出目录中的所有架构 - 参数: - catalog:目录名称(字符串,必填)
- show_tables
- 列出架构中的所有表 - 参数: - catalog:目录名称(字符串,必填) - schema:架构名称(字符串,必填)
- describe_table
- 显示详细的表结构和列信息 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- execute_query
- 执行SQL查询并返回格式化结果 - 参数: - query:要执行的SQL查询(字符串,必填)
- show_catalog_tree
- 显示目录、模式和表的层次树视图 - 返回带有视觉指示器的格式化树结构 - 无需参数
- show_create_table
- 显示表的CREATE TABLE语句 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- show_create_view
- 显示视图的CREATE VIEW语句 - 参数: - view:视图名称(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- show_stats
- 显示表的统计信息 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
冰山表维护
- 优化
- 通过压缩小文件优化冰山表 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- 优化参数
- 优化冰山表的清单文件 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- 过期快照
- 从冰山表中删除旧快照 - 参数: - table:表名(字符串,必填) - retention_threshold:年龄阈值(例如“7d”)(字符串,可选) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
冰山元数据检查
- show_table_特性
- 显示冰山表属性 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- show_table_历史
- 显示冰山表历史记录/更改日志 - 包含快照时间、沿袭和祖先信息 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- show_meta_log_entries
- 显示冰山表元数据日志条目 - 包含元数据文件位置和序列信息 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- show_snapshots
- 显示冰山表快照 - 包含快照详细信息,包括操作和清单文件 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- show_manifests
- 显示当前或所有快照的冰山表清单 - 包含清单文件详细信息和数据文件统计信息 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选) - all_snapshots:包括所有快照(布尔值,可选)
- show_partitions
- 显示冰山餐桌隔板 - 包含分区统计信息和文件计数 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- show_files
- 在当前快照中显示冰山表数据文件 - 包含详细的文件元数据和列统计信息 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
- show_entrys
- 显示当前或所有快照的冰山表清单条目 - 包含条目状态和详细的文件度量 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选) - all_snapshots:包括所有快照(布尔值,可选)
- show_refs
- 显示冰山表引用(分支和标签) - 包含参考配置和快照映射 - 参数: - table:表名(字符串,必填) - catalog:目录名称(字符串,可选) - schema:架构名称(字符串,可选)
查询历史
- show_query_历史
- 获取已执行查询的历史记录 - 参数: - limit:要返回的最大查询数(数字,可选)
许可证
此项目根据Apache 2.0许可证获得许可。请参阅许可文件了解完整条款。

