Node.js MCP server for runtime database connections with support for multiple database types
This server demonstrates moderate definition quality with consistent tool registration and clear naming. All 10 tools are explicitly defined in src/mcp/tools.js with proper input schemas and descriptions. Naming follows verb_noun conventions (connect_, execute_, list_, test_, close_, etc.) which aligns with production baselines. However, there are significant gaps: output schemas are entirely undocumented, error handling guidance is absent, and parameter descriptions lack actionable constraints (e.g., no validation rules for connection names, timeout ranges, or configuration format). The average tool description length is ~80 chars, which is below the 194-char production baseline and provides minimal context for when/why an LLM should select each tool. Parameter descriptions are generic ('Connection name', 'SQL query') without format hints or dependency documentation. No evidence of response field naming consistency or chaining ID inclusion.
Close a database connection
Connect to a database with the specified configuration
Connect to a database using a named configuration from config file
Get detailed information about a specific connection
Execute a SQL query on a connected database
Export connection configurations for backup or migration
Import connection configurations from backup
Output schemas are completely undocumented. The code does not specify what fields tools return, their types, or structure. LLMs cannot plan downstream tool calls or extract relevant data without knowing output format.
Parameter descriptions lack actionable validation rules. E.g., 'connection' param has no guidance on naming format, 'sql' param has no SQL dialect or length constraints, timeout parameters have no min/max bounds, 'type' param lacks clarification on when to use 'postgresql' vs 'postgres' vs 'pg'.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 45 | - | v1 |
List all active database connections
Show all database configurations available in the config file that can be used with connect_from_config
Test the connectivity of a database connection
Tool descriptions are too brief and lack context. Average length ~80 chars vs production baseline of 194 chars. Descriptions do not explain WHEN to use each tool, dependencies between tools, or prerequisites. E.g., 'connect_from_config' does not explain what config file format is expected or where it's located.
No error handling guidance or recovery paths documented. Tools have no description of failure modes, error codes, or what the LLM should do if a call fails. E.g., if 'connect_database' fails due to invalid credentials, should the LLM retry? Ask the user? Try a different host?
Password exposed as a tool parameter. The 'password' field in connect_database is passed directly as a parameter. Per pattern:secret-injection, credentials must use server-side secret injection via environment variables or vault to prevent leakage in logs and traces.
Tool descriptions do not clarify state-modifying behavior. Which tools have side effects? 'connect_database' clearly creates a connection, but 'export_connections' and 'import_connections' do not explicitly state whether they modify state. Per pattern:command-tool, tools that modify state must declare this.
No pagination or result-limiting guidance. 'list_connections' and 'show_configurations' do not document how many results they return or whether pagination is supported. Per pattern:paginated-result, tools returning lists should accept limit/offset and return counts.
Parameter relationships and mutual exclusivity not documented. 'connect_database' has both explicit parameters and an optional 'name' field. It's unclear if 'port' is mutually exclusive with default port behavior, or how 'ssl', 'connectionTimeout', and other pool settings interact.