GitHubスター
0
ユーザー評価
未評価
お気に入り
0
閲覧数
12
フォーク
0
イシュー
0
README
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