Skip to main content
Glama
SteveZhuhaobo

SQL Server MCP Server

SQL Server MCP Server

Контейнеризированный сервер Model Context Protocol (MCP) для операций с SQL Server. Этот Docker-контейнер предоставляет полноценный MCP-сервер, который может подключаться к SQL Server и выполнять различные операции с базами данных через протокол MCP.

Возможности

  • Полная интеграция с SQL Server: выполнение запросов, управление таблицами и выполнение операций с базами данных

  • Конфигурация через переменные окружения: простая настройка с помощью переменных среды

  • Поддержка аутентификации: аутентификация SQL Server и Windows

  • Управление подключениями: встроенная обработка подключений и логика повторных попыток

  • Проверки работоспособности: мониторинг и проверка состояния контейнера

  • Мультиплатформенная поддержка: поддержка архитектур AMD64 и ARM64

  • Поддержка драйверов ODBC: включает Microsoft ODBC Driver 17 для SQL Server

Related MCP server: mcp-sqlserver

Быстрый старт

Использование Docker Run

# Basic usage with SQL Server authentication
docker run -e SQLSERVER_SERVER=myserver.database.windows.net \
           -e SQLSERVER_DATABASE=mydatabase \
           -e SQLSERVER_USERNAME=myuser \
           -e SQLSERVER_PASSWORD=mypassword \
           sqlserver-mcp:latest

Использование Docker Compose

  1. Скопируйте файл .env.example в .env:

    cp .env.example .env
  2. Отредактируйте файл .env, указав свои учетные данные SQL Server:

    # Edit .env with your settings
    nano .env
  3. Запустите контейнер:

    docker-compose up -d

Конфигурация

Переменные окружения

Обязательные переменные

Переменная

Описание

Пример

SQLSERVER_SERVER

Имя хоста или IP-адрес SQL Server

myserver.database.windows.net

Переменные аутентификации (выберите один метод)

Метод 1: Аутентификация SQL Server

Переменная

Описание

Пример

SQLSERVER_USERNAME

Имя пользователя SQL Server

sa

SQLSERVER_PASSWORD

Пароль SQL Server

MyPassword123!

Метод 2: Аутентификация Windows

Переменная

Описание

Пример

SQLSERVER_USE_WINDOWS_AUTH

Использовать аутентификацию Windows

true

Дополнительные переменные подключения

Переменная

Описание

По умолчанию

Пример

SQLSERVER_DATABASE

База данных по умолчанию

master

MyDatabase

SQLSERVER_DRIVER

Имя драйвера ODBC

ODBC Driver 17 for SQL Server

ODBC Driver 18 for SQL Server

SQLSERVER_ENCRYPT

Шифровать подключение

yes

no

SQLSERVER_TRUST_CERTIFICATE

Доверять сертификату сервера

yes

no

Методы аутентификации

Аутентификация SQL Server

Наиболее распространенный метод аутентификации с использованием имени пользователя и пароля:

docker run -e SQLSERVER_SERVER=myserver \
           -e SQLSERVER_DATABASE=mydatabase \
           -e SQLSERVER_USERNAME=myuser \
           -e SQLSERVER_PASSWORD=mypassword \
           sqlserver-mcp:latest

Аутентификация Windows

Для сред, присоединенных к домену (требуется дополнительная настройка контейнера):

docker run -e SQLSERVER_SERVER=myserver \
           -e SQLSERVER_DATABASE=mydatabase \
           -e SQLSERVER_USE_WINDOWS_AUTH=true \
           sqlserver-mcp:latest

Доступные инструменты MCP

Сервер предоставляет следующие инструменты MCP:

Управление подключениями

  • test_connection - Проверка подключения к SQL Server и получение базовой информации о базе данных

Обнаружение баз данных

  • list_tables - Список всех таблиц в базе данных SQL Server

  • get_table_schema - Получение подробной информации о схеме таблицы

Операции с таблицами

  • create_table - Создание новой таблицы в SQL Server

  • insert_data - Вставка данных в таблицу SQL Server

Выполнение запросов

  • execute_query - Выполнение SQL-запросов с полным набором результатов

Сборка контейнера

Скрипт сборки

Используйте предоставленный скрипт сборки для упрощения процесса:

# Build with default settings
./build.sh

# Build with specific tag
./build.sh v1.0.0

# Build with registry prefix
REGISTRY=ghcr.io/myorg ./build.sh v1.0.0

