A powerful MCP server for SQL Server — schema discovery, query execution, DDL, stored procedures, performance diagnostics & more.
Server has 22 well-organized tools with consistent naming (verb_noun pattern) and descriptions present for all tools. However, parameter descriptions are sparse or missing for many tools, and output schemas are not documented. Error handling is minimal, most tools lack recovery guidance. Security model is sound (no secrets in params, per-server permission checks), but composition could be tighter. Average tool description ~120 chars (within baseline 194), but parameter annotations largely absent.
Get parameter information and source code for a stored procedure
Get detailed column information for a table (names, types, nullability, defaults, constraints)
Get column information and source code for a view
Execute a DDL statement (CREATE, ALTER, DROP, TRUNCATE). Requires admin security mode or allowDDL: true.
Execute a data modification query (INSERT, UPDATE, DELETE, MERGE). Requires readwrite or admin security mode.
Execute a stored procedure with parameters. Requires readwrite or admin security mode.
Execute a read-only SQL query (SELECT). Automatically applies row limits from configuration.
Output schemas not documented. Tools return results but LLMs cannot predict field names, types, or structure. Forces agents to guess what data is available and risks failed downstream tool chains.
Parameter descriptions missing or minimal. 'top' param in get_wait_stats and get_space_usage lacks guidance on valid range (1 - 100? 1 - 1000?). 'parameters' object in execute_procedure has no type hints for values. LLMs cannot validate inputs without explicit constraints.
No error recovery guidance. Tools lack actionable error messages. E.g., if execute_query fails due to invalid SQL, the LLM receives no hint on how to fix it or which tool to call next. Errors should guide recovery (e.g., 'Invalid column name. Call describe_table() to see available columns').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
Show currently running queries on the server (from sys.dm_exec_requests)
Show current blocking chains — which sessions are blocking others
Get recent deadlock events from the system_health Extended Events session
Get index usage statistics: seeks, scans, lookups, and updates (from sys.dm_db_index_usage_stats)
Show long-running open transactions that may be holding locks
Get the estimated execution plan for a SQL query (without executing it)
Get detailed disk space usage by table in a database
Get table statistics: row count, total size, index size, and fragmentation
Get top server wait statistics — identifies performance bottlenecks (CPU, I/O, locks, etc.)
List all foreign key relationships in a database or for a specific table
List all indexes on a table
List all stored procedures in a database, optionally filtered by schema
List all configured SQL Server connections and their details (host, database, auth type, security mode)
List all tables in a database, optionally filtered by schema
List all views in a database, optionally filtered by schema
No pagination or result limits documented. Tools like list_tables, list_views, list_procedures may return hundreds of items, bloating context. Descriptions should state max result count and offer pagination (limit/offset or cursor).
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint declared. LLMs cannot distinguish safe discovery tools from destructive DDL/mutation tools without explicit hints. execute_ddl and execute_mutation should be marked destructive.