A FastMCP server for exploring multiple databases with support for SELECT queries, table sampling, and structure inspection.
- 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.
- 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
- PostgreSQL (via psycopg2)
- MySQL (via PyMySQL)
- SQLite (local files and in-memory)
- SQL Server (via pyodbc)
- Snowflake (data warehouse)
From PyPI:
uvx meeseeqlFrom GitHub:
uvx --from git+https://github.com/txsmith/meeseeql.git meeseeqlFor development:
git clone https://github.com/txsmith/meeseeql.git
cd meeseeql
uv sync --devCreate a config.yaml file with your database connections. The config file is searched in this order:
--config /path/to/config.yaml(command line flag)MEESEEQL_CONFIGenvironment variable./config.yaml(current working directory)~/.config/meeseeql/config.yaml(recommended for users)~/meeseeql.yaml(simple alternative)
See config_example.yaml for more examples of both formats.
- Run the server:
fastmcp dev main.pyclaude mcp add --scope user sql-explorer uvx meeseeqlAdd to your MCP settings in Cursor:
- Open Cursor Settings → Features → Model Context Protocol
- Add a new server configuration:
{
"sql-explorer": {
"command": "uvx",
"args": ["meeseeql"]
}
}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.
uv run pytestuv run black .
uv run flake8