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 .env.envファイルを編集し、SQL Serverの認証情報を入力します:# 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 .デプロイ例
シークレットを使用した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セキュリティに関する考慮事項
シークレット管理
Dockerfileやcomposeファイルに認証情報をハードコードしない
Dockerシークレットまたは外部のシークレット管理システムを使用する
設定には環境変数を使用する
定期的に認証情報をローテーションする
ネットワークセキュリティ
コンテナ間の通信にはプライベートネットワークを使用する
コンテナの権限を制限する (非rootユーザーとして実行)
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