Atlas / MCP servers / srthkdev / DBeaver

DBeaverBLOCK

mcp/srthkdev/dbeaver

omnisql-mcp

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
21 12r · 7w · 2d
Transport
stdio
License
MIT
Stars
82
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Universal database MCP server — give AI assistants read/write access to your databases using connections already saved in your local DB client workspace (DBeaver-compatible).

[](https://www.npmjs.com/package/omnisql-mcp) [](https://opensource.org/licenses/MIT) [](https://nodejs.org/)

Database Support

Natively supported (direct driver, fast):

  • PostgreSQL (via pg)
  • MySQL / MariaDB (via mysql2)
  • SQL Server / MSSQL (via mssql)
  • SQLite (via sqlite3 CLI)

Postgres-compatible (routed through pg driver automatically):

  • CockroachDB, TimescaleDB, Amazon Redshift, YugabyteDB, AlloyDB, Supabase, Neon, Citus

Other databases: Fall back to an external CLI configured via OMNISQL_CLI_PATH. Results vary by CLI.

Custom drivers wrapping any of the above are detected automatically — see Custom and IAM-Authenticated Drivers.

Features

  • Reuses connections already configured in your local DB client workspace — no duplicate setup
  • Native query execution for PostgreSQL, MySQL/MariaDB, SQLite, SQL Server
  • AWS RDS IAM authentication, including custom drivers built on the AWS Advanced JDBC Wrapper
  • Connection pooling with configurable pool size and timeouts
  • Transaction support (BEGIN/COMMIT/ROLLBACK)
  • Query execution plan analysis (EXPLAIN)
  • Schema comparison between connections with migration script generation
  • Read-only mode with enforced SELECT-only on execute_query
  • Connection whitelist to restrict which databases are accessible
  • Tool filtering to disable specific operations
  • Query validation to block dangerous operations (DROP DATABASE, TRUNCATE, DELETE/UPDATE without WHERE)
  • Data export to CSV/JSON
  • Graceful shutdown with connection pool cleanup

Requirements

  • Node.js 18+
Read from source at commit b443ebf3773dOBSERVED · 2026-10-08
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add omnisql-mcp --env MYSQL_PASSWORD=${MYSQL_PASSWORD} --env OMNISQL_IAM_TOKEN_TIMEOUT=${OMNISQL_IAM_TOKEN_TIMEOUT} --env OMNISQL_SSH_STRICT_HOST_KEY=${OMNISQL_SSH_STRICT_HOST_KEY} --env PGPASSWORD=${PGPASSWORD} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "omnisql-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "MYSQL_PASSWORD": "${MYSQL_PASSWORD}",
        "OMNISQL_IAM_TOKEN_TIMEOUT": "${OMNISQL_IAM_TOKEN_TIMEOUT}",
        "OMNISQL_SSH_STRICT_HOST_KEY": "${OMNISQL_SSH_STRICT_HOST_KEY}",
        "PGPASSWORD": "${PGPASSWORD}"
      }
    }
  }
}
03

Exposed tools (21)

