Skip to main content
Glama
SteveZhuhaobo

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:latest

Docker Compose 사용

  1. .env.example 파일을 .env로 복사합니다:

    cp .env.example .env
  2. SQL Server 자격 증명으로 .env 파일을 편집합니다:

    # Edit .env with your settings
    nano .env
  3. 컨테이너를 시작합니다:

    docker-compose up -d

구성

환경 변수

필수 변수

변수

설명

예시

SQLSERVER_SERVER

SQL Server 호스트 이름 또는 IP

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 .

배포 예시

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.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

보안 고려 사항

Secrets 관리

  1. Dockerfile이나 compose 파일에 자격 증명을 하드코딩하지 마세요

  2. Docker secrets 또는 외부 비밀 관리 시스템을 사용하세요

  3. 구성을 위해 환경 변수를 사용하세요

  4. 자격 증명을 정기적으로 교체하세요

네트워크 보안

  1. 컨테이너 통신을 위해 사설 네트워크를 사용하세요

  2. 컨테이너 권한을 제한하세요 (루트가 아닌 사용자로 실행)

  3. SQL Server 연결에 TLS를 활성화하세요 (기본적으로 활성화됨)

  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