azure_mcp_server

CihanErden96/azure_mcp_server

3.2

If you are the rightful owner of azure_mcp_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

Azure SQL MCP Server is a high-performance server optimized for connecting to Azure SQL Server using Entra ID authentication, built with Node.js.

Tools
4
Resources
0
Prompts
0

Azure SQL MCP Server (Node.js)

Azure SQL Server'a Entra ID ile bağlanabilen Model Context Protocol (MCP) server'ı. Node.js ile yüksek performans için optimize edilmiş.

🚀 Özellikler

  • Yüksek Performans - Node.js async I/O ile optimize edilmiş
  • 🔐 Azure Entra ID Authentication - Service Principal veya Default Credential
  • 📊 SQL Sorgu Çalıştırma - Parametreli sorgular ile güvenli
  • 🗂️ Şema Yönetimi - Tablo şemalarını görüntüleme
  • 📋 Veritabanı Keşfi - Tabloları listeleme ve bilgi alma
  • 👁️ Görünüm Yönetimi - View oluşturma ve listeleme
  • ⚙️ Saklı Yordam Yönetimi - Stored procedure oluşturma ve listeleme
  • 🔒 Güvenli Bağlantı - TLS/SSL zorunlu
  • 🎯 Connection Pooling - Otomatik bağlantı yönetimi

📦 Kurulum

# Bağımlılıkları yükle
npm install

# Veya yarn ile
yarn install

⚙️ Yapılandırma

.env dosyasını oluşturun ve Azure bilgilerinizi girin:

# Azure SQL Server Configuration
AZURE_SQL_SERVER=your-server.database.windows.net
AZURE_SQL_DATABASE=your-database

# Azure Entra ID Configuration (Service Principal - Opsiyonel)
AZURE_TENANT_ID=your-tenant-id
AZURE_CLIENT_ID=your-client-id
AZURE_CLIENT_SECRET=your-client-secret

Not: Service Principal bilgileri verilmezse DefaultAzureCredential kullanılır (Managed Identity, Azure CLI, vs.)

🔧 MCP Konfigürasyonu

mcp-config-example.json dosyasını kopyalayıp .kiro/settings/mcp.json olarak kaydedin ve kendi Azure bilgilerinizle güncelleyin:

{
  "mcpServers": {
    "azure_mcp_server": {
      "command": "npx",
      "args": ["--yes", "https://github.com/CihanErden96/azure_mcp_server.git"],
      "env": {
        "AZURE_SQL_SERVER": "your-server.database.windows.net",
        "AZURE_SQL_DATABASE": "your-database",
        "AZURE_TENANT_ID": "your-tenant-id",
        "AZURE_CLIENT_ID": "your-client-id",
        "AZURE_CLIENT_SECRET": "your-client-secret"
      },
      "disabled": false,
      "autoApprove": ["list_tables", "get_table_schema", "get_database_info", "list_views", "list_stored_procedures"]
    }
  }
}

🧪 Test

Bağlantıyı test edin:

# Bağlantı testi
npm test

# Yeni özellikler testi
npm run test:features

🛠️ Mevcut Araçlar

1. execute_sql_query

SQL sorgusu çalıştırır.

Parametreler:

  • query (string): SQL sorgusu
  • parameters (array, opsiyonel): Sorgu parametreleri

Örnek:

SELECT TOP 10 * FROM Users WHERE active = @param0

2. get_table_schema

Tablo şemasını getirir.

Parametreler:

  • table_name (string): Tablo adı

3. list_tables

Veritabanındaki tabloları listeler.

4. get_database_info

Veritabanı bilgilerini getirir (version, server name, vs.)

5. create_view

Yeni bir görünüm (view) oluşturur.

Parametreler:

  • view_name (string): Oluşturulacak görünümün adı
  • query (string): Görünüm için SELECT sorgusu
  • replace_if_exists (boolean, opsiyonel): Mevcut görünümü değiştir

6. create_stored_procedure

Yeni bir saklı yordam (stored procedure) oluşturur.

Parametreler:

  • procedure_name (string): Oluşturulacak saklı yordamın adı
  • parameters (string, opsiyonel): Saklı yordam parametreleri
  • body (string): Saklı yordamın gövdesi
  • replace_if_exists (boolean, opsiyonel): Mevcut saklı yordamı değiştir

7. list_views

Veritabanındaki görünümleri listeler.

8. list_stored_procedures

Veritabanındaki saklı yordamları listeler.

📊 Performans Avantajları

Node.js versiyonu Python'a göre şu avantajları sağlar:

  • %30-50 daha hızlı bağlantı kurma
  • %20-40 daha az memory kullanımı
  • Daha iyi concurrent connection handling
  • Native JSON processing
  • Async I/O ile non-blocking operations

🔒 Güvenlik

  • Entra ID authentication zorunlu
  • Parametreli sorgular ile SQL injection koruması
  • TLS/SSL encrypted bağlantı
  • Connection timeout ve retry logic
  • Graceful shutdown handling

🚦 Kullanım Örnekleri

// Tabloları listele
await callTool('list_tables', {});

// Tablo şemasını görüntüle
await callTool('get_table_schema', { 
  table_name: 'Users' 
});

// SQL sorgusu çalıştır
await callTool('execute_sql_query', {
  query: 'SELECT COUNT(*) as user_count FROM Users WHERE created_date > @param0',
  parameters: ['2024-01-01']
});

// Görünüm oluştur
await callTool('create_view', {
  view_name: 'vw_ActiveUsers',
  query: 'SELECT * FROM Users WHERE active = 1',
  replace_if_exists: true
});

// Saklı yordam oluştur
await callTool('create_stored_procedure', {
  procedure_name: 'sp_GetUsersByDepartment',
  parameters: '@Department NVARCHAR(50)',
  body: 'SELECT * FROM Users WHERE department = @Department ORDER BY name',
  replace_if_exists: false
});

// Görünümleri listele
await callTool('list_views', {});

// Saklı yordamları listele
await callTool('list_stored_procedures', {});

// Database bilgilerini al
await callTool('get_database_info', {});

🔧 Geliştirme

# Development mode (with inspector)
npm run dev

# Production mode
npm start

📋 Gereksinimler

  • Node.js 18.0.0+
  • Azure SQL Database erişim izni
  • Entra ID authentication yapılandırması
  • ODBC Driver (otomatik yüklenir)

🐛 Troubleshooting

Bağlantı hatası alıyorsanız:

  1. .env dosyasındaki bilgileri kontrol edin
  2. Azure SQL firewall kurallarını kontrol edin
  3. Entra ID izinlerini kontrol edin
  4. npm test ile bağlantıyı test edin

Token hatası alıyorsanız:

  • Azure CLI ile giriş yapın: az login
  • Service Principal bilgilerini kontrol edin
  • Tenant ID'nin d