# Build and test
./build.sh --test

# Build without cache
./build.sh --no-cache

Сборка вручную

# Build the image
docker build -t sqlserver-mcp:latest .

# Build for multiple platforms
docker buildx build --platform linux/amd64,linux/arm64 -t sqlserver-mcp:latest .

Примеры развертывания

Docker Compose с секретами

version: '3.8'

services:
  sqlserver-mcp:
    image: sqlserver-mcp:latest
    environment:
      - SQLSERVER_SERVER=myserver.database.windows.net
      - SQLSERVER_DATABASE=mydatabase
      - SQLSERVER_USERNAME=myuser
    secrets:
      - sqlserver_password
    environment:
      - SQLSERVER_PASSWORD_FILE=/run/secrets/sqlserver_password

secrets:
  sqlserver_password:
    file: ./secrets/sqlserver_password.txt

Развертывание в Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sqlserver-mcp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sqlserver-mcp
  template:
    metadata:
      labels:
        app: sqlserver-mcp
    spec:
      containers:
      - name: sqlserver-mcp
        image: sqlserver-mcp:latest
        env:
        - name: SQLSERVER_SERVER
          value: "myserver.database.windows.net"
        - name: SQLSERVER_DATABASE
          value: "mydatabase"
        - name: SQLSERVER_USERNAME
          value: "myuser"
        - name: SQLSERVER_PASSWORD
          valueFrom:
            secretKeyRef:
              name: sqlserver-secret
              key: password
        resources:
          limits:
            memory: "512Mi"
            cpu: "500m"
          requests:
            memory: "256Mi"
            cpu: "250m"
        livenessProbe:
          exec:
            command:
            - python
            - -c
            - "import server; print('OK')"
          initialDelaySeconds: 30
          periodSeconds: 30
        readinessProbe:
          exec:
            command:
            - python
            - -c
            - "import server; print('OK')"
          initialDelaySeconds: 5
          periodSeconds: 10

Облачные контейнерные сервисы

Определение задачи AWS ECS

{
  "family": "sqlserver-mcp",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "executionRoleArn": "arn:aws:iam::account:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "sqlserver-mcp",
      "image": "sqlserver-mcp:latest",
      "environment": [
        {"name": "SQLSERVER_SERVER", "value": "myserver.database.windows.net"},
        {"name": "SQLSERVER_DATABASE", "value": "mydatabase"},
        {"name": "SQLSERVER_USERNAME", "value": "myuser"}
      ],
      "secrets": [
        {
          "name": "SQLSERVER_PASSWORD",
          "valueFrom": "arn:aws:secretsmanager:region:account:secret:sqlserver-password"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/sqlserver-mcp",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      }
    }
  ]
}

Google Cloud Run

# Deploy to Cloud Run
gcloud run deploy sqlserver-mcp \
  --image=sqlserver-mcp:latest \
  --set-env-vars="SQLSERVER_SERVER=myserver,SQLSERVER_DATABASE=mydatabase,SQLSERVER_USERNAME=myuser" \
  --set-secrets="SQLSERVER_PASSWORD=sqlserver-password:latest" \
  --platform=managed \
  --region=us-central1 \
  --allow-unauthenticated

Azure Container Instances

# Create container instance
az container create \
  --resource-group myResourceGroup \
  --name sqlserver-mcp \
  --image sqlserver-mcp:latest \
  --environment-variables \
    SQLSERVER_SERVER=myserver.database.windows.net \
    SQLSERVER_DATABASE=mydatabase \
    SQLSERVER_USERNAME=myuser \
  --secure-environment-variables \
    SQLSERVER_PASSWORD=mypassword \
  --cpu 0.5 \
  --memory 1

Устранение неполадок

Распространенные проблемы

Тайм-аут подключения

Error: Connection timeout

Решение: Проверьте сетевое подключение и доступность сервера:

# Test network connectivity
docker run --rm sqlserver-mcp:latest ping myserver.database.windows.net

Ошибка аутентификации

Error: Login failed for user 'myuser'

Решения:

  1. Проверьте имя пользователя и пароль

  2. Убедитесь, что пользователь существует и имеет необходимые права

  3. Убедитесь, что аутентификация SQL Server включена

  4. Для Azure SQL Database используйте формат полного имени пользователя: user@servername

Драйвер не найден

Error: Data source name not found and no default driver specified

