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. .env ファイルを編集し、SQL Serverの認証情報を入力します:

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

デプロイ例

シークレットを使用した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シークレットまたは外部のシークレット管理システムを使用する

  3. 設定には環境変数を使用する

  4. 定期的に認証情報をローテーションする

ネットワークセキュリティ

  1. コンテナ間の通信にはプライベートネットワークを使用する

  2. コンテナの権限を制限する (非rootユーザーとして実行)

  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