mssql-mcp has 4 tools with complete input schemas and descriptions, but quality is uneven. Tool names lack action verbs (mssql_discover, mssql_query, mssql_tables, mssql_schema are noun-heavy; should be discover_mssql_connections, execute_mssql_query, list_mssql_tables, describe_mssql_table). Descriptions are present (avg ~100 chars) but lack WHEN/WHY guidance and error recovery hints. Parameters have types and descriptions, but lack enums for constrained values (e.g., no enum for connection_string key filtering). Output schemas are documented in code (QueryResult, TablesResult, SchemaResult) but not exposed in tool definitions, LLMs cannot see what fields to expect. No error handling guidance; no pagination for large result sets; mssql_query accepts arbitrary SQL with no injection guards or dry-run option.
Discover MSSQL connection strings in appsettings.json and appsettings.*.json files in a directory.
Execute a SQL query against a Microsoft SQL Server database. Returns columns and rows as JSON.
Describe the schema of a specific table (columns, types, nullability, primary keys, defaults).
List all user tables in the connected MSSQL database.
Tool names lack action verbs. 'mssql_discover', 'mssql_query', 'mssql_tables', 'mssql_schema' are noun-heavy and do not clearly signal what action the LLM should expect. Should be 'discover_mssql_connections', 'execute_mssql_query', 'list_mssql_tables', 'describe_mssql_table'.
Output schemas are defined in Go structs (QueryResult, TablesResult, SchemaResult) but NOT exposed in the tool definitions sent to the LLM. LLMs cannot see what fields to expect in responses, forcing them to guess and plan downstream calls blindly.
mssql_query accepts arbitrary SQL with no injection guards, dry-run option, or confirmation step. Agents can execute destructive queries (DROP TABLE, DELETE) without safeguards. Should support a dry-run mode or require explicit confirmation for non-SELECT statements.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Descriptions lack WHEN/WHY guidance and error recovery hints. E.g., 'Execute a SQL query' does not explain when to use mssql_query vs mssql_tables vs mssql_schema, or what to do if the connection fails. Should include dependency hints and recovery paths.
No pagination support. mssql_tables and mssql_query can return unbounded result sets. Large tables will blow the context window. Should add limit/offset parameters and return a total count.