tarciorodrigo/Serel.MCPServer.SqlServer
If you are the rightful owner of Serel.MCPServer.SqlServer and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
A Model Context Protocol (MCP) server for SQL Server integration, developed in .NET 9, enabling AI agents to access and interact with SQL Server databases using standardized tools.
SQL Server MCP Server
Um servidor MCP (Model Context Protocol) para integração com SQL Server, desenvolvido em .NET 9. Este servidor permite que agentes de IA acessem e interajam com bases de dados SQL Server através de ferramentas padronizadas.
Funcionalidades
Tools (Ferramentas) Disponíveis
- list_tables - Lista todas as tabelas da base de dados
- describe_table - Descreve a estrutura de uma tabela específica
- execute_query - Executa queries SQL SELECT (apenas leitura)
- list_stored_procedures - Lista todas as stored procedures
- describe_stored_procedure - Descreve uma stored procedure específica
- list_views - Lista todas as views da base de dados
- describe_view - Descreve uma view específica
- list_triggers - Lista todos os triggers
- describe_trigger - Descreve um trigger específico
- generate_crud_endpoints - Gera código para endpoints CRUD
Resources (Recursos) Disponíveis
- database://schema - Schema completo da base de dados em formato JSON
Configuração
1. Connection String
Configure a connection string no appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=YourDatabase;Integrated Security=true;TrustServerCertificate=true;"
}
}
Ou defina a variável de ambiente:
export SQL_CONNECTION_STRING="Server=localhost;Database=YourDatabase;Integrated Security=true;TrustServerCertificate=true;"
2. Exemplos de Connection String
SQL Server Authentication:
Server=localhost;Database=YourDatabase;User Id=sa;Password=YourPassword;TrustServerCertificate=true;
Windows Authentication:
Server=localhost;Database=YourDatabase;Integrated Security=true;TrustServerCertificate=true;
Azure SQL:
Server=tcp:yourserver.database.windows.net,1433;Initial Catalog=yourdatabase;Persist Security Info=False;User ID=yourusername;Password=yourpassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
Instalação e Uso
1. Clonar e Build
git clone <seu-repositorio>
cd SqlServerMcpServer
dotnet build
2. Executar
dotnet run
3. Uso como MCP Server
Configure seu cliente MCP para usar este servidor via stdio. Exemplo de configuração:
{
"mcpServers": {
"sqlserver": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/SqlServerMcpServer"],
"env": {
"SQL_CONNECTION_STRING": "sua-connection-string-aqui"
}
}
}
}
Exemplos de Uso
1. Listar Tabelas
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_tables",
"arguments": {}
}
}
2. Descrever Tabela
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "describe_table",
"arguments": {
"tableName": "Users"
}
}
}
3. Executar Query
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "execute_query",
"arguments": {
"query": "SELECT TOP 10 * FROM Users WHERE IsActive = 1"
}
}
}
4. Gerar Endpoints CRUD
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "generate_crud_endpoints",
"arguments": {
"tableName": "Users",
"framework": "aspnet"
}
}
}
Frameworks Suportados para Geração de Código
- aspnet - ASP.NET Core Web API
- fastapi - FastAPI (Python)
- express - Express.js (Node.js)
Segurança
- Apenas queries SELECT são permitidas na ferramenta
execute_query - Todas as outras operações são apenas de leitura (metadata)
- Use connection strings com privilégios mínimos necessários
Estrutura do Projeto
SqlServerMcpServer/
├── Program.cs # Entry point
├── McpHandler.cs # Handler principal MCP
├── Models/
│ └── McpModels.cs # Modelos MCP e base de dados
├── Services/
│ └── DatabaseService.cs # Serviço de acesso à base de dados
├── SqlServerMcpServer.csproj # Arquivo do projeto
├── appsettings.json # Configurações
└── README.md # Esta documentação
Troubleshooting
Connection Issues
- Verifique se o SQL Server está a aceitar ligações
- Confirme se as credenciais estão corretas
- Verifique se a base de dados existe
- Para Azure SQL, certifique-se de que o firewall permite a ligação
Permission Issues
Certifique-se de que o utilizador tem permissões para:
- SELECT nas tabelas system (INFORMATION_SCHEMA, sys.*)
- SELECT nas tabelas, views, procedures que pretende aceder
Contribuição
- Fork o projeto
- Crie uma branch para sua funcionalidade
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
Licença
MIT License