An MCP server for analyzing Microsoft SQL Server databases, including schema exploration and stored procedure analysis
This server has 2 tools with partially visible schemas and minimal documentation. Tool names are reasonably verb-based (analyze_*), but descriptions are short and lack context for LLM selection. Input schemas are present but sparse. No output schemas documented. Error handling is basic. The code shows database integration but the tool definitions lack the rigor expected of production-grade agent tools.
An AI-assisted MCP tool that analyzes database schemas and outputs human-readable Markdown documentation.
MCP tool for generating LLM-friendly prompts to explain stored procedures
No output schemas documented for either tool. LLM cannot infer response structure, making downstream tool chaining impossible and forcing guesswork about field names.
Tool descriptions are generic and lack LLM-selection context. Neither description explains WHEN to use the tool vs. alternatives, what prerequisites exist, or what the output can be used for.
Parameter descriptions lack constraint documentation. 'schema_name' defaults to 'dbo' but does not state: are other schemas valid? Is it case-sensitive? What schemas exist in the target database?
No error handling guidance. Code catches pyodbc.Error and prints to stderr, but tool responses do not guide the LLM on recovery. If procedure_name is invalid, what does the tool return? The code returns None silently, which LLM cannot act on.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 24 | - | v1 |
Parameter descriptions lack format specification. 'procedure_name' accepts a string, but does not state: must it be fully qualified (schema.procedure)? Is it case-sensitive? What characters are allowed?
Tool composition issue: both tools operate on database schema but lack clear distinction. 'analyze_database_schema' explores tables/columns; 'analyze_stored_procedure' explains procedures. The naming makes this clear, but descriptions should state the scope explicitly to prevent misuse.