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:
{
  "meeseeql": {
    "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.0.0.tar.gz (547.9 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.0.0-py3-none-any.whl (32.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for meeseeql-1.0.0.tar.gz
Algorithm Hash digest
SHA256 dd5f4ebb075bee7d316034ec5192303c5ede7e7524d39aa09e40f35893aff446
MD5 a75065134f1720e20580f57a08ea8d79
BLAKE2b-256 332028dcc510f95c3e54d4f4cd0c429745ce9598c2cec8f24286b057556a2b23

See more details on using hashes here.

Provenance

The following attestation bundles were made for meeseeql-1.0.0.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.0.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for meeseeql-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 46a7fd566c740b619c0e3d1a70a5ac0f7be8fc74482e519733b76e3105babd92
MD5 9a38f15e505d4b8d827b97a47db82ab9
BLAKE2b-256 0839c98d5310e57612c34ac4f01da4ad3916b2dcafaa7c762a5caf489776130f

See more details on using hashes here.

Provenance

The following attestation bundles were made for meeseeql-1.0.0-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