SQL Server MCP Server
SQL Server MCP 서버
SQL Server 작업을 위한 컨테이너화된 Model Context Protocol (MCP) 서버입니다. 이 Docker 컨테이너는 SQL Server에 연결하여 MCP 프로토콜을 통해 다양한 데이터베이스 작업을 실행할 수 있는 완전한 MCP 서버를 제공합니다.
기능
완벽한 SQL Server 통합: 쿼리 실행, 테이블 관리 및 데이터베이스 작업 수행
환경 변수 구성: 환경 변수를 통한 간편한 구성
인증 지원: SQL Server 및 Windows 인증 모두 지원
연결 관리: 내장된 연결 처리 및 재시도 로직
상태 확인: 컨테이너 상태 모니터링 및 검증
멀티 플랫폼 지원: AMD64 및 ARM64 아키텍처 모두 지원
ODBC 드라이버 지원: SQL Server용 Microsoft ODBC Driver 17 포함
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:latestDocker Compose 사용
.env.example파일을.env로 복사합니다:cp .env.example .envSQL Server 자격 증명으로
.env파일을 편집합니다:# Edit .env with your settings nano .env컨테이너를 시작합니다:
docker-compose up -d
구성
환경 변수
필수 변수
변수 | 설명 | 예시 |
| SQL Server 호스트 이름 또는 IP |
|
인증 변수 (한 가지 방법 선택)
방법 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:latestWindows 인증
도메인 가입 환경의 경우 (추가 컨테이너 구성 필요):
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 .배포 예시
Secrets를 사용하는 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.txtKubernetes 배포
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보안 고려 사항
Secrets 관리
Dockerfile이나 compose 파일에 자격 증명을 하드코딩하지 마세요
Docker secrets 또는 외부 비밀 관리 시스템을 사용하세요
구성을 위해 환경 변수를 사용하세요
자격 증명을 정기적으로 교체하세요
네트워크 보안
컨테이너 통신을 위해 사설 네트워크를 사용하세요
컨테이너 권한을 제한하세요 (루트가 아닌 사용자로 실행)
SQL Server 연결에 TLS를 활성화하세요 (기본적으로 활성화됨)
방화벽 규칙을 사용하여 액세스를 제한하세요
컨테이너 보안
정기 업데이트: 기본 이미지와 종속성을 최신 상태로 유지하세요
취약점 스캔: 보안 취약점에 대해 이미지를 스캔하세요
리소스 제한: 적절한 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