Trino MCP Navi
A Model Context Protocol (MCP) server for Trino databases - gives AI assistants direct access to query and explore your data warehouse
Installation
npx trino-mcp-naviAsk AI about Trino MCP Navi
Powered by Claude Β· Grounded in docs
I know everything about Trino MCP Navi. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
π Trino MCP Server
A Model Context Protocol (MCP) server that gives AI assistants (like Claude in Cursor) direct access to query and explore Trino/Presto databases.
π‘ No installation required! Just configure and run with
uvx.
β¨ Features
- π Schema Discovery - Explore schemas, tables, and columns
- π Smart Exploration - Get schema + sample data in one call
- β‘ Safe Query Testing - Automatic LIMIT for exploration queries
- π Data Profiling - Null %, distinct counts, top values
- πΎ Export Results - Save to CSV, Excel, JSON, or Parquet
- π Encryption Check - Detect encrypted columns
- π Query History - Find frequently used queries
π Quick Start (3 minutes)
Prerequisites
- Cursor IDE or Claude Desktop
- Trino database credentials
Step 1: Install uv (One-time, 30 seconds)
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
π‘
uvis a fast Python package manager. Theuvxcommand lets you run Python tools without installing them permanently.
Step 2: Find your uvx path
which uvx
# Usually: ~/.local/bin/uvx (macOS/Linux) or %USERPROFILE%\.local\bin\uvx (Windows)
Step 3: Configure Cursor
Open your Cursor MCP settings:
macOS: ~/.cursor/mcp.json
Windows: %APPDATA%\Cursor\mcp.json
Add this config (replace the uvx path with YOUR path from Step 2):
{
"mcpServers": {
"trino": {
"command": "/Users/YOUR_USERNAME/.local/bin/uvx",
"args": ["trino-mcp-navi"],
"env": {
"TRINO_HOST": "your-trino-host.company.com",
"TRINO_PORT": "443",
"TRINO_USER": "your.email@company.com",
"TRINO_CATALOG": "awsdatacatalog",
"TRINO_DEFAULT_SCHEMA": "default"
}
}
}
}
β οΈ Important: Use the full path to
uvx(not just"uvx"). Cursor doesn't inherit your shell's PATH.
Step 4: Restart Cursor
Restart Cursor completely (close and reopen) to load the MCP server.
Step 5: Test Connection
In Cursor's AI chat, type:
Test my Trino connection
The AI will use mcp_trino_test_connection and confirm the connection.
That's it! π No pip install, no cloning repos.
π§ Configuration Options
| Environment Variable | Required | Default | Description |
|---|---|---|---|
TRINO_HOST | β | - | Trino server hostname |
TRINO_PORT | β | 8080 | Server port (usually 443 for HTTPS) |
TRINO_USER | β | - | Your username (usually email) |
TRINO_PASSWORD | β | - | Password (if using basic auth) |
TRINO_CATALOG | β | awsdatacatalog | Default catalog |
TRINO_DEFAULT_SCHEMA | β | default | Default schema |
TRINO_HTTP_SCHEME | β | https | http or https |
TRINO_FALLBACK_HOST | β | - | Backup host if primary fails |
π Available Tools (18 Total)
π Discovery Tools
| Tool | Description |
|---|---|
test_connection | Verify Trino connectivity |
get_all_schemas | List all schemas in catalog |
get_tables_in_schema | List tables in a schema |
describe_table | Get column definitions |
explore_table | Recommended: Schema + sample data in one call |
search_catalog | Search for tables/columns by name |
π Data Quality & Analytics
| Tool | Description |
|---|---|
profile_column | Null %, distinct values, top 5 values |
profile_table | Row count, null analysis per column |
get_table_stats | Partitions, distinct values, distribution |
get_frequent_queries | Find how others query this table |
check_encryption | Check for encrypted columns |
β‘ Query Execution
| Tool | Description |
|---|---|
test_query | Quick test with auto-LIMIT (safe) |
run_trino_query | Execute query, return results |
save_query_results | Execute + export to CSV/Excel/JSON/Parquet |
execute_sql_file | Run SQL from a file |
π Performance & Schema
| Tool | Description |
|---|---|
explain_query | Get execution plan |
get_query_history | Recent queries from session |
get_table_ddl | SHOW CREATE TABLE |
compare_tables | Compare schemas of two tables |
π― Example Usage
Explore a Table
Show me the schema and sample data from the users table in analytics schema
β AI uses explore_table(table_name="users", schema_name="analytics")
Run a Query
Get the top 10 customers by revenue from last month
β AI uses run_trino_query with appropriate SQL
Profile Data Quality
What's the null rate for email column in customers table?
β AI uses profile_column(table_name="customers", column_name="email", schema_name="...")
Search for Tables
Find all tables with "order" in the name
β AI uses search_catalog(search_term="order", object_type="table")
βοΈ Cloud Hosting (Zero Install for Users)
Deploy the server to the cloud so users don't need to install anything!
Deploy to Railway (Recommended)
- Click the button above or go to railway.app
- Connect your GitHub repo
- Set environment variables:
TRINO_HOST,TRINO_PORT,TRINO_USER,TRINO_CATALOG
- Deploy! You'll get a URL like
https://trino-mcp-navi.up.railway.app
Deploy to Render
- Go to render.com
- Create new Web Service β Connect GitHub repo
- Use the
render.yamlblueprint - Set environment variables
- Deploy!
After Deployment - User Config
Users add this to their Cursor mcp.json - no installation needed!
{
"mcpServers": {
"trino": {
"url": "https://your-deployment-url.railway.app/sse"
}
}
}
That's it! The server handles everything remotely.
π Alternative: Run with Python
If you prefer not to use uvx:
# Install
pip install trino-mcp-navi
# Configure Cursor with python instead of uvx
{
"mcpServers": {
"trino": {
"command": "python",
"args": ["-m", "trino_mcp_navi"],
"env": { ... }
}
}
}
π§ Troubleshooting
"Connection refused" Error
- Check
TRINO_HOSTis correct - Verify
TRINO_PORT(usually 443 for HTTPS, 8080 for HTTP) - Ensure network/VPN access to Trino server
"Authentication failed"
- Verify
TRINO_USERandTRINO_PASSWORD - Some Trino setups use SSO - check with your admin
MCP Not Loading in Cursor
- Check you have
uvinstalled:uv --version - Verify the JSON syntax in
mcp.jsonis valid - Check Cursor logs:
Help β Toggle Developer Tools β Console - Restart Cursor completely
"uvx: command not found"
Install uv first:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
π Security Notes
- Never commit credentials to version control
- Use environment variables for sensitive data
- The server connects via HTTPS by default
- All queries go directly to your Trino - no external services
π€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
π License
MIT License - see the LICENSE file for details.
π Support
If you encounter issues:
- Check the troubleshooting section above
- Verify your Trino credentials work outside of Cursor
- Test with a simple query:
SELECT 1 - Open an issue on GitHub
Made with β€οΈ for data analysts and engineers
