MCP Server for Microsoft SQL Server - read-only database exploration
mcp-sqlserver demonstrates solid naming conventions (verb_noun pattern: list_databases, describe_table, find_entities) and comprehensive parameter schemas with types and descriptions. However, tool descriptions are inconsistent in depth, some are clear and actionable (e.g., 'Show columns, indexes, constraints, and relationships for a table'), while others lack context on when to use them or what they return. Parameter descriptions are generally present but often minimal (e.g., 'Table name' without format guidance). Output schemas are not explicitly documented in the source, forcing LLMs to infer structure. Error handling guidance is absent, no recovery hints or categorization. Security is well-handled (read-only enforcement, no secrets in params), but composition could be tighter: some tools (e.g., find_entities, suggest_join_path) overlap in intent and could be unified. Pagination is implemented consistently across list/search tools, which is good practice.
Show the active SQL Server connection, permissions, and metadata cache status
Show columns, indexes, constraints, and relationships for a table
Explain the likely role of a table based on names, columns, descriptions, and relationships
Search tables by intent using names, columns, descriptions, aliases, and relationship signals
Search for tables and views by name (partial match)
Show connection state, cache status, and runtime metrics
List databases accessible on the current SQL Server
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Show columns, indexes, constraints') but do not specify the JSON structure, field names, or types. LLMs cannot plan downstream calls or extract data reliably without knowing response shape.
Error handling lacks recovery guidance. No tool description explains what to do if a query fails, a table is not found, or a connection switches unexpectedly. Errors should categorize as retryable/user-fixable/fatal and suggest next steps.
Overlapping tool intent. find_entities, suggest_join_path, and plan_query all help agents navigate schema relationships. These could be unified into a single 'explore_schema' tool with a mode parameter, reducing cognitive load and decision paralysis.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
List all schemas in the database
List all tables and views in the database, grouped by schema
Plan a query skeleton to join multiple tables with suggested columns
Execute a read-only SQL query with optional pagination and format control
Reload metadata cache from the database
Summarize schemas, central tables, and probable hotspots in the catalog
Find a join path between two tables using the foreign-key graph
Switch SQL Server credentials (user and password)
Switch to a different database on the same server
Switch to a different port on the same server
Parameter descriptions are minimal. Many lack format guidance, constraints, or examples. E.g., 'Table name (e.g. dbo.Cliente)' is good, but 'schema' in find_tables just says 'Restrict search to a specific schema' without clarifying if it's optional or how it interacts with the name parameter.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). While all tools are read-only or reversible, explicit annotations would help agents reason about safety and retry logic without parsing descriptions.