Integrates with SQL Server to enable database schema exploration, query execution, and stored procedure management via J...
Created byApr 23, 2025
SQL Server MCP Server for Windsurf IDE
A standalone MCP (Model Context Protocol) server written in C# that provides SQL Server integration capabilities as an addon to Windsurf IDE.
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
Prerequisites
.NET 9.0 SDK or higher
SQL Server instance (local or remote)
SQL Server client tools
Setup
Build the project:
Configure the application:
- Copy `appsettings.example.json` to `appsettings.json`
- Update the connection string and other settings in `appsettings.json` with 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 Windsurf:
- Copy the contents of `windsurf_mcp_config.json` to your Windsurf MCP configuration file (typically located at `~/.codeium/windsurf/mcp_config.json`)
- Update the path to point to 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 <repository-url>`
- 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 string
`LogPath`: Directory where log files will be stored
`DebugMode`: Set to "true" to enable detailed debug logging
Publishing
You can publish the application as a self-contained executable:
This will create a single executable file that includes all dependencies.
Protocol
The MCP server communicates through standard input/output using a JSON-based protocol.
Request Format
Response Format
Or in case of error:
Supported Actions
1. Connect to a SQL Server
2. List Databases
3. List Tables in a Database
4. Get Table Columns
5. List Stored Procedures
6. Execute Database Query
7. Execute System Query
8. Execute Stored Procedure
Integration with Windsurf
This MCP server can be used from Windsurf IDE 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 handling
`JsonRpcHandler.cs`: Handles JSON-RPC protocol and dispatches requests
Configuration is loaded from `appsettings.json`
Logs are written to files specified by the `LogPath` setting
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 fields
`connection_failed`: Failed to connect to SQL Server
`missing_parameter`: Required parameter not provided
`query_execution_error`: Error executing a SQL query
`database_not_found`: Specified database does not exist