This server has been archived and is no longer actively maintained.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"mssql": {
"cwd": "C:/path/to/mcp-mssql-server",
"env": {
"MSSQL_CONNECTION_STRING": "sqlserver://user:password@host:1433?database=mydb&encrypt=disable"
},
"args": [
"run",
"."
],
"command": "go"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A read-only MCP (Model Context Protocol) server that connects AI agents like Claude Code to Microsoft SQL Server databases — including SSIS ETL package analysis. Single Go binary, zero dependencies, defense-in-depth security.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y '@anthropic-ai/claude-code' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
Claude Code: Sandbox Escape via Git Worktree Path Confusion Allows Unsandboxed Code Execution
Claude Code's worktree handling allowed creation of worktrees named ".git" and navigation to worktrees outside the sandbox context, enabling git directory confusion attacks. By exploiting symlink manipulation and git fsmonitor execution during worktree operations, an attacker could overwrite files in the user's home directory (such as .zshenv), leading to code execution outside of seatbelt sandbox restrictions. Reliably exploiting this required the user to clone a malicious repository containing
@anthropic-ai/claude-code has an Insecure Temporary File in /copy Command that Enables Response Disclosure and Symlink-Based File Write
The Claude Code `/copy` command wrote responses to a hardcoded, predictable path (`/tmp/claude/response.md`) without UID isolation, randomness, or symlink protection. The file was created world-readable (0644) in a world-traversable directory (0755), allowing any local user to read a privileged user's Claude response, which could contain secrets or credentials. Additionally, because the path was static and predictable, a local attacker could pre-create the directory and plant a symlink at the ex
Claude Code: Out-of-Band Data Exfiltration via Pre-Approved HuggingFace Domain in WebFetch
Because the hostname huggingface.co was pre-approved as a bare hostname for the WebFetch tool, any path on that domain—including attacker-controlled model repositories—was auto-approved without a permission prompt or being subject to --allowedTools restrictions. An attacker able to inject untrusted content into a Claude Code context could direct it to issue WebFetch requests against attacker-controlled repository files (e.g. /resolve/main/config.json), which HuggingFace counts as downloads serve
Claude Code: Trust Dialog Bypass via Git Worktree Spoofing Allows Arbitrary Code Execution
Claude Code used the git worktree `commondir` file when determining folder trust but did not validate its contents. By crafting a repository with a `commondir` file pointing to a path the victim had previously trusted, an attacker could bypass the trust dialog and immediately execute malicious hooks defined in `.claude/settings.json`. Exploiting this required the victim to clone a malicious repository and run Claude Code within it, and for the attacker to know or guess a path the victim had alre
Claude Code: Sandbox Escape via Symlink Following Allows Arbitrary File Write Outside Workspace
Claude Code's sandbox did not prevent sandboxed processes from creating symlinks pointing to locations outside the workspace. When Claude Code subsequently wrote to a path within such a symlink, its unsandboxed process followed the symlink and wrote to the target location outside the workspace without prompting the user for confirmation. This allowed a sandbox escape where neither the sandboxed command nor the unsandboxed app could independently write outside the workspace, but their combination
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in data
Manage Supabase projects — databases, auth, storage, and edge functions
Query and manage PostgreSQL databases directly from AI assistants
Zero-dependency, token-efficient database MCP server for Postgres, MySQL, SQL Server, MariaDB, SQLite.
🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
MCP Security Weekly
Get CVE alerts and security updates for Mcp Mssql Server and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A read-only MCP (Model Context Protocol) server that connects AI agents like Claude Code to Microsoft SQL Server databases — including multi-connection support and SSIS ETL package analysis. Single Go binary, zero dependencies, defense-in-depth security.
Claude AI (cloud) <-- HTTPS --> Claude Code (local) <-- stdio --> mcp-mssql (local) <-- TCP 1433 --> SQL Server
|
+-- File I/O --> .dtsx packages (SSIS)
SQL Server is never exposed to the internet. All database traffic stays local. SSIS tools parse .dtsx files directly from a configured path.
SELECT and WITH (CTE) queries allowedINSERT, UPDATE, DELETE, DROP, ALTER, CREATE, TRUNCATE, EXEC, EXECUTE, XP_CMDSHELL, OPENROWSET, BULK INSERT, MERGE, and semicolons are blocked using word-boundary regex matchinglist_tables and describe_tablepassword, salary, credit_card) are automatically stripped from query resultsTOP N injected into queries missing a row limit (default: 100, configurable)[AUDIT] tag (status, row count, query text); every table access logged with [ACCESS] tag.mcp-mssql-config.json per projectdescribe_table uses @p1 parameters to prevent SQL injection.exe with your team, no Go installation required.dtsx files for control flow, data flow, table references, and column mappingsAll database tools accept an optional connection parameter to target a specific named connection. If omitted, the default connection is used.
| Tool | Description | Parameters |
|---|---|---|
list_connections | List all configured connections and which is default. | none |
query_database | Execute a SELECT query. Auto-limited, validated, column-masked. | sql (required), connection |
list_tables | List all queryable tables. Blocked tables excluded. | connection |
describe_table | Get column names, data types, nullability. Parameterized. | table_name (required), connection |
exec_sp | Execute a read-only stored procedure. SP definition inspected first. | procedure (required), params, connection |
benchmark_query | Compare query performance (time + row count, no data returned). | query1 (required), query2, connection |
export_sql_to_json | Export query or SP results to a JSON file. | sql or procedure (required), params, connection |
Parse .dtsx files from the configured project_ssis_path, or break down a supplied local .ispac archive.
| Tool | Description | Parameters |
|---|---|---|
ssis_list_packages | List all .dtsx packages in the configured path. | none |
ssis_breakdown_ispac | Break down a local .ispac archive into packages, control flow, data flow, table refs, connection managers, and project parameters. Sensit |