All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Package size reduced from 306 kB to 60 kB: added a
fileswhitelist inpackage.jsonso the npm tarball no longer includesdocs-site/,tests/,scripts/,examples/, or local runtime logs. Onlydist/,README.md,CHANGELOG.md, andLICENSEare published.
- Renamed package:
dbeaver-mcp-server→omnisql-mcp. The old npm package is deprecated; installomnisql-mcpgoing forward. - Renamed binary:
dbeaver-mcp-server→omnisql-mcp. - Renamed environment variables: All
DBEAVER_*env vars are nowOMNISQL_*(for example, the oldDBEAVER_READ_ONLYis nowOMNISQL_READ_ONLY, oldDBEAVER_WORKSPACEis nowOMNISQL_WORKSPACE, and oldDBEAVER_PATHis nowOMNISQL_CLI_PATH). Update your MCP client config. - Renamed resource URI scheme:
dbeaver://→omnisql://for table schema resources. - Renamed internal classes:
DBeaverConfigParser→WorkspaceConfigParser,DBeaverClient→WorkspaceClient,DBeaverMCPServer→OmniSQLMCPServer. InterfacesDBeaverConnection→DatabaseConnection,DBeaverConfig→WorkspaceConfig. - CLI auto-detection removed:
OMNISQL_CLI_PATHmust now be set explicitly to use the CLI fallback for unsupported drivers. Previously the server attempted to locate the DB client binary in hardcoded install paths.
Functional behavior is otherwise unchanged — the server still reads connections from the same local DB client workspace (DBeaver-compatible).
- Postgres-compatible driver routing: CockroachDB, TimescaleDB, Redshift, YugabyteDB, AlloyDB, Supabase, Neon, and Citus now route through the native PostgreSQL driver automatically
- CI auto-publish: Every push to
mainwith a new version automatically publishes to npm and creates a git tag - Stale transaction cleanup: Periodic cleanup (every 5 minutes) automatically rolls back transactions older than 1 hour
- Graceful shutdown improvements: Active transactions are rolled back before connection pools are closed
rollbackAll()method on TransactionManager for shutdown scenarios
- Credential leak (Security):
list_connectionswithincludeDetails=trueandget_connection_infono longer expose passwords — all sensitive fields are redacted - Debug log credential leak (Security): Tool arguments are redacted before debug logging to prevent passwords appearing in logs
- Pool creation race condition: Concurrent
getPool()calls for the same connection no longer create duplicate pools — uses a pending-creation map for deduplication - Transaction resource leak: Failed
commit/rollbacknow releases the database client back to the pool instead of leaking it - Insights file unbounded growth: Capped at 1,000 entries, oldest entries are trimmed on save
- CI workflow now includes a
publishjob that runs after all checks pass onmain - Pool manager's
isPostgresCompatible()is now a public method shared with workspace-client
- Connection whitelist via
OMNISQL_ALLOWED_CONNECTIONSenvironment variable — restrict which workspace connections are visible by ID or name enforceReadOnly()query-level enforcement —execute_querynow strictly allows only read-only statements (SELECT, EXPLAIN, SHOW, DESCRIBE, PRAGMA)- Test queries for SAP HANA (
SELECT * FROM DUMMY) and DB2 (SYSIBM.SYSDUMMY1)
- Read-only mode bypass (Issue #19):
execute_queryno longer allows write operations (INSERT/UPDATE/DELETE/CREATE/ALTER/DROP). Transaction tools (begin_transaction,commit_transaction,rollback_transaction,execute_in_transaction) are now blocked in read-only mode. - Unsupported driver errors (Issue #17): CLI fallback now provides clear, actionable error messages listing natively supported drivers and workarounds. CLI availability is checked before attempting fallback.
- UPDATE validation regex:
UPDATE ... SET ... WHERE ...was incorrectly blocked by the dangerous query filter. The regex now correctly allows UPDATE with WHERE clause.
- CLI fallback uses connection name-based spec for better compatibility
- Native MySQL/MariaDB support via
mysql2library - Read-only mode (
OMNISQL_READ_ONLY=true) to disable write operations - Tool filtering via
OMNISQL_DISABLED_TOOLSenvironment variable - GitHub Actions CI/CD pipeline
- ESLint and Prettier configuration
- Pre-commit hooks via Husky
- Vitest test framework
- Issue and PR templates
- Connection pooling for PostgreSQL, MySQL, and MSSQL with configurable pool settings
- Transaction support with
begin_transaction,commit_transaction,rollback_transaction, andexecute_in_transactiontools - Query explain tool (
explain_query) for analyzing query execution plans - Schema comparison tool (
compare_schemas) for diffing schemas between connections - Pool statistics tool (
get_pool_stats) for monitoring connection pool health
- Upgraded
@modelcontextprotocol/sdkfrom 1.9.0 to 1.25.2 (security fix) - Improved error messages for unsupported database drivers
- Better trailing semicolon handling in LIMIT clause
- Security vulnerabilities in dependencies
@types/mssqlmoved to devDependencies- SQL injection vulnerability in table/schema name handling
- Deprecated
.substr()replaced with securecrypto.randomBytes() - Added maxRows validation with upper bounds (100k query, 1M export)
- Removed unsupported export formats (xml, excel) from API schema
- Native MSSQL/SQL Server support via
mssqllibrary xml2jsfor legacy XML workspace config parsing
- Missing
xml2jsruntime dependency that broke npm installations - PostgreSQL connection cleanup logging
- SSL/TLS support for PostgreSQL connections
- Credential decryption from the workspace credentials-config.json
- Authentication failures with PostgreSQL (Issue #8)
- Native PostgreSQL support via
pglibrary - Native SQLite support via sqlite3 CLI
- CLI fallback for unsupported drivers
- Business insights tracking feature
- Query execution no longer requires the DB client GUI for supported databases
- Initial MCP server implementation
- Support for legacy XML and modern JSON workspace config formats
- Connection management tools
- Query execution tools
- Schema management tools
- Data export functionality