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
Скопируйте файл
.env.exampleв.env:cp .env.example .envОтредактируйте файл
.env, указав свои учетные данные SQL Server:# Edit .env with your settings nano .envЗапустите контейнер:
docker-compose up -d
Конфигурация
Переменные окружения
Обязательные переменные
Переменная | Описание | Пример |
| Имя хоста или IP-адрес SQL Server |
|
Переменные аутентификации (выберите один метод)
Метод 1: Аутентификация SQL Server
Переменная | Описание | Пример |
| Имя пользователя SQL Server |
|
| Пароль SQL Server |
|
Метод 2: Аутентификация Windows
Переменная | Описание | Пример |
| Использовать аутентификацию Windows |
|
Дополнительные переменные подключения
Переменная | Описание | По умолчанию | Пример |
| База данных по умолчанию |
|
|
| Имя драйвера ODBC |
|
|
| Шифровать подключение |
|
|
| Доверять сертификату сервера |
|
|
Методы аутентификации
Аутентификация 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 Serverget_table_schema- Получение подробной информации о схеме таблицы
Операции с таблицами
create_table- Создание новой таблицы в SQL Serverinsert_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-unauthenticatedAzure 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'Решения:
Проверьте имя пользователя и пароль
Убедитесь, что пользователь существует и имеет необходимые права
Убедитесь, что аутентификация SQL Server включена
Для Azure SQL Database используйте формат полного имени пользователя:
user@servername
Драйвер не найден
Error: Data source name not found and no default driver specifiedРешения:
Убедитесь, что драйвер ODBC установлен (должен быть включен в контейнер)
Проверьте имя драйвера в переменной окружения
SQLSERVER_DRIVERСписок доступных драйверов:
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Решения:
Установите
SQLSERVER_TRUST_CERTIFICATE=yesИли отключите шифрование:
SQLSERVER_ENCRYPT=noДля промышленной эксплуатации используйте надлежащие 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Сбои проверки работоспособности
Если проверки работоспособности не проходят:
Проверьте логи контейнера:
docker logs sqlserver-mcp-serverПроверьте подключение вручную:
docker exec -it sqlserver-mcp-server python -c " import server import asyncio result = asyncio.run(server.test_connection()) print(result) "Проверьте переменные окружения:
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Вопросы безопасности
Управление секретами
Никогда не вшивайте учетные данные в Dockerfile или файлы compose
Используйте Docker secrets или внешние системы управления секретами
Используйте переменные окружения для конфигурации
Регулярно меняйте учетные данные
Сетевая безопасность
Используйте частные сети для взаимодействия контейнеров
Ограничьте привилегии контейнера (запуск от имени пользователя без прав root)
Включите TLS для подключений к SQL Server (включено по умолчанию)
Используйте правила брандмауэра для ограничения доступа
Безопасность контейнера
Регулярные обновления: поддерживайте базовые образы и зависимости в актуальном состоянии
Сканирование уязвимостей: сканируйте образы на наличие уязвимостей безопасности
Ограничения ресурсов: установите соответствующие лимиты CPU и памяти
Файловая система только для чтения: по возможности монтируйте каталоги приложений как доступные только для чтения
Разработка
Локальная разработка
Клонируйте репозиторий
Соберите контейнер:
./build.sh --testЗапустите с вашей конфигурацией:
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')"Поддержка
По вопросам и проблемам:
Ознакомьтесь с разделом устранения неполадок
Просмотрите логи контейнера на наличие сообщений об ошибках
Проверьте настройки подключения к SQL Server
Убедитесь, что установлены все необходимые переменные окружения
Лицензия
Этот проект лицензирован по лицензии MIT — подробности см. в файле LICENSE.
This server cannot be installed
Maintenance
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
- FlicenseNot gradedqualityDmaintenanceA 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
- AlicenseNot gradedqualityDmaintenanceA 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 opera83037MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol (MCP) server for Microsoft SQL Server databases, providing secure database operations through a standardized interface.3,043MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for SQL Server database operations, enabling CRUD operations, schema exploration, and stored procedure execution through natural language.8MIT
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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