Reported issues for DBHub
Pod holds 24 of 59 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to DBHub.
Most discussed
Demo returns Cannot GET /message
In terminal A, I run the demo command
> npx @bytebase/dbhub --demo --transport http --port 8080
Connecting with DSN: sqlite:///:memory:
DSN source: demo mode
Successfully connected to SQLite database
Successfully initialized database with script
Using transport: http
Transport source: command line argument
Running in DEMO mode - using sample employee database
_____ ____ _ _ _
| __ \| _ \| | | | | |
| | | | |_) | |_| |_ _| |__
| | | | _ <| _ | | | | '_ \
|
[Read the thread](https://github.com/bytebase/dbhub/issues/135) · 2025-11-21 · closed · external user · 5 comments
### [Librechat] StreamableHTTPError: Streamable HTTP error: Failed to open SSE stream: Not Found
Hi,
I'm trying to setup this server using Librechat, but it cannot connect to the stream.
LibreChat | 2025-11-20 12:00:49 info: [MCP][postgres] Creating streamable-http transport: http://localhost:3081/mcp LibreChat | 2025-11-20 12:00:49 error: [MCP][postgres] Transport error: fetch failed LibreChat | 2025-11-20 12:00:49 info: [MCP][postgres] Streamable-http transport closed LibreChat | 2025-11-20 12:00:49 error: [MCP][postgres] Connection failed: fetch faile
Read the thread · 2025-11-20 · closed · external user · 7 comments
Claude Agent SDK says: I don't have database access at the moment
This is how I have @bytebase/dbhub set up using Claude's Agent SDK:
import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const event of query({
prompt,
options: {
systemPrompt,
mcpServers: {
"dbhub-postgres": {
type: "stdio",
command: "npx",
args: [
"@bytebase/dbhub@0.11.6",
"--transport",
"stdio",
"--dsn",
`${process.env.PG_CONNECTION_STRING}?sslmode=true"`,
],
env
[Read the thread](https://github.com/bytebase/dbhub/issues/114) · 2025-11-07 · closed · external user · 5 comments
### What is the largest SQL Query I can send using this MCP Server?
I am using your MCP Server for ETL work, and I wanted to increase the batch size of my SQL UPDATE query, but I ran into issues with malformed JSON, and it seems I cannot send as much as I would like.
Is this an MCP Server limitation or a SQL Server limitation?
[Read the thread](https://github.com/bytebase/dbhub/issues/85) · 2025-07-30 · closed · external user · 8 comments
### Failed to call tool execute_sql
Failed to call tool execute_sql: McpError: MCP error -32602: MCP error -32602: Invalid arguments for tool execute_sql: [ { "code": "invalid_type", "expected": "object", "received": "undefined", "path": [], "message": "Required" } ]
[Read the thread](https://github.com/bytebase/dbhub/issues/81) · 2025-07-23 · closed · external user · 6 comments
### Why did you remove SQLite support?
Hey @tianzhou,
I noticed from commit history you've struggled with sqlite3 bindings and then decided to drop SQLite support altogether. I found a fix to the binding problem, see https://github.com/mtichavsky/dbhub/pull/1 (I reference there this explanation of the problem: https://github.com/WiseLibs/better-sqlite3/issues/1378#issuecomment-2958140870).
Anyways, seems like an easy fix, so just wanted to share. If you have more reasons to drop sqlite support, then feel free to close this issue. I
[Read the thread](https://github.com/bytebase/dbhub/issues/70) · 2025-06-26 · closed · outside contributor · 6 comments
### Add Bearer token authentication for HTTP transport security
## Summary
DBHub currently lacks authentication for HTTP transport, which means anyone with the server URL can access the database. This poses a significant security risk if URLs are leaked or exposed.
## Problem
- HTTP MCP endpoints are completely unprotected
- Database access is available to anyone with the URL
- No way to secure database connections in production environments
- Risk of data exposure if URLs leak
## Proposed Solution
Implement Bearer token authentication following industry s
[Read the thread](https://github.com/bytebase/dbhub/issues/66) · 2025-06-24 · closed · external user · 18 comments
### dbhub sometimes crashed when mcp client (dify, cursor) started to use it run SQL sse
Running dbhub in docker and use Dify to test the MCP. However the docker instance got corrupted in each test.
Could you please advise what may cause the error below? Thank you so much!
=====
Successfully connected to MySQL database
Using transport: sse
Transport source: command line argument
_____ ____ _ _ _
| __ \| _ \| | | | | |
| | | | |_) | |_| |_ _| |__
| | | | _ <| _ | | | | '_ \
| |__| | |_) | | | | |_| | |_) |
|_____/|____/|_| |_|\__,_|_.__/
[Read the thread](https://github.com/bytebase/dbhub/issues/38) · 2025-05-01 · closed · external user · 10 comments
## Most recent
### max_rows cap fires silently — no truncation signal in tool response
## Summary
When `max_rows` is configured in `[[tools]]` and a query hits the cap, the MCP response contains no indication that the result was truncated. The `count` field equals `max_rows`, which is indistinguishable from a table that genuinely has that many rows. LLM consumers cannot detect that the result is incomplete.
## Steps to reproduce
1. Configure a tool with `max_rows = 200`
2. Query a table with more than 200 rows
3. Response: `count: 200`, 200 rows returned
4. Query a table with e
[Read the thread](https://github.com/bytebase/dbhub/issues/404) · 2026-08-20 · closed · external user · 0 comments
### max_rows truncation not signaled in response — truncated field missing
## Problem
When `max_rows` is configured in a `[[tools]]` block and a query result is capped, the response JSON does not include a `truncated` field — the key is absent entirely (not `false` or `null`).
## Steps to reproduce
```toml
[[sources]]
id = "mydb"
dsn = "mysql://..."
[[tools]]
name = "execute_sql"
source = "mydb"
readonly = true
max_rows = 200
Run a query that returns more than 200 rows:
SELECT * FROM large_table
Expected response
{
"success": true,
[Read the thread](https://github.com/bytebase/dbhub/issues/403) · 2026-08-20 · closed · external user · 1 comment
### npx install command fails on Windows 11 with latest version
# Description
When I run the npx install command `npx @bytebase/dbhub@latest --transport http --port 8080 --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"` on my Windows machine, I have an error :
npx @bytebase/dbhub@latest --transport http --port 8080 --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable" Need to install the following packages: @bytebase/dbhub@1.1.0 Ok to proceed? (y) y node:internal/modules/run_main:107 triggerUncaughtException(
Read the thread · 2026-07-31 · closed · external user · 1 comment
[Bug] Database connector error logging leaks sensitive SQL query data
Summary
dbhub has a sensitive information disclosure issue in database connector error logging. PostgreSQL, MySQL, and SQL Server execution error handlers log the full SQL text, and parameterized connector paths also log JSON-serialized parameters, to stderr. If SQL text or bind parameters contain secrets, tokens, personal data, or business-sensitive values, those values can be written to process, container, or platform logs.
To reproduce
Start DBHub with a PostgreSQL test database and
Read the thread · 2026-07-27 · closed · external user · 2 comments
[Bug] HTTP transport exposes unauthenticated database APIs
Summary
dbhub has missing authentication on its HTTP MCP and REST API endpoints. In HTTP mode, the server defaults to binding 0.0.0.0, registers /mcp, /api/sources, and /api/requests, and processes requests without any authentication mechanism (e.g., API key, token-based authentication, or equivalent authorization checks).
To reproduce
Start DBHub in HTTP demo mode:
npx @bytebase/dbhub@0.22.6 --transport http --host 0.0.0.0 --port 8080 --demo
Send an unauthenticate
Read the thread · 2026-07-27 · closed · external user · 1 comment
Feature Request: Support connecting to MySQL without specifying a database name (or support multiple databases)
Is your feature request related to a problem? Please describe. Currently, the DBHub MCP server requires a full DSN that includes the database name, e.g.: mysql://user:password@localhost:3306/dbname
This forces me to create a separate MCP server instance for every database I need to work with. When managing multiple databases (e.g., development, staging, testing, or different projects), this leads to a bloated configuration in the MCP client and makes switching between databases cumbersome.
Read the thread · 2026-07-16 · closed · external user · 1 comment
[BUG] SQL Server read-only mode bypass via dynamic SQL in execute_sql
Summary
dbhub has a SQL Server read-only bypass in execute_sql. In read-only mode, the application-level SQL classifier strips string literals before checking for mutating keywords, so dynamic SQL text inside strings is not detected. The SQL Server connector then sends the original SQL to request.query() without an engine-level read-only transaction or equivalent backstop.
To reproduce
Create a SQL Server test table:
CREATE TABLE dbo.users (
id INT IDENTITY PRIMARY KEY,
[Read the thread](https://github.com/bytebase/dbhub/issues/349) · 2026-06-30 · closed · external user · 0 comments
### `search_objects` does not distinguish between tables and views
## Description
The `search_objects` tool with `object_type="table"` returns both tables **and** views mixed together. There is no way to query only views or only tables separately.
## Why this matters for MCP clients
Tables and views are fundamentally different database objects:
- **Tables** store data physically; **views** are virtual, defined by queries
- Most views are **not writable** — an AI agent may attempt `INSERT INTO` a view and fail
- Indexes and row counts are meaningful for tabl
[Read the thread](https://github.com/bytebase/dbhub/issues/324) · 2026-06-06 · closed · outside contributor · 0 comments
### `search_objects` leaks tables from all databases in MySQL/MariaDB when schema is unspecified
## Description
When using the `search_objects` tool with `object_type="table"` (or `"view"`) without specifying a `schema` parameter, the results include tables/views from **all databases** on the MySQL/MariaDB instance, not just the database configured in the DSN.
## Why this matters for MCP clients
MCP clients (e.g. Claude Desktop, Cursor) only see the tool description and its parameters. They **cannot see the DSN or configuration file** — they have no way to know which database was configu
[Read the thread](https://github.com/bytebase/dbhub/issues/323) · 2026-06-06 · closed · outside contributor · 2 comments
### Add policy enforcement for SQL execution
dbhub gives agents direct database access via `execute_sql`. While a read-only mode exists, it's not the default -- and even in read-only mode, there's no query-level enforcement (rate limiting, argument validation, etc.).
In default mode, agents can execute arbitrary SQL including DROP, DELETE, UPDATE, and DDL statements against any connected database.
**Suggestion:** Consider documenting support for [PolicyLayer/Intercept](https://github.com/policylayer/intercept), an open-source MCP proxy t
[Read the thread](https://github.com/bytebase/dbhub/issues/308) · 2026-04-12 · closed · external user · 1 comment
### Unauthenticated Server Bound to All Network Interfaces
## Summary
The Express HTTP server is unconditionally started on the wildcard address `'0.0.0.0'`, binding to every network interface, and no authentication middleware is registered on any route:
```typescript
// src/server.ts:233
app.listen(port, '0.0.0.0', () => { // ← binds to ALL interfaces
console.error(`MCP server endpoint at http://localhost:${port}/mcp`);
});
No API key, Bearer token, or any other credential check exists anywhere in the middleware chain. Any TCP connection re
Read the thread · 2026-04-06 · closed · external user · 3 comments
DNS Rebinding via Missing Host Header Validation
Summary
The Express handler for POST /mcp processes every request regardless of the Host header value. The CORS middleware that precedes it reflects the incoming Origin header unconditionally, and no middleware validates Host:
// src/server.ts — CORS middleware (applied to ALL routes)
app.use((req, res, next) => {
const origin = req.headers.origin;
res.header('Access-Control-Allow-Origin', origin || 'http://localhost'); // ← reflects any origin
res.header('
[Read the thread](https://github.com/bytebase/dbhub/issues/304) · 2026-04-06 · closed · external user · 1 comment
### @bytebase/dbhub crashes on startup with "Dynamic require of 'fs' is not supported" on Node 20
When running @bytebase/dbhub (all versions up to and including 0.20.0) via npx on Node.js 20, the process immediately crashes with the following fatal error before accepting any MCP connections:
Fatal error: Error: Dynamic require of "fs" is not supported
at file://.../@bytebase/dbhub/dist/chunk-WWAWV7DQ.js:15:9
Read the thread · 2026-03-27 · closed · external user · 4 comments
[SECURITY] Private vulnerability report - readonly mode bypass
I discovered a vulnerability that allows complete bypass of the readonly mode security control for MySQL and MariaDB connections.
I have a working PoC with reproduction steps ready. I'd like to report this privately before full disclosure.
Please provide a security contact email or enable GitHub Private Vulnerability Reporting so I can share the full details.
Read the thread · 2026-03-27 · closed · external user · 5 comments
Support optional db driver packages?
We're experimenting with installing dbhub into an in-platform AI agent. Its working nicely but it has forced me to install dozens of packages for DB drivers we don't need. We only use Postgres.
I did try using pnpm overrides to block installation, but it causes the MCP to fail to connect, presumably crashing.
Is it feasible to support regular use cases (npx ... in a mcp.json) while allowing these packages to be optional?
Read the thread · 2026-03-25 · closed · external user · 0 comments
dbhub MCP process does not exit on Windows after client closes (stdio transport, launched via npx)
Summary
When using @bytebase/dbhub as an MCP server on Windows with --transport stdio, the dbhub process tree remains alive after the MCP client closes.
In my case the client is the Codex desktop app on Windows. Other MCP servers launched the same way from the same client, such as chrome-devtools-mcp and @upstash/context7-mcp, exit correctly when the client is closed. Only dbhub remains running.
This looks like a process leak or an issue handling stdio disconnect / shutdown on Win
Read the thread · 2026-03-25 · closed · external user · 0 comments
The remaining reports are on the project's issue tracker.