mcpField
D
db-gateway

db-gateway

Local
github.com/sijunkimDatabases0Updated 11w ago

About db-gateway

db-gateway is an MCP server for AI agents that provides tools across relational, NoSQL, search, and streaming databases. It lets operators enable selected engines and hide write tools in read-only mode.

Key features

  1. 01Supports eight database engines
  2. 02Provides 145+ database tools
  3. 03Registers tools for enabled engines
  4. 04Hides write tools in read-only mode
  5. 05Connects to instances using aliases

Use cases

  1. 01Let agents inspect schemas and query data
  2. 02Connect multiple database types through one server
  3. 03Restrict production connections to read-only access

MCP support

This MCP server exposes database tools to MCP clients. Configuration selects the enabled engines and tools; read-only mode removes write tools.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"sijunkim-db-gateway": {
"command": "npx",
"args": [
"-y",
"db-gateway"
],
"env": {
"DBS": "<DBS>",
"READ_ONLY": "<READ_ONLY>",
"MYSQL": "<MYSQL>",
"POSTGRESQL": "<POSTGRESQL>",
"REDSHIFT": "<REDSHIFT>",
"MONGODB": "<MONGODB>",
"REDIS": "<REDIS>",
"ELASTICSEARCH": "<ELASTICSEARCH>",
"KAFKA": "<KAFKA>",
"DYNAMODB_REGION": "<DYNAMODB_REGION>",
"DYNAMODB_ACCESS_KEY_ID": "<DYNAMODB_ACCESS_KEY_ID>",
"DYNAMODB_SECRET_ACCESS_KEY": "<DYNAMODB_SECRET_ACCESS_KEY>"
}
}
}
}
Run commandnpx -y db-gateway
Environment variables to set
DBSEngines to enable, comma-separated. Only the listed engines get their tools registered. Example: mysql,redis,kafka
READ_ONLYSet to true to hide every write tool and restrict *_execute_query to SELECT-style statements. Recommended when pointing at production.
MYSQLSecretMySQL connection string(s), semicolon-separated for multiple instances. Format: mysql://<user>:<password>@<host>:3306/<database>?alias=dev&default=true — alias is required.
POSTGRESQLSecretPostgreSQL connection string(s), semicolon-separated. Format: postgresql://<user>:<password>@<host>:5432/<database>?alias=dev&ssl=true — alias is required.
REDSHIFTSecretRedshift connection string(s), semicolon-separated. Format: redshift://<user>:<password>@<host>:5439/<database>?alias=dev&ssl=true — alias is required.
MONGODBSecretMongoDB connection string(s), semicolon-separated. Format: mongodb://<user>:<password>@<host>:27017/<database>?alias=dev — alias is required.
REDISSecretRedis connection string(s), semicolon-separated. Format: redis://:<password>@<host>:6379/0?alias=dev — leave the password empty for a no-auth instance. alias is required.
ELASTICSEARCHSecretElasticsearch connection string(s), semicolon-separated. Format: elasticsearch://<user>:<password>@<host>:9200?alias=dev, or http(s)://<host>:9200?alias=dev for no auth. alias is required.
KAFKASecretKafka connection string(s), semicolon-separated. Format: kafka://<user>:<password>@<broker1>:9092,<broker2>:9092?alias=dev&mechanism=plain — alias is required.
DYNAMODB_REGIONAWS region for DynamoDB. DynamoDB is configured with discrete variables instead of a connection string.
DYNAMODB_ACCESS_KEY_IDSecretAWS access key ID for DynamoDB.
DYNAMODB_SECRET_ACCESS_KEYSecretAWS secret access key for DynamoDB.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmdb-gateway1.0.4

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

DB Gateway MCP Server

npm MCP Registry 8 databases license

English | 한국어

An MCP server that gives AI agents direct access to your databases — 145+ tools across 8 engines.

The point is that the agent reads your schema itself instead of you pasting DDL into a prompt:

