DBeast
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DB_HOST | No | Database hostname or IP | |
| DB_NAME | No | Database name | |
| DB_PORT | No | Database port | 5432 |
| DB_USER | No | Database user | |
| AWS_REGION | No | AWS region for Secrets Manager | |
| DB_SSLMODE | No | SSL mode for connection | prefer |
| DB_PASSWORD | No | Database password | |
| DATABASE_URL | No | Full PostgreSQL connection URL (e.g., postgresql://user:pass@host:5432/db) | |
| AWS_SECRET_NAME | No | AWS Secrets Manager secret name containing database credentials | |
| DBEAST_AUDIT_DIR | No | Audit log directory | logs/mcp_audit |
| DBEAST_SSL_VERIFY | No | Set to false for SSH tunnels where certificates do not match localhost | true |
| DBEAST_AUDIT_ENABLED | No | Log MCP tool calls | true |
| DBEAST_QUERY_TIMEOUT | No | Query execution timeout in seconds | 300 |
| DBEAST_COMMAND_TIMEOUT | No | SQL command timeout in seconds | 300 |
| DBEAST_SCHEMA_CACHE_TTL | No | Schema cache TTL in seconds, 0 disables caching | 60 |
| DBEAST_DEFAULT_ROW_LIMIT | No | Maximum rows returned by execute_query | 100 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| connectA | Connect to PostgreSQL or check connection status. LEVEL: Server (connection management) USE FOR: connecting, checking status, discovering databases. DO NOT USE FOR: health metrics (database_health), queries (execute_query). ERROR RECOVERY:
Examples: connect() - Check status connect(discover=True) - Find databases connect(url='postgresql://user:pass@localhost:5432/mydb') |
| disconnectA | Close the database connection and release pool resources. LEVEL: Server (connection management) USE FOR: ending session, cleanup, releasing connections. DO NOT USE FOR: checking status (use connect() or health_check). |
| health_checkA | Check connection health - pool stats, version, extensions. LEVEL: Server (connection management) USE FOR: connection status, pool health, "is database reachable?". DO NOT USE FOR: database metrics (database_health), query stats (query_performance). |
| get_schemaA | Discover database schema - tables, columns, relationships, indexes. LEVEL: Database (lists all schemas) or Schema (specific schema details) USE FOR: listing tables, columns, foreign keys, ERD generation. DO NOT USE FOR: table data (execute_query), index health (maintenance_analysis). ERROR RECOVERY:
PAGINATION: For large schemas (100+ tables), use limit/offset. Examples: get_schema() - List all schemas get_schema(schema='public') - Tables in public get_schema(schema='public', limit=50, offset=50) - Page 2 get_schema(format='mermaid') - ERD diagram |
| analyze_queryA | Validate SQL syntax, detect anti-patterns, N+1, duplicates. LEVEL: Query (SQL statement analysis - no DB connection needed for basic parsing) USE FOR: SQL validation, N+1 detection, batch analysis. DO NOT USE FOR: running queries (execute_query), write impact (analyze_impact). Examples: analyze_query(query='SELECT * FROM users') analyze_query(query='SELECT * FROM users', schema='shipment', include_explain=True) |
| execute_queryA | Execute read-only SELECT queries. Writes are blocked. LEVEL: Data (actual table data retrieval) USE FOR: fetching data, counting rows, aggregations, joins. DO NOT USE FOR: INSERT/UPDATE/DELETE (use analyze_impact first). ERROR RECOVERY:
Examples: execute_query(query='SELECT * FROM users LIMIT 10') execute_query(query='SELECT COUNT(*) FROM orders') |
| analyze_impactA | Preview DELETE/UPDATE/DROP impact WITHOUT executing. Shows affected rows and rollback SQL. LEVEL: Query (write operation preview - never executes) USE FOR: previewing write impact, cascade effects, risk assessment. DO NOT USE FOR: reading data (execute_query), INSERT operations. Examples: analyze_impact(query="DELETE FROM users WHERE status='inactive'", schema='public') analyze_impact(query="UPDATE orders SET status='cancelled' WHERE id=1", schema='shipment') |
| query_optimizerA | Optimize slow queries - EXPLAIN plan, table stats, index recommendations. LEVEL: Query (single query optimization) USE FOR: slow query diagnosis, CREATE INDEX suggestions, execution plans. DO NOT USE FOR: running queries (execute_query), syntax validation (analyze_query). Examples: query_optimizer(query='SELECT * FROM orders WHERE customer_id=123', schema='shipment') query_optimizer(query='SELECT * FROM users', schema='public', run_explain=True) |
| database_healthA | Live database health - monitors active connections, sessions, locks, transactions. LEVEL: Database (single database monitoring) USE FOR: "is database healthy?", connection issues, lock problems, blocked queries, idle transactions, deadlock detection, XID wraparound check, "why is DB slow right now?". DO NOT USE FOR: index analysis (use maintenance_analysis), slow query history (use query_performance), table sizes/stats (use maintenance_analysis), query optimization (use query_optimizer), PostgreSQL server config (use configuration_review), replication (use replication_status). REAL-TIME: Shows current state of database activity. ERROR RECOVERY:
INCLUDE OPTIONS:
Examples: database_health() - Full health report database_health(include='locks') - Only lock information database_health(include='sessions') - Only session information database_health(include='transactions') - XID status and long transactions database_health(format='markdown') - Human-readable output |
| maintenance_analysisA | Table and index maintenance - analyzes indexes, vacuum status, table bloat, FK indexes. LEVEL: Database ↔ Schema ↔ Table (multi-level tool)
REQUIRED: Specify schema explicitly - use 'all' for all schemas or a specific schema name. USE FOR: finding unused indexes, duplicate indexes, tables needing vacuum, FK missing indexes, table sizes, TOAST analysis, autovacuum status, "which indexes should I drop?". DO NOT USE FOR: live connections/locks (use database_health), slow query history (use query_performance), specific query optimization (use query_optimizer), schema structure (use get_schema), partitioned tables (use partition_analysis). STATIC: Analyzes stored statistics, not real-time activity. ERROR RECOVERY:
INCLUDE OPTIONS:
Examples: maintenance_analysis() - All tables in public schema (default) maintenance_analysis(schema='all') - All schemas (database-wide) maintenance_analysis(schema='billing') - All tables in billing schema maintenance_analysis(schema='auth', table='users') - Specific table in auth schema maintenance_analysis(include='indexes') - Only index analysis maintenance_analysis(include='vacuum') - Only vacuum/bloat analysis maintenance_analysis(include='fk_indexes') - Only FK index analysis |
| query_performanceA | Historical query stats - shows top queries by time/calls/IO from pg_stat_statements. LEVEL: Database (database-wide query statistics) USE FOR: "what queries are slowest?", finding high-frequency queries, cache hit analysis, queries using temp files, overall query patterns, "which queries consume most time?". DO NOT USE FOR: analyzing ONE specific query (use query_optimizer), live running queries (use database_health), index recommendations (use maintenance_analysis), query syntax validation (use analyze_query). REQUIRES: pg_stat_statements extension installed. Examples: query_performance() - Top 20 queries by total time query_performance(order_by='calls') - Most frequently called queries query_performance(order_by='mean_time') - Slowest average execution query_performance(limit=50, min_calls=100) - Top 50, only queries called 100+ times |
| replication_statusA | Comprehensive replication health - physical, logical, CDC, slots, WAL, archiving. LEVEL: Server (PostgreSQL instance level) USE FOR: replication status, replica lag, standby, streaming replication, replication slots, CDC, logical replication, publications, subscriptions, WAL archiving, backup progress, "is replication healthy?", "how far behind is the replica?". DO NOT USE FOR: database-level health (use database_health), query performance (use query_performance), PostgreSQL settings (use configuration_review). INCLUDE OPTIONS:
Examples: replication_status() - Full replication report replication_status(include='physical') - Physical replication only replication_status(include='logical') - Logical replication/CDC only replication_status(include='slots') - Replication slots only replication_status(include='wal') - WAL status only replication_status(include='archiving') - WAL archiving status |
| configuration_reviewA | Reviews PostgreSQL configuration settings and provides tuning observations. LEVEL: Server (PostgreSQL instance configuration) USE FOR: configuration, settings, postgresql.conf, parameters, tuning, memory, extensions, "why is DB slow globally?", "is autovacuum configured correctly?", server tuning review. DO NOT USE FOR: database-level health (use database_health), query optimization (use query_optimizer), replication settings (use replication_status), table-specific issues (use maintenance_analysis). INCLUDE OPTIONS:
Examples: configuration_review() - Full configuration review configuration_review(include='memory') - Memory settings only configuration_review(include='connections') - Connection limits only configuration_review(include='autovacuum') - Autovacuum settings only configuration_review(include='logging') - Logging configuration configuration_review(include='extensions') - Installed extensions |
| duplicate_detectionA | Detect duplicate rows in a table based on specified columns. LEVEL: Table ↔ Column (requires table and columns parameters) USE FOR: finding duplicates, duplicate rows, "are there duplicate emails?", detecting duplicate records, data deduplication analysis. DO NOT USE FOR: general data quality (use data_quality_report), schema structure (use get_schema), null analysis (use data_quality_report with include='nulls'). Examples: duplicate_detection(table='users', columns='email', schema='public') duplicate_detection(table='orders', columns='customer_id,product_id', schema='shipment') |
| data_quality_reportA | Comprehensive data quality analysis - nulls, types, empty tables, outliers, soft deletes. LEVEL: Database ↔ Schema ↔ Table ↔ Column (multi-level tool)
REQUIRED: Specify schema explicitly - use 'all' for all schemas or a specific schema name. USE FOR: data quality, data profiling, finding nulls, empty tables, outliers, soft deletes, cardinality analysis, "which columns have too many nulls?", data validation. DO NOT USE FOR: finding duplicates (use duplicate_detection), security/PII scan (use sensitive_data_scan), schema structure (use get_schema). INCLUDE OPTIONS:
Examples: data_quality_report() - All tables in public schema (default) data_quality_report(schema='all') - Database-wide analysis data_quality_report(schema='billing') - All tables in billing schema data_quality_report(include='nulls') - Only null analysis data_quality_report(include='empty') - Only empty tables data_quality_report(include='soft_delete') - Find soft delete patterns data_quality_report(table='users', include='outliers', outlier_column='age') - Outlier detection |
| sensitive_data_scanA | Find PII/PHI columns - passwords, credit cards, SSN, emails. LEVEL: Database (scans all schemas by default) or Schema (if specified) USE FOR: finding sensitive data, GDPR compliance, security review. DO NOT USE FOR: permissions (security_audit), data quality (data_quality_report). Examples: sensitive_data_scan() - Scan all schemas sensitive_data_scan(schema='public') - Public schema only |
| security_auditA | Audit roles, privileges, RLS, SSL, and security definer functions. LEVEL: Schema or Database (schema='all') REQUIRED: Specify schema explicitly - use 'all' for all schemas or a specific schema name. USE FOR: security audit, role permissions, RLS policies, SSL status. DO NOT USE FOR: PII detection (sensitive_data_scan), data quality. INCLUDE: all, roles, privileges, rls, ssl, sensitive, functions Examples: security_audit(schema='sales') - Audit sales schema security_audit(schema='all') - All schemas security_audit(schema='billing', include='roles') - Roles only in billing |
| dependency_analysisA | Comprehensive dependency analysis - views, functions, triggers, sequences, FDW. LEVEL: Database ↔ Schema ↔ Table (multi-level tool)
REQUIRED: Specify schema explicitly - use 'all' for all schemas or a specific schema name. USE FOR: dependencies, views, functions, triggers, sequences, extensions, FDW, lineage, "what depends on this table?", "what views exist?", impact analysis before DROP. DO NOT USE FOR: table structure (use get_schema), index analysis (use maintenance_analysis), security permissions (use security_audit). INCLUDE OPTIONS:
Examples: dependency_analysis() - All dependencies in public schema (default) dependency_analysis(schema='all') - Database-wide analysis dependency_analysis(schema='billing') - Dependencies in billing schema dependency_analysis(table='users') - What depends on users table dependency_analysis(include='views') - Only view dependencies dependency_analysis(include='functions') - Only functions dependency_analysis(include='triggers') - Only triggers dependency_analysis(include='fdw') - Foreign data wrappers only |
| partition_analysisA | Partition analysis - list all partitioned tables or analyze specific table. LEVEL: Schema ↔ Table (multi-level tool)
USE FOR: partitions, partition analysis, partition details, partition size, inheritance, "which tables are partitioned?", partition skew detection, empty partition identification. DO NOT USE FOR: non-partitioned table maintenance (use maintenance_analysis), schema structure (use get_schema), index health (use maintenance_analysis). INCLUDE OPTIONS (only when table is specified):
Examples: partition_analysis() - List all partitioned tables across all schemas partition_analysis(table='events', schema='logs') - Detailed analysis of events table partition_analysis(table='orders', schema='shipment', include='size') - Size distribution |
| get_audit_logsA | Retrieve MCP audit logs for accountability and debugging. USE FOR: viewing tool call history, debugging issues, compliance audits. Examples: get_audit_logs() - Today's logs get_audit_logs(date='2026-05-29') - Specific date get_audit_logs(limit=10) - Last 10 entries |
| list_audit_filesA | List available audit log files. USE FOR: finding available log dates, checking log sizes. Returns list of log files with date, size, and entry count. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| connection_status | Current database connection status. Returns connection state, host, database, and basic pool info. Use this resource to check if connected before calling tools. For detailed pool stats, use health_check() tool. |
| server_config | Dbeast server configuration. Shows current configuration settings (without sensitive values). Useful for understanding server behavior, timeouts, and pool limits. |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/snss10/DBeast'
If you have feedback or need assistance with the MCP directory API, please join our Discord server