Skip to main content

A FastMCP server for exploring SQL databases

Project description

meeseeql

Tests PyPI - Version

A FastMCP server for exploring multiple databases with support for SELECT queries, table sampling, and structure inspection.

Features

  • Multiple Database Support: Configure multiple databases with connection strings or individual fields
  • Safe Query Execution: Only SELECT queries allowed for read-only exploration
  • Table Sampling: Sample rows from tables with configurable limits
  • Schema Inspection: View table structure, columns, and foreign key relationships

[!WARNING] Use at your own risk: This tool attempts to restrict database operations to read-only queries (SELECT statements), but it does not guarantee that all destructive operations are prevented. Database functions, stored procedures, or certain SELECT statements with side effects could potentially modify database state. Always use read-only database connections and users with minimal privileges when connecting to production databases.

Available Tools

  • search - Search across tables, columns and enum values
  • table_summary - Gets table structure including columns, data types, and foreign keys
  • execute_query - Executes SELECT queries on databases with pagination support
  • show_database_config - Returns the configured DBs + path to the loaded config file
  • reload_config - Reloads configuration. Allows agents to make changes on-demand
  • test_connection - Tests database connection to verify configuration

Supported Databases

  • PostgreSQL (via psycopg2)
  • MySQL (via PyMySQL)
  • SQLite (local files and in-memory)
  • SQL Server (via pyodbc)
  • Snowflake (data warehouse)

Installation

From PyPI:

uvx meeseeql

From GitHub:

uvx --from git+https://github.com/txsmith/meeseeql.git meeseeql

For development:

git clone https://github.com/txsmith/meeseeql.git
cd meeseeql
uv sync --dev

Configuration

Create a config.yaml file with your database connections. The config file is searched in this order:

  1. --config /path/to/config.yaml (command line flag)
  2. MEESEEQL_CONFIG environment variable
  3. ./config.yaml (current working directory)
  4. ~/.config/meeseeql/config.yaml (recommended for users)
  5. ~/meeseeql.yaml (simple alternative)

See config_example.yaml for more examples of both formats.

  1. Run the server:
fastmcp dev main.py

Installing as MCP Server

Claude Desktop

claude mcp add --scope user sql-explorer uvx meeseeql

Cursor

Add to your MCP settings in Cursor:

  1. Open Cursor Settings → Features → Model Context Protocol
  2. Add a new server configuration:
{
  "sql-explorer": {
    "command": "uvx", 
    "args": ["meeseeql"]
  }
}

Security considerations

Configure your databases with read-only users to prevent destructive operations. The server does not restrict query types at the application level. Also make sure to keep your config.yaml private as this will likely contain sensitive information.

[!TIP] Password Management: Instead of storing plaintext passwords in your config file, you can use the Unix pass password manager. Simply omit the password field from your database configuration and meeseeql will automatically attempt to retrieve the password using pass databases/{database_name}. See config_example.yaml for configuration options.

Development

Running Tests

uv run pytest

Code Formatting

uv run black .
uv run flake8

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

meeseeql-1.1.1.tar.gz (546.5 kB view details)

Uploaded Source

Built Distribution

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

meeseeql-1.1.1-py3-none-any.whl (33.6 kB view details)

Uploaded Python 3

File details

Details for the file meeseeql-1.1.1.tar.gz.

File metadata

  • Download URL: meeseeql-1.1.1.tar.gz
  • Upload date:
  • Size: 546.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for meeseeql-1.1.1.tar.gz
Algorithm Hash digest
SHA256 39558ebebddbfbf3a471a0a29a5519313fd708e3e84570ab741e39ed04b34c57
MD5 e2d372e27e0da5e7a6bd239634caca0d
BLAKE2b-256 480881bc1c5dd2841c310de518e05aa2063207abd1ae8a5d392c3b420b43d35b

See more details on using hashes here.

Provenance

The following attestation bundles were made for meeseeql-1.1.1.tar.gz:

Publisher: release.yml on txsmith/meeseeql

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file meeseeql-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: meeseeql-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 33.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for meeseeql-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0161e31ac8cc834a7ea899d9a05998b8972cc095f4c918fb8d4c8b6c8f4e7b40
MD5 0b3a6e3525824e8f0c0fb8af9e131cd8
BLAKE2b-256 424ec22a544f3837acff505a302573bc588e189aa972c48bacd62aa83f1978a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for meeseeql-1.1.1-py3-none-any.whl:

Publisher: release.yml on txsmith/meeseeql

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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