Install
$ agentstack add mcp-ian-cowley-mcpsqlserver ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
SQL Server MCP Server
A standalone MCP (Model Context Protocol) server written in C# that provides SQL Server integration capabilities for any MCP-compliant IDE or client.
Features
- SQL Server connectivity
- Database schema exploration
- Table and view inspection
- Column metadata retrieval
- Stored procedure enumeration
- SQL query execution
- Stored procedure execution
- Debug mode for troubleshooting
- Configurable logging path
- Dynamic Project Connection Resolver: Automatically resolves and overrides database connection strings dynamically based on the active file in the editor
Prerequisites
- .NET 10.0 SDK or higher
- SQL Server instance (local or remote)
- SQL Server client tools
Setup
- Build the project:
dotnet build
- Configure the application:
- Copy
appsettings.example.jsontoappsettings.json - Update the connection string and other settings in
appsettings.jsonwith your SQL Server details
``json { "ConnectionStrings": { "DefaultConnection": "Server=your-server;Database=master;User ID=your-username;Password=your-password;TrustServerCertificate=True" }, "LogPath": "C:\\Path\\To\\Your\\LogDirectory\\", "DebugMode": "false" } ``
- Configure the MCP server in your IDE / client:
- Add the server configuration to your IDE's MCP config file (e.g., Windsurf, Claude Desktop config, or Cline/Cursor settings).
- Point the command to the path of your built executable:
``json { "mcpServers": { "sqlMcpService": { "command": "path/to/your/MCPSqlServer.exe", "args": [], "description": "SQL Server MCP Service" } } } ``
- Set up GitHub integration:
- Create a new GitHub repository for your project
- Initialize a new Git repository in your project directory using
git init - Add your GitHub repository as a remote using
git remote add origin - Push your changes to the remote repository using
git push -u origin master
Configuration Options
The appsettings.json file contains the following configuration options:
ConnectionStrings:DefaultConnection: The SQL Server connection stringLogPath: Directory where log files will be storedDebugMode: Set to "true" to enable detailed debug loggingAllowWorkspaceOverride: Set to "false" to disable dynamic project connection overrides (defaults to "true")
Dynamic Project Connection Resolver
In multi-project workspaces where different folders or subprojects connect to different databases, you can avoid updating the main configuration constantly:
- All database tools accept an optional
currentFilePathparameter (typically automatically populated by the IDE client with the active file's path). - The server walks up the directory tree from the file's parent folder looking for the nearest
appsettings.json. - If found, it dynamically extracts and uses that file's
ConnectionStrings:DefaultConnectionfor the query execution. - If no config file is found, or if
AllowWorkspaceOverrideis set to"false", it falls back to the primary connection string loaded at startup.
Publishing
You can publish the application as a self-contained executable:
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
This will create a single executable file that includes all dependencies.
Protocol
The MCP server communicates through standard input/output using the standard JSON-RPC 2.0 Model Context Protocol.
Request Format (tools/call)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "tool-name",
"arguments": {
"param1": "value1",
"param2": "value2"
}
}
}
Response Format
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "JSON-serialized tool output"
}
]
}
}
Or in case of error:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32602,
"message": "Error description"
}
}
Supported Tools
1. List Databases (get_databases)
List all available non-system SQL Server databases.
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_databases",
"arguments": {}
}
}
2. List Tables in a Database (get_tables)
List all tables and views in a specified database.
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_tables",
"arguments": {
"database": "AdventureWorks",
"schema": "dbo"
}
}
}
3. Get Table Columns (get_columns)
List all columns and column metadata in a specified table.
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_columns",
"arguments": {
"database": "AdventureWorks",
"schema": "Person",
"table": "Person"
}
}
}
4. List Stored Procedures (get_procedures)
List all stored procedures in a specified database.
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_procedures",
"arguments": {
"database": "AdventureWorks",
"schema": "dbo"
}
}
}
5. Get Stored Procedure Definition (get_procedure_definition)
Get the definition of a stored procedure.
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_procedure_definition",
"arguments": {
"database": "AdventureWorks",
"schema": "dbo",
"name": "uspGetEmployeeManagers"
}
}
}
6. Execute Database Query (execute_database_query)
Execute a SQL query in the context of a specific database.
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "execute_database_query",
"arguments": {
"database": "AdventureWorks",
"query": "SELECT TOP 10 * FROM Person.Person"
}
}
}
7. Execute System Query (execute_system_query)
Execute a SQL query at the server instance level (no database context required).
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "execute_system_query",
"arguments": {
"query": "SELECT name FROM sys.databases"
}
}
}
8. Execute Stored Procedure (execute_procedure)
Execute a stored procedure.
Request:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "execute_procedure",
"arguments": {
"database": "AdventureWorks",
"schema": "dbo",
"procedure": "uspGetEmployeeManagers",
"parameters": {
"BusinessEntityID": 5
}
}
}
}
IDE / Client Integration
This MCP server can be used from any MCP-compliant IDE or client (e.g. Windsurf, Cursor, Cline, Claude Desktop) to:
- Browse database schemas
- Execute SQL queries and view results
- Get code completion for table and column names
- Run stored procedures
- Generate SQL code snippets
- Analyze database structures
Code Structure
The application is organized into the following components:
Program.cs: Main entry point and request handlingJsonRpcHandler.cs: Handles JSON-RPC protocol and dispatches requests- Configuration is loaded from
appsettings.json - Logs are written to files specified by the
LogPathsetting
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Error Handling
Common error codes:
invalid_request: Malformed JSON or missing required fieldsconnection_failed: Failed to connect to SQL Servermissing_parameter: Required parameter not providedquery_execution_error: Error executing a SQL querydatabase_not_found: Specified database does not existtable_not_found: Specified table does not exist
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ian-cowley
- Source: ian-cowley/MCPSqlServer
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.