@bytebase/dbhub: DBHub
DBHub: A universal database gateway implementing the Model Context Protocol (MCP) server interface, enabling MCP-compatible clients to connect to and explore various databases like PostgreSQL, MySQL, SQL Server, and SQLite.
Author
bytebase
README
DBHub is a universal database gateway implementing the Model Context Protocol (MCP) server interface. This gateway allows MCP-compatible clients to connect to and explore different databases.
bash+------------------+ +--------------+ +------------------+ | | | | | | | | | | | | | Claude Desktop +--->+ +--->+ PostgreSQL | | | | | | | | Cursor +--->+ DBHub +--->+ SQL Server | | | | | | | | Other MCP +--->+ +--->+ SQLite | | Clients | | | | | | | | +--->+ MySQL | | | | | | | | | | +--->+ Other Databases | | | | | | | +------------------+ +--------------+ +------------------+ MCP Clients MCP Server Databases
Demo SSE Endpoint
https://demo.dbhub.ai/sse connects a sample employee database. You can point Cursor or MCP Inspector to it to see it in action.
Supported Matrix
Database Resources
Resource | URI Format | PostgreSQL | MySQL | SQL Server | SQLite |
---|---|---|---|---|---|
Tables | db://tables | ✅ | ✅ | ✅ | ✅ |
Schema | db://schema/{tableName} | ✅ | ✅ | ✅ | ✅ |
Database Tools
Tool | Command Name | PostgreSQL | MySQL | SQL Server | SQLite |
---|---|---|---|---|---|
Execute Query | run_query | ✅ | ✅ | ✅ | ✅ |
List Connectors | list_connectors | ✅ | ✅ | ✅ | ✅ |
Prompt Capabilities
Prompt | Command Name | PostgreSQL | MySQL | SQL Server | SQLite |
---|---|---|---|---|---|
Generate SQL | generate_sql | ✅ | ✅ | ✅ | ✅ |
Explain DB Elements | explain_db | ✅ | ✅ | ✅ | ✅ |
Installation
Docker
bash# PostgreSQL example docker run --rm --init \ --name dbhub \ --publish 8080:8080 \ bytebase/dbhub \ --transport sse \ --port 8080 \ --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"
bash# Demo mode with sample employee database docker run --rm --init \ --name dbhub \ --publish 8080:8080 \ bytebase/dbhub \ --transport sse \ --port 8080 \ --demo
NPM
bash# PostgreSQL example npx @bytebase/dbhub --transport sse --port 8080 --dsn "postgres://user:password@localhost:5432/dbname"
bash# Demo mode with sample employee database npx @bytebase/dbhub --transport sse --port 8080 --demo
Note: The demo mode includes a bundled SQLite sample "employee" database with tables for employees, departments, salaries, and more.
Claude Desktop
- Claude Desktop only supports
stdio
transport https://github.com/orgs/modelcontextprotocol/discussions/16
json// claude_desktop_config.json { "mcpServers": { "dbhub-postgres-docker": { "command": "docker", "args": [ "run", "-i", "--rm", "bytebase/dbhub", "--transport", "stdio", "--dsn", // Use host.docker.internal as the host if connecting to the local db "postgres://user:password@host.docker.internal:5432/dbname?sslmode=disable" ] }, "dbhub-postgres-npx": { "command": "npx", "args": [ "-y", "@bytebase/dbhub", "--transport", "stdio", "--dsn", "postgres://user:password@localhost:5432/dbname?sslmode=disable" ] }, "dbhub-demo": { "command": "npx", "args": ["-y", "@bytebase/dbhub", "--transport", "stdio", "--demo"] } } }
Cursor
- Cursor supports both
stdio
andsse
. - Follow Cursor MCP guide and make sure to use Agent mode.
Usage
Configure your database connection
You can use DBHub in demo mode with a sample employee database for testing:
bashpnpm dev --demo
For real databases, a Database Source Name (DSN) is required. You can provide this in several ways:
-
Command line argument (highest priority):
bashpnpm dev --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"
-
Environment variable (second priority):
bashexport DSN="postgres://user:password@localhost:5432/dbname?sslmode=disable" pnpm dev
-
Environment file (third priority):
- For development: Create
.env.local
with your DSN - For production: Create
.env
with your DSN
DSN=postgres://user:password@localhost:5432/dbname?sslmode=disable
- For development: Create
DBHub supports the following database connection string formats:
Database | DSN Format | Example |
---|---|---|
PostgreSQL | postgres://[user]:[password]@[host]:[port]/[database] | postgres://user:password@localhost:5432/dbname?sslmode=disable |
SQLite | sqlite:///[path/to/file] or sqlite::memory: | sqlite:///path/to/database.db or sqlite::memory: |
SQL Server | sqlserver://[user]:[password]@[host]:[port]/[database] | sqlserver://user:password@localhost:1433/dbname |
MySQL | mysql://[user]:[password]@[host]:[port]/[database] | mysql://user:password@localhost:3306/dbname |
Transport
-
stdio (default) - for direct integration with tools like Claude Desktop:
bashnpx @bytebase/dbhub --transport stdio --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"
-
sse - for browser and network clients:
bashnpx @bytebase/dbhub --transport sse --port 5678 --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"
Command line options
Option | Description | Default |
---|---|---|
demo | Run in demo mode with sample employee database | false |
dsn | Database connection string | Required if not in demo mode |
transport | Transport mode: stdio or sse | stdio |
port | HTTP server port (only applicable when using --transport=sse ) | 8080 |
The demo mode uses an in-memory SQLite database loaded with the sample employee database that includes tables for employees, departments, titles, and salaries.
Development
-
Install dependencies:
bashpnpm install
-
Run in development mode:
bashpnpm dev
-
Build for production:
bashpnpm build pnpm start --transport stdio --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"
Debug with MCP Inspector
stdio
bash# PostgreSQL example TRANSPORT=stdio DSN="postgres://user:password@localhost:5432/dbname?sslmode=disable" npx @modelcontextprotocol/inspector node /path/to/dbhub/dist/index.js
SSE
bash# Start DBHub with SSE transport pnpm dev --transport=sse --port=8080 # Start the MCP Inspector in another terminal npx @modelcontextprotocol/inspector
Connect to the DBHub server /sse
endpoint