Generic MCP Server - Multi-database support with MySQL and MongoDB via HTTP/SSE
This server provides 4 tools with basic descriptions and partial schema definitions. All tools have input schemas with type information and parameter descriptions, meeting minimum viability. However, there are significant gaps: (1) descriptions are generic and lack actionable context for LLM selection (e.g., 'Execute a read/write query' doesn't explain WHEN to use mysql_query vs mongodb_query); (2) output schemas are completely undocumented, no indication what fields are returned or how results are structured; (3) no pagination guidance despite tools accepting arbitrary queries that could return thousands of rows; (4) security warnings missing for WRITE tools; (5) error handling not addressed, no guidance on what happens on connection failures, invalid queries, or permission denials; (6) parameter descriptions lack format constraints (e.g., what constitutes a valid database_id?). The mongodb_query tool is particularly concerning, it accepts 6 optional parameters (query, update, document, documents) with no guidance on which combinations are valid for which operations, forcing the LLM to guess.
Get the schema information for a database (tables/collections and their structure)
List all available databases and their connection status
Execute a query on a MongoDB database (supports find, insertOne, insertMany, updateOne, updateMany, deleteOne, deleteMany, findOneAndDelete, findOneAndUpdate)
Execute a read/write query on a MySQL database (supports SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, ALTER TABLE, DROP, TRUNCATE)
Output schemas completely undocumented. No indication what fields mysql_query, mongodb_query, list_databases, or get_database_schema return. LLMs cannot plan downstream tool calls or extract structured data without knowing response format.
mongodb_query accepts 6 optional parameters (query, update, document, documents) with no guidance on valid combinations. For example, does 'updateOne' require both query and update? Can insert operations use query? LLM must guess, leading to malformed calls.
Tool descriptions lack actionable context for selection. 'Execute a read/write query on a MySQL database' doesn't explain WHEN to select mysql_query over mongodb_query. Missing: prerequisites, operation limits, performance implications, and when to call list_databases or get_database_schema first.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
WRITE tools (mysql_query, mongodb_query) lack security warnings in descriptions. Descriptions must explicitly state that these operations are destructive and may require confirmation. No guidance on dry-run, rollback, or confirmation patterns.
No pagination or result limiting guidance. Tools accept arbitrary SQL/MongoDB queries that could return thousands of rows. No mention of page size limits, offset, or result caps in descriptions. This will exhaust context windows and degrade LLM reasoning.
Parameter 'database_id' has minimal description ('The ID of the MySQL database to query'). No explanation of valid format, available values, or how to discover valid IDs. Should reference list_databases for discovery.
No error handling documented. No guidance on what happens on connection failures, invalid SQL syntax, permission denials, or timeout. Error responses presumably return raw database errors, which are opaque to LLMs.