MCP server for SQL Server metadata, parameterized queries, plan analysis, and writes opt-in.
Connect Runs on your machine
claude mcp add mcp-mssql -e MCPMSSQL_CONNECTION_STRING=<MCPMSSQL_CONNECTION_STRING> -e MCPMSSQL_DESCRIPTION=<MCPMSSQL_DESCRIPTION> -e MCPMSSQL_QUERY_MAX_ROWS=<MCPMSSQL_QUERY_MAX_ROWS> -e MCPMSSQL_QUERY_COMMAND_TIMEOUT_SECONDS=<MCPMSSQL_QUERY_COMMAND_TIMEOUT_SECONDS> -e MCPMSSQL_QUERY_SNAPSHOT_MAX_ROWS=<MCPMSSQL_QUERY_SNAPSHOT_MAX_ROWS> -e MCPMSSQL_QUERY_SNAPSHOT_COMMAND_TIMEOUT_SECONDS=<MCPMSSQL_QUERY_SNAPSHOT_COMMAND_TIMEOUT_SECONDS> -e MCPMSSQL_ANALYZE_COMMAND_TIMEOUT_SECONDS=<MCPMSSQL_ANALYZE_COMMAND_TIMEOUT_SECONDS> -e MCPMSSQL_ALLOW_WRITE=<MCPMSSQL_ALLOW_WRITE> -e MCPMSSQL_WRITE_COMMAND_TIMEOUT_SECONDS=<MCPMSSQL_WRITE_COMMAND_TIMEOUT_SECONDS> -e DOTNET_ENVIRONMENT=<DOTNET_ENVIRONMENT> -- dnx Alyio.McpMssql --yes
{
"mcpServers": {
"mcp-mssql": {
"command": "dnx",
"args": [
"Alyio.McpMssql",
"--yes"
],
"env": {
"MCPMSSQL_CONNECTION_STRING": "<MCPMSSQL_CONNECTION_STRING>",
"MCPMSSQL_DESCRIPTION": "<MCPMSSQL_DESCRIPTION>",
"MCPMSSQL_QUERY_MAX_ROWS": "<MCPMSSQL_QUERY_MAX_ROWS>",
"MCPMSSQL_QUERY_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_QUERY_COMMAND_TIMEOUT_SECONDS>",
"MCPMSSQL_QUERY_SNAPSHOT_MAX_ROWS": "<MCPMSSQL_QUERY_SNAPSHOT_MAX_ROWS>",
"MCPMSSQL_QUERY_SNAPSHOT_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_QUERY_SNAPSHOT_COMMAND_TIMEOUT_SECONDS>",
"MCPMSSQL_ANALYZE_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_ANALYZE_COMMAND_TIMEOUT_SECONDS>",
"MCPMSSQL_ALLOW_WRITE": "<MCPMSSQL_ALLOW_WRITE>",
"MCPMSSQL_WRITE_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_WRITE_COMMAND_TIMEOUT_SECONDS>",
"DOTNET_ENVIRONMENT": "<DOTNET_ENVIRONMENT>"
}
}
}
}
{
"mcpServers": {
"mcp-mssql": {
"command": "dnx",
"args": [
"Alyio.McpMssql",
"--yes"
],
"env": {
"MCPMSSQL_CONNECTION_STRING": "<MCPMSSQL_CONNECTION_STRING>",
"MCPMSSQL_DESCRIPTION": "<MCPMSSQL_DESCRIPTION>",
"MCPMSSQL_QUERY_MAX_ROWS": "<MCPMSSQL_QUERY_MAX_ROWS>",
"MCPMSSQL_QUERY_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_QUERY_COMMAND_TIMEOUT_SECONDS>",
"MCPMSSQL_QUERY_SNAPSHOT_MAX_ROWS": "<MCPMSSQL_QUERY_SNAPSHOT_MAX_ROWS>",
"MCPMSSQL_QUERY_SNAPSHOT_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_QUERY_SNAPSHOT_COMMAND_TIMEOUT_SECONDS>",
"MCPMSSQL_ANALYZE_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_ANALYZE_COMMAND_TIMEOUT_SECONDS>",
"MCPMSSQL_ALLOW_WRITE": "<MCPMSSQL_ALLOW_WRITE>",
"MCPMSSQL_WRITE_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_WRITE_COMMAND_TIMEOUT_SECONDS>",
"DOTNET_ENVIRONMENT": "<DOTNET_ENVIRONMENT>"
}
}
}
}
{
"servers": {
"mcp-mssql": {
"type": "stdio",
"command": "dnx",
"args": [
"Alyio.McpMssql",
"--yes"
],
"env": {
"MCPMSSQL_CONNECTION_STRING": "<MCPMSSQL_CONNECTION_STRING>",
"MCPMSSQL_DESCRIPTION": "<MCPMSSQL_DESCRIPTION>",
"MCPMSSQL_QUERY_MAX_ROWS": "<MCPMSSQL_QUERY_MAX_ROWS>",
"MCPMSSQL_QUERY_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_QUERY_COMMAND_TIMEOUT_SECONDS>",
"MCPMSSQL_QUERY_SNAPSHOT_MAX_ROWS": "<MCPMSSQL_QUERY_SNAPSHOT_MAX_ROWS>",
"MCPMSSQL_QUERY_SNAPSHOT_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_QUERY_SNAPSHOT_COMMAND_TIMEOUT_SECONDS>",
"MCPMSSQL_ANALYZE_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_ANALYZE_COMMAND_TIMEOUT_SECONDS>",
"MCPMSSQL_ALLOW_WRITE": "<MCPMSSQL_ALLOW_WRITE>",
"MCPMSSQL_WRITE_COMMAND_TIMEOUT_SECONDS": "<MCPMSSQL_WRITE_COMMAND_TIMEOUT_SECONDS>",
"DOTNET_ENVIRONMENT": "<DOTNET_ENVIRONMENT>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
MCPMSSQL_CONNECTION_STRINGOptional, secret | Default profile SQL Server connection string (often contains secrets). Optional if profiles are only in user appsettings. |
MCPMSSQL_DESCRIPTIONOptional | Optional human-readable description for the default profile. |
MCPMSSQL_QUERY_MAX_ROWSOptional | Max rows per interactive query (default 500; ceiling 1000). |
MCPMSSQL_QUERY_COMMAND_TIMEOUT_SECONDSOptional | Interactive query command timeout in seconds (default 30). |
MCPMSSQL_QUERY_SNAPSHOT_MAX_ROWSOptional | Max rows for snapshot queries (default 10000; ceiling 50000). |
MCPMSSQL_QUERY_SNAPSHOT_COMMAND_TIMEOUT_SECONDSOptional | Snapshot query timeout in seconds (default 120). |
MCPMSSQL_ANALYZE_COMMAND_TIMEOUT_SECONDSOptional | Execution plan analysis timeout in seconds (default 300; ceiling 600). |
MCPMSSQL_ALLOW_WRITEOptional | Enable write commands (DDL/DML) via run_command on the default profile (default false). With no write-enabled profile the tool is not advertised at all. Soft guard only — prefer a db_datareader login for a hard read-only guarantee. |
MCPMSSQL_WRITE_COMMAND_TIMEOUT_SECONDSOptional | Write command timeout in seconds (default 60; ceiling 600). |
DOTNET_ENVIRONMENTOptional | Set to Development to load dotnet user-secrets (local dev). |
Details
| Package | [email protected] (NUGET, stdio) |
| First published | 26 Oct 2026 |
| Last updated | 26 Oct 2026 |
| Registry name | io.github.alyiox/mcp-mssql |
More databases servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