You: "Find users who signed up last month and never placed an order"

  1. mysql_get_all_schemas          → reads every table definition
  2. mysql_get_table_relationships  → finds the users ↔ orders foreign key
  3. mysql_execute_query            → runs the LEFT JOIN

Why db-gateway?

Most database MCP servers cover one engine, or a handful of relational ones. If your stack is MySQL for the app, Redshift for analytics, Redis for cache, and Kafka for events, that means four servers with four different config styles.

This is one server, one config block:

EnginesTools
RelationalMySQL, PostgreSQL, Redshift59
NoSQLMongoDB, Redis, DynamoDB48
SearchElasticsearch19
StreamingKafka19

DBS decides which of them are enabled — only those tools get registered, so a MySQL-only setup stays a MySQL-only tool list.

See It Work

Every screenshot below is one real session against a development MySQL database holding 249 rows — unedited output, not mock data. The agent calls a single tool, mysql_execute_query, and never sees a host, port, or password: those stay in the client config, and the agent only ever names the alias.

Step 1 — READ: query the most recently added item

Step 2 — CREATE: insert a new item, and MySQL returns its insertId

Step 3 — UPDATE: move it to the freezer, matching exactly one row by primary key

Step 4 — DELETE: remove that row by primary key

Step 5 — VERIFY: the table is back to its original 249 rows

Point the same server at production with READ_ONLY=true and steps 2 through 4 simply do not exist — the write tools are never registered, so the agent cannot see them to call them.

Quick Start

Requires Node.js 18+. Register it with your MCP client — no install step:

{
  "mcpServers": {
    "db-gateway": {
      "command": "npx",
      "args": ["-y", "db-gateway"],
      "env": {
        "DBS": "mysql,redis",
        "MYSQL": "mysql://<user>:<password>@<host>:3306/<database>?alias=dev&default=true",
        "REDIS": "redis://:@<host>:6379/0?alias=dev&default=true"
      }
    }
  }
}

DBS decides which engines are enabled — only those tools get registered.

Connection strings

One string per engine. Semicolons separate multiple instances.

VariableFormat
MYSQLmysql://<user>:<password>@<host>:<port>/<db>?alias=name
POSTGRESQLpostgresql://<user>:<password>@<host>:<port>/<db>?alias=name&ssl=true
REDISredis://:<password>@<host>:<port>/<db-index>?alias=name
MONGODBmongodb://<user>:<password>@<host>:<port>/<db>?alias=name
REDSHIFTredshift://<user>:<password>@<host>:<port>/<db>?alias=name&ssl=true
ELASTICSEARCHelasticsearch://<user>:<password>@<host>:<port>?alias=name, or http(s)://<host>:<port>?alias=name
KAFKAkafka://<user>:<password>@<broker>:<port>,<broker2>:<port>?alias=name&mechanism=plain

alias is required. It is how tools address a specific instance — omit it and that engine fails to connect.

Several instances of the same engine — separate their connection strings with a semicolon. The agent picks one by passing an alias argument to any tool; default=true marks the one used when no alias is given:

MYSQL="mysql://<user>:<password>@<dev-host>:3306/<db>?alias=dev&default=true;mysql://<user>:<password>@<prod-host>:3306/<db>?alias=prod"

DynamoDB is the exception — it takes DYNAMODB_REGION, DYNAMODB_ACCESS_KEY_ID, and DYNAMODB_SECRET_ACCESS_KEY instead. See .env.example for every option.

Read-Only Mode

READ_ONLY=true hides write tools from the tool list entirely and restricts *_execute_query to SELECT-style statements.

Register production as a second MCP server with this flag on. The agent then cannot modify production data — the write tools do not exist as far as it can see.

"db-gateway-prod": {
  "command": "npx",
  "args": ["-y", "db-gateway"],
  "env": { "READ_ONLY": "true", "DBS": "mysql", "MYSQL": "..." }
}

Documentation

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.