12 read · 7 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
alter_tablewriteModify existing table schema (add columns, rename tables, etc.)
append_insightwriteAdd a business insight or analysis note to the memo
begin_transactionwriteStart a new database transaction
commit_transactionwriteCommit an active transaction
compare_schemasreadCompare schemas between two database connections
create_tablewriteCreate new tables in the database
drop_tabledestructiveRemove a table from the database with safety confirmation
execute_in_transactionwriteExecute a query within an active transaction
execute_querywriteExecute a SQL query on a specific database connection (read-only queries)
explain_queryreadGet the execution plan for a SQL query
export_datareadExport query results to various formats (CSV, JSON, etc.)
get_connection_inforeadGet detailed information about a specific database connection
get_database_statsreadGet statistics and information about a database
get_pool_statsreadGet connection pool statistics for a connection
get_table_schemareadGet schema information for a specific table
list_connectionsreadList all available database connections
list_insightsreadList all stored business insights and analysis notes
list_tablesreadList all tables in a database
rollback_transactionreadRollback an active transaction
test_connectionreadTest connectivity to a database connection
write_querydestructiveExecute INSERT, UPDATE, or DELETE queries on a specific database connection
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (1 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (18)

HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/index.ts:1784
OMNISQL_SSH_KNOWN_HOSTS      known_hosts used to verify SSH tunnel hosts (default: ~/.ssh/known_hosts)
Why it matters. touches a credential store
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
src/pools/connection-pool.ts:131
const ssl = resolvedSsl === undefined ? { rejectUnauthorized: false } : resolvedSsl;
Why it matters. certificate verification is disabled
Fix. leave verification on
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
drop_table, write_query
Why it matters. 2 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
docs-site/static/.nojekyll
.nojekyll
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/ssh-tunnel.test.ts:61
privKeyPath: '~/.ssh/id_ed25519',
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/ssh-tunnel.test.ts:65
expect(tunnel).toMatchObject({ user: 'deploy', privateKeyPath: '~/.ssh/id_ed25519' });
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/ssh-tunnel.test.ts:133
expect(expandHome('~/.ssh/id_rsa')).toMatch(/\/\.ssh\/id_rsa$/);
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/ssh-tunnel.test.ts:134
expect(expandHome('~/.ssh/id_rsa').startsWith('~')).toBe(false);
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/utils.test.ts:144
expect(sanitizeConnectionId('my-conn/../../etc/passwd')).toBe('my-conn/etcpasswd');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/utils.test.ts:149
expect(() => sanitizeConnectionId('../../my-conn')).toThrow(/no valid characters/);
LOWNetwork egress · net.tls_off · CWE-200, CWE-319
tests/ssl-config.test.ts:18
expect(ssl).toEqual({ rejectUnauthorized: false });
Why it matters. certificate verification is disabled
Fix. leave verification on
LOWNetwork egress · net.tls_off · CWE-200, CWE-319
tests/ssl-config.test.ts:23
rejectUnauthorized: false,
Why it matters. certificate verification is disabled
Fix. leave verification on
LOWNetwork egress · net.tls_off · CWE-200, CWE-319
tests/ssl-config.test.ts:42
expect(resolvePostgresSsl(connection({}), true)).toEqual({ rejectUnauthorized: false });
Why it matters. certificate verification is disabled
Fix. leave verification on
LOWNetwork egress · net.tls_off · CWE-200, CWE-319
tests/ssl-config.test.ts:53
expect(ssl).toEqual({ rejectUnauthorized: false });
Why it matters. certificate verification is disabled
Fix. leave verification on
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
docs-site/package.json
@mdx-js/react, clsx, prism-react-renderer, react, react-dom, typescript
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, csv-parser, csv-stringify, mssql, mysql2, pg, ssh2, xml2js
Why it matters. 24 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
CHANGELOG.md:16
- **SSH tunnel support** (#28): connections that DBeaver reaches through an SSH tunnel are now tunneled here too, rather than connecting straight to the target host — which for a tunneled connection i
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha b443ebf3773dfull audit observations/trust-audit/mcp-server/srthkdev__dbeaver.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08b443ebf3773dBLOCKD69first audit
06

Questions

What is the DBeaver MCP server?

omnisql-mcp

What tools does DBeaver expose?

21 in total: 12 read-only, 7 that write, and 2 that can delete or overwrite (drop_table, write_query). Every one is listed on this page with its risk.

Is DBeaver safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does DBeaver need?

It reads MYSQL_PASSWORD, OMNISQL_IAM_TOKEN_TIMEOUT, OMNISQL_SSH_STRICT_HOST_KEY, PGPASSWORD and SSH_AUTH_SOCK from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does DBeaver run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as omnisql-mcp at 2.1.0.

How current is this page?

The grade is for one exact copy of the source (b443ebf3773d), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement