Skip to main content

A Model Context Protocol (MCP) connector for Trino, enabling seamless integration between MCP-compliant services and Trino query engine

Project description

MseeP.ai Security Assessment Badge

MCP Trino Server

smithery badge Python 3.12+ VS Code Docker License

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

  1. A running Trino server (or Docker Compose for local development)
  2. Python 3.12 or higher
  3. Docker (optional, for containerized deployment)

Quick Start

1. Clone the Repository

git clone https://github.com/alaturqua/mcp-trino-python.git
cd mcp-trino-python

2. Create Environment File

Create a .env file in the root directory:

TRINO_HOST=localhost
TRINO_PORT=8080
TRINO_USER=trino
TRINO_CATALOG=tpch
TRINO_SCHEMA=tiny

3. Run Trino Locally (Optional)

docker-compose up -d trino

This starts a Trino server on localhost:8080 with sample TPC-H and TPC-DS data.

Installation

Installing via Smithery

To install MCP Trino Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @alaturqua/mcp-trino-python --client claude

Using uv (Recommended)

uv sync
uv run src/server.py

Using pip

pip install -e .
python src/server.py

Transport Modes

The server supports three transport modes:

Transport Description Use Case
stdio Standard I/O (default) VS Code, Claude Desktop, local MCP clients
streamable-http HTTP with streaming Remote access, web clients, Docker
sse Server-Sent Events Legacy HTTP transport

Running with Different Transports

# 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

Usage with VS Code

Add to your VS Code settings (Ctrl+Shift+PPreferences: 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"
      }
    }
  }
}

Or add to .vscode/mcp.json in your workspace (without the mcp wrapper key).

Usage with Claude Desktop

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "trino": {
      "command": "python",
      "args": ["./src/server.py"],
      "env": {
        "TRINO_HOST": "your-trino-host",
        "TRINO_PORT": "8080",
        "TRINO_USER": "trino"
      }
    }
  }
}

Docker Usage

Build the Image

docker build -t mcp-trino-python .

Run with stdio (for VS Code)

docker run -i --rm \
  -e TRINO_HOST=host.docker.internal \
  -e TRINO_PORT=8080 \
  -e TRINO_USER=trino \
  mcp-trino-python

Run with Streamable 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 8000

Docker 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-stdio

VS Code with 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"
        ]
      }
    }
  }
}

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_PASSWORD Trino password None

Tools

Query and Exploration Tools

  • show_catalogs

    • List all available catalogs
    • No parameters required
  • show_schemas

    • List all schemas in a catalog
    • Parameters:
      • catalog: Catalog name (string, required)
  • show_tables

    • List all tables in a schema
    • Parameters:
      • catalog: Catalog name (string, required)
      • schema: Schema name (string, required)
  • describe_table

    • Show detailed table structure and column information
    • Parameters:
      • table: Table name (string, required)
      • catalog: Catalog name (string, optional)
      • schema: Schema name (string, optional)
  • 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)

Iceberg Metadata Inspection

  • show_table_properties

    • Show Iceberg table properties
    • Parameters:
      • table: Table name (string, required)
      • catalog: Catalog name (string, optional)
      • schema: Schema name (string, optional)
  • show_table_history

    • Show Iceberg table history/changelog
    • Contains snapshot timing, lineage, and ancestry information
    • Parameters:
      • table: Table name (string, required)
      • catalog: Catalog name (string, optional)
      • schema: Schema name (string, optional)
  • show_metadata_log_entries

    • Show Iceberg table metadata log entries
    • Contains metadata file locations and sequence information
    • Parameters:
      • table: Table name (string, required)
      • catalog: Catalog name (string, optional)
      • schema: Schema name (string, optional)
  • show_snapshots

    • Show Iceberg table snapshots
    • Contains snapshot details including operations and manifest files
    • Parameters:
      • table: Table name (string, required)
      • catalog: Catalog name (string, optional)
      • schema: Schema name (string, optional)
  • show_manifests

    • Show Iceberg table manifests for current or all snapshots
    • Contains manifest file details and data file statistics
    • Parameters:
      • table: Table name (string, required)
      • catalog: Catalog name (string, optional)
      • schema: Schema name (string, optional)
      • all_snapshots: Include all snapshots (boolean, optional)
  • show_partitions

    • Show Iceberg table partitions
    • Contains partition statistics and file counts
    • Parameters:
      • table: Table name (string, required)
      • catalog: Catalog name (string, optional)
      • schema: Schema name (string, optional)
  • show_files

    • Show Iceberg table data files in current snapshot
    • Contains detailed file metadata and column statistics
    • Parameters:
      • table: Table name (string, required)
      • catalog: Catalog name (string, optional)
      • schema: Schema name (string, optional)
  • show_entries

    • Show Iceberg table manifest entries for current or all snapshots
    • Contains entry status and detailed file metrics
    • Parameters:
      • table: Table name (string, required)
      • catalog: Catalog name (string, optional)
      • schema: Schema name (string, optional)
      • all_snapshots: Include all snapshots (boolean, optional)
  • show_refs

    • Show Iceberg table references (branches and tags)
    • Contains reference configuration and snapshot mapping
    • Parameters:
      • table: Table name (string, required)
      • 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_alaturqua_mcp_trino_python-0.7.2.tar.gz (79.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_alaturqua_mcp_trino_python-0.7.2.tar.gz.

File metadata

  • Download URL: iflow_mcp_alaturqua_mcp_trino_python-0.7.2.tar.gz
  • Upload date:
  • Size: 79.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_alaturqua_mcp_trino_python-0.7.2.tar.gz
Algorithm Hash digest
SHA256 1bce71163a883048c1ffb0f24b98c85f4338093e12f5f48ef3abaf93d7a022a2
MD5 95c1b033d386431228ea8078539a1378
BLAKE2b-256 e805156647588e7572698627dce07148ddc4fa4b4a3c37e2c386bec918037026

See more details on using hashes here.

File details

Details for the file iflow_mcp_alaturqua_mcp_trino_python-0.7.2-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_alaturqua_mcp_trino_python-0.7.2-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_alaturqua_mcp_trino_python-0.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e222d61625f9ad432c7cb96b4f54ca558dd8c7a617c07dc3a6c0203b274001cc
MD5 56fa9b8999ae63b9ea061eee128d2ab3
BLAKE2b-256 88a1019059f6bdc25d8aaf36014853a9d01c6d748ad62c533fb9e78c7518d429

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page