What is Trino MCP Server?
The Trino MCP Server is a Model Context Protocol (MCP) server that integrates with Trino and Iceberg, enabling advanced data exploration, querying, and table maintenance capabilities through a standard interface.
How to use Trino MCP Server?
To use the Trino MCP Server, you need to have a running Trino server and Python 3.11 or higher. You can install it locally, use it with VS Code, or run it in a Docker container.
Key features of Trino MCP Server?
- Seamless integration with Trino and Iceberg for data exploration.
- Automated Iceberg table maintenance and optimization.
- Execution and management of SQL queries with formatted results.
Use cases of Trino MCP Server?
- Interactive data exploration and analysis in Trino.
- Automated maintenance of Iceberg tables.
- Building AI-powered tools that interact with Trino databases.
- Executing and managing SQL queries effectively.
FAQ from Trino MCP Server?
- What are the prerequisites for using the Trino MCP Server?
You need a running Trino server, Python 3.11 or higher, and optionally Docker for containerized deployment.
- Can I run the server in a Docker container?
Yes! The server can be built and run using the provided Dockerfile.
- Is there a license for this project?
Yes, the project is licensed under the MIT License.
MCP Trino Server
The MCP Trino Server is a Model Context Protocol (MCP) server that provides seamless integration with Trino and Iceberg, enabling advanced data exploration, querying, and table maintenance capabilities through a standard interface.
Use Cases
- Interactive data exploration and analysis in Trino
- Automated Iceberg table maintenance and optimization
- Building AI-powered tools that interact with Trino databases
- Executing and managing SQL queries with proper result formatting
Prerequisites
- A running Trino server (or Docker Compose for local development)
- Python 3.11 or higher
- Docker (optional, for containerized deployment)
Installation
Running Trino Locally
The easiest way to get started is to use the included Docker Compose configuration to run Trino locally:
docker-compose up -d
This will start a Trino server on localhost:8080
. You can now proceed with configuring the MCP server.
Usage with VS Code
For quick installation, you can add the following configuration to your VS Code settings. You can do this by pressing Ctrl + Shift + P
and typing Preferences: Open User Settings (JSON)
.
Optionally, you can add it to a file called .vscode/mcp.json
in your workspace. This will allow you to share the configuration with others.
Note that the
mcp
key is not needed in the.vscode/mcp.json
file.
{
"mcp": {
"servers": {
"trino": {
"command": "docker",
"args": ["run", "--rm", "ghcr.io/alaturqua/mcp-trino-python:latest"],
"env": {
"TRINO_HOST": "${input:trino_host}",
"TRINO_PORT": "${input:trino_port}",
"TRINO_USER": "${input:trino_user}"
}
}
}
}
}
Usage with Claude Desktop
Add the following configuration to your Claude Desktop settings:
{
"mcpServers": {
"trino": {
"command": "python",
"args": ["server.py"],
"env": {
"TRINO_HOST": "your-trino-host",
"TRINO_PORT": "8080",
"TRINO_USER": "trino"
}
}
}
}
Configuration
Environment Variables
Variable | Description | Default |
---|---|---|
TRINO_HOST | Trino server hostname | localhost |
TRINO_PORT | Trino server port | 8080 |
TRINO_USER | Trino username | trino |
TRINO_CATALOG | Default catalog | None |
TRINO_SCHEMA | Default schema | None |
TRINO_HTTP_SCHEME | HTTP scheme (http/https) | http |
TRINO_AUTH | Authentication method | None |
Resources
The server provides the following MCP resources:
Catalog and Schema Navigation
-
catalog://main (
list_catalogs
)- Lists all available Trino catalogs
- No parameters required
-
schema://{catalog} (
list_schemas
)- Lists all schemas in the specified catalog
- Parameters:
catalog
: Catalog name (string, required)
-
table://{catalog}/{schema} (
list_tables
)- Lists all tables in the specified schema
- Parameters:
catalog
: Catalog name (string, required)schema
: Schema name (string, required)
Tools
Query and Exploration Tools
-
execute_query
- Execute a SQL query and return formatted results
- Parameters:
query
: SQL query to execute (string, required)
-
show_catalog_tree
- Show a hierarchical tree view of catalogs, schemas, and tables
- Returns a formatted tree structure with visual indicators
- No parameters required
-
show_create_table
- Show the CREATE TABLE statement for a table
- Parameters:
table
: Table name (string, required)catalog
: Catalog name (string, optional)schema
: Schema name (string, optional)
-
show_create_view
- Show the CREATE VIEW statement for a view
- Parameters:
view
: View name (string, required)catalog
: Catalog name (string, optional)schema
: Schema name (string, optional)
-
show_stats
- Show statistics for a table
- Parameters:
table
: Table name (string, required)catalog
: Catalog name (string, optional)schema
: Schema name (string, optional)
Iceberg Table Maintenance
-
optimize
- Optimize an Iceberg table by compacting small files
- Parameters:
table
: Table name (string, required)catalog
: Catalog name (string, optional)schema
: Schema name (string, optional)
-
optimize_manifests
- Optimize manifest files for an Iceberg table
- Parameters:
table
: Table name (string, required)catalog
: Catalog name (string, optional)schema
: Schema name (string, optional)
-
expire_snapshots
- Remove old snapshots from an Iceberg table
- Parameters:
table
: Table name (string, required)retention_threshold
: Age threshold (e.g., "7d") (string, optional)catalog
: Catalog name (string, optional)schema
: Schema name (string, optional)
Query History
- show_query_history
- Get the history of executed queries
- Parameters:
limit
: Maximum number of queries to return (number, optional)
License
This project is licensed under the Apache 2.0 License. Please refer to the LICENSE file for the full terms.