Решения:

  1. Убедитесь, что драйвер ODBC установлен (должен быть включен в контейнер)

  2. Проверьте имя драйвера в переменной окружения SQLSERVER_DRIVER

  3. Список доступных драйверов:

    docker exec -it sqlserver-mcp-server odbcinst -q -d

Проблемы с SSL/TLS

Error: SSL Provider: The certificate chain was issued by an authority that is not trusted

Решения:

  1. Установите SQLSERVER_TRUST_CERTIFICATE=yes

  2. Или отключите шифрование: SQLSERVER_ENCRYPT=no

  3. Для промышленной эксплуатации используйте надлежащие SSL-сертификаты

Контейнер не запускается

Error: SQLSERVER_SERVER environment variable is required

Решение: Убедитесь, что установлены все необходимые переменные окружения:

docker run -e SQLSERVER_SERVER=myserver \
           -e SQLSERVER_USERNAME=myuser \
           -e SQLSERVER_PASSWORD=mypassword \
           sqlserver-mcp:latest

Сбои проверки работоспособности

Если проверки работоспособности не проходят:

  1. Проверьте логи контейнера:

    docker logs sqlserver-mcp-server
  2. Проверьте подключение вручную:

    docker exec -it sqlserver-mcp-server python -c "
    import server
    import asyncio
    result = asyncio.run(server.test_connection())
    print(result)
    "
  3. Проверьте переменные окружения:

    docker exec -it sqlserver-mcp-server env | grep SQLSERVER

Настройка производительности

Для повышения производительности при работе с большими наборами данных:

# Increase connection timeout
-e SQLSERVER_CONNECTION_TIMEOUT=60

Логирование

Включите подробное логирование:

# Add to docker-compose.yml or docker run
environment:
  - PYTHONUNBUFFERED=1
  - LOG_LEVEL=DEBUG

Просмотр логов:

# Docker Compose
docker-compose logs -f sqlserver-mcp

# Docker run
docker logs -f sqlserver-mcp-server

Вопросы безопасности

Управление секретами

  1. Никогда не вшивайте учетные данные в Dockerfile или файлы compose

  2. Используйте Docker secrets или внешние системы управления секретами

  3. Используйте переменные окружения для конфигурации

  4. Регулярно меняйте учетные данные

Сетевая безопасность

  1. Используйте частные сети для взаимодействия контейнеров

  2. Ограничьте привилегии контейнера (запуск от имени пользователя без прав root)

  3. Включите TLS для подключений к SQL Server (включено по умолчанию)

  4. Используйте правила брандмауэра для ограничения доступа

Безопасность контейнера

  1. Регулярные обновления: поддерживайте базовые образы и зависимости в актуальном состоянии

  2. Сканирование уязвимостей: сканируйте образы на наличие уязвимостей безопасности

  3. Ограничения ресурсов: установите соответствующие лимиты CPU и памяти

  4. Файловая система только для чтения: по возможности монтируйте каталоги приложений как доступные только для чтения

Разработка

Локальная разработка

  1. Клонируйте репозиторий

  2. Соберите контейнер:

    ./build.sh --test
  3. Запустите с вашей конфигурацией:

    cp .env.example .env
    # Edit .env with your settings
    docker-compose up

Тестирование

Запустите набор тестов:

# Build and test
./build.sh --test

# Manual testing
docker run --rm -e SQLSERVER_SERVER=test sqlserver-mcp:latest python -c "import server; print('Tests passed')"

Поддержка

По вопросам и проблемам:

  1. Ознакомьтесь с разделом устранения неполадок

  2. Просмотрите логи контейнера на наличие сообщений об ошибках

  3. Проверьте настройки подключения к SQL Server

  4. Убедитесь, что установлены все необходимые переменные окружения

Лицензия

Этот проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides comprehensive access to Microsoft SQL Server databases, enabling Language Models to inspect schemas, execute queries, manage database objects, and perform advanced database operations.
    8
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that enables AI agents to interact with Microsoft SQL Server databases through secure, intelligent database operations. This server provides comprehensive CRUD capabilities, schema introspection, stored procedure execution, transaction management, and bulk opera
    830
    37
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server for Microsoft SQL Server databases, providing secure database operations through a standardized interface.
    3,043
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server for SQL Server database operations, enabling CRUD operations, schema exploration, and stored procedure execution through natural language.
    8
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for managing Prisma Postgres.

  • The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.

  • MCP server for interacting with the Supabase platform

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SteveZhuhaobo/sql-server-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server