Skip to main content

MCP server for Claude that connects to MySQL, MariaDB, PostgreSQL, and SQLite databases

Project description

mcp-sequel

MCP server for Claude that connects to MySQL, MariaDB, PostgreSQL, and SQLite databases. Query your databases using natural language. Supports multiple named connections, SSH tunnels, readonly mode, and per-connection row limits.

Install & Registration

Tip: ask Claude to read this README and set up the server for you.

Option 1: uvx (recommended) — no installation needed, always runs the latest version:

claude mcp add mcp-sequel uvx mcp-sequel

Option 2: from cloned repository:

git clone https://github.com/eukos/mcp-sequel
claude mcp add mcp-sequel uv run --directory /path/to/mcp-sequel mcp-sequel

Configuration

Tip: ask Claude to read this README and create a connection config for you.

One file per connection in ~/.config/mcp-sequel/. The filename (without .json) becomes the connection name.

~/.config/mcp-sequel/
├── production.json
├── staging.json
└── local.json

Each file is one connection. Examples:

MySQL / MariaDB

{
  "type": "mysql",
  "host": "db.example.com",
  "port": 3306,
  "user": "analyst",
  "password": "secret",
  "database": "myapp",
  "readonly": true,
  "row_limit": 1000,
  "description": "Production replica, analytics only"
}
Field Required Default Description
type yes "mysql" or "mariadb"
host yes hostname or IP
user yes database user
password yes database password
port no 3306 TCP port
database no default database; can be overridden per query
readonly no true if true, only SELECT/SHOW/DESCRIBE/EXPLAIN are allowed
row_limit no 1000 max rows returned; null for no limit
description no human-readable label shown in list_connections
ssh_tunnel no SSH tunnel config (see below); routes the connection through a bastion host

MySQL via SSH tunnel

Use ssh_tunnel when the database is only reachable through a bastion/jump host. host and port in the top-level config refer to the DB as seen from the SSH server (commonly localhost).

With a key file (most common):

{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "user": "reader",
  "password": "secret",
  "database": "myapp",
  "ssh_tunnel": {
    "host": "bastion.example.com",
    "user": "ubuntu",
    "key_file": "~/.ssh/id_rsa"
  }
}

With an SSH password:

{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "user": "reader",
  "password": "secret",
  "ssh_tunnel": {
    "host": "bastion.example.com",
    "user": "ubuntu",
    "password": "sshpass"
  }
}
Field Required Default Description
host yes SSH server hostname or IP
user yes SSH username
key_file no* path to private key file (~ expanded)
password no* SSH password (if not using key file)
port no 22 SSH server port

* at least one of key_file or password should be provided.

PostgreSQL

{
  "type": "postgresql",
  "host": "db.example.com",
  "port": 5432,
  "user": "analyst",
  "password": "secret",
  "database": "myapp",
  "readonly": true,
  "row_limit": 1000,
  "description": "Production PostgreSQL"
}
Field Required Default Description
type yes "postgresql"
host yes hostname or IP
user yes database user
password yes database password
port no 5432 TCP port
database no* database to connect to; can be passed per query instead
readonly no true if true, connection is opened in read-only mode (DB-level enforcement)
row_limit no 1000 max rows returned; null for no limit
description no human-readable label shown in list_connections
ssh_tunnel no SSH tunnel config (same format as MySQL)

* database must be provided either in the config or per query — PostgreSQL requires a database to connect.

SQLite

{
  "type": "sqlite",
  "path": "/data/analytics.db",
  "readonly": true,
  "row_limit": 1000,
  "description": "Local analytics database"
}
Field Required Default Description
type yes "sqlite"
path yes absolute path to the .db file
readonly no true if true, opens connection with ?mode=ro (OS-level enforcement)
row_limit no 1000 max rows returned; null for no limit
description no human-readable label shown in list_connections

Set permissions to owner-only:

chmod 600 ~/.config/mcp-sequel/*.json

Usage

After registering, restart Claude to load the server. Then try:

  • "List available database connections"
  • "Show databases for staging"
  • "How many customers do we have on production?"
  • "Show me the schema of the orders table"
  • "Query local: SELECT * FROM users LIMIT 10"
  • "Query production: show me the top 10 users by order count"

License

MIT

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

mcp_sequel-0.2.0.tar.gz (80.6 kB view details)

Uploaded Source

Built Distribution

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

mcp_sequel-0.2.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file mcp_sequel-0.2.0.tar.gz.

File metadata

  • Download URL: mcp_sequel-0.2.0.tar.gz
  • Upload date:
  • Size: 80.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcp_sequel-0.2.0.tar.gz
Algorithm Hash digest
SHA256 49931b241aa560533dcabbd292d0db4270e5c75794c3a56934b09e695f29b502
MD5 5bff5ec930e30f1fdc5340360e0298a5
BLAKE2b-256 a1ab7b499aa515922cc622c595c8aa089ed9e1ebb963ce45f9da7fcc6247c0c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_sequel-0.2.0.tar.gz:

Publisher: publish.yml on eukos/mcp-sequel

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

File details

Details for the file mcp_sequel-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: mcp_sequel-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcp_sequel-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 efc31b4c0441eafd574b2cc51eb75d98ea9eb74edc0a35394fb54e9c90aa04f6
MD5 318355407e82fe44882cc3111e52659e
BLAKE2b-256 9425f402ca2036658ece3572151c127ae8c98830561734bd72d248324890bda4

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_sequel-0.2.0-py3-none-any.whl:

Publisher: publish.yml on eukos/mcp-sequel

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