Integrations
Supports configuration through environment variables loaded from .env files, allowing customization of connection settings, security parameters, timeouts, and caching behavior.
Enables deployment of the MCP server using Docker containers, with configuration via environment variables and docker-compose for simplified setup and management.
Provides access to the repository for cloning and installation, with documentation and setup instructions accessible through GitHub.
MCP MSSQL サーバー
これは、SQL Serverとのやり取りのためのモデルコンテキストプロトコル(MCP)サーバーです。大規模言語モデル(LLM)がSQLクエリを実行したり、ストアドプロシージャを実行したり、強化されたセキュリティと堅牢性を備えたデータベーススキーマを探索したりできるようになります。
特徴
- 安全なSQLクエリ実行:SQL Serverデータベースに対して
SELECT
クエリを実行します。すべてのクエリは解析および検証され、SELECT
ステートメントのみが実行されることが保証されます。 - ストアド プロシージャのサポート: パラメーター化された入力を使用してストアド プロシージャを実行します。
- スキーマ探索: パフォーマンス向上のために結果がキャッシュされた状態で、データベース テーブルと列の定義を表示します。
- 堅牢な接続管理: グローバル接続プールを利用し、再試行ロジックとタイムアウトを設定してデータベース接続を効率的に再利用します。
- 強化されたセキュリティ:
- SQL クエリ解析と
SELECT
のみのホワイトリスト。 - アクセス可能なデータベースをホワイトリストに登録するための
SQL_ALLOWED_DATABASES
環境変数。 - データベース コンテキスト切り替えにおける一般的な SQL インジェクション パターンに対する保護。
- 直接クエリ内の潜在的に有害なシステム プロシージャまたはコマンドの実行をブロックします。
- SQL クエリ解析と
- 構成可能なキャッシュ: データベース スキーマ情報は、構成可能な Time-To-Live (TTL) を使用してキャッシュされます。
- 構造化ログ: 詳細かつ構造化されたアプリケーション ログ用の統合
pino
ロガー。 - Docker 対応: Docker を使用した簡単なデプロイメント。
クイックスタート
Dockerの使用(推奨)
完全な Docker セットアップ手順については、 Docker README を参照してください。
構成
サーバーは環境変数を使用して設定されます。ルートディレクトリに.env
ファイル( .env.example
をコピーできます)を作成し、これらの値を設定します。
すべての設定オプションとその設定方法の詳細なガイドについては、 CONFIG
参照してください。
カテゴリ | 変数 | 説明 | デフォルト(config.js から) |
---|---|---|---|
繋がり | SQL_SERVER | SQL Server のホスト名または IP | localhost |
SQL_PORT | SQL Server ポート | 1433 | |
SQL_USER | SQL Server ユーザー名 | sa | |
SQL_PASSWORD | SQL Server パスワード | 必須 | |
SQL_DATABASE | 接続するデフォルトのデータベース名 | master | |
安全 | SQL_ENCRYPT | 暗号化を有効にする(無効にするにはfalse に設定) | true |
SQL_TRUST_SERVER_CERT | サーバー証明書を信頼する(無効にするにはfalse に設定) | true | |
SQL_ALLOWED_DATABASES | サーバーがアクセスできるデータベースのカンマ区切りリスト。空の場合、アクセス制限は緩和されます(DBユーザーの権限に依存します)。 | [] (空のリスト) | |
タイムアウトと再試行 | SQL_CONNECTION_TIMEOUT | 接続タイムアウト(ミリ秒) | 30000 |
SQL_REQUEST_TIMEOUT | クエリのリクエストタイムアウト(ミリ秒) | 30000 | |
SQL_MAX_RETRIES | 初期接続試行の最大再試行回数 | 3 | |
SQL_INITIAL_RETRY_DELAY | 失敗した接続を再試行するまでの初期遅延(ミリ秒) | 1000 | |
SQL_MAX_RETRY_DELAY | 接続再試行の最大遅延(ミリ秒)(指数バックオフを使用) | 30000 | |
接続プール | SQL_POOL_MAX | プール内の最大接続数 | 10 |
SQL_POOL_MIN | プール内の最小接続数 | 0 | |
SQL_POOL_IDLE_TIMEOUT | プール内の接続のアイドル タイムアウト (ミリ秒) | 30000 | |
キャッシング | SQL_SCHEMA_CACHE_TTL | スキーマ キャッシュの有効時間 (ミリ秒) | 300000 (5分) |
MCPサーバー | MCP_SERVER_NAME | MCPサーバーの名前 | MSSQL Server |
MCP_SERVER_VERSION | MCP サーバーのバージョン | 1.0.0 | |
ログ記録 | LOG_LEVEL | pinoロガーのログレベル(例: fatal 、 error 、 warn 、 info 、 debug 、 trace 、 silent )。これはconfig.js ではなく、 server.ts のprocess.env から直接読み込まれます。 | info |
クロードと一緒に使う
この MCP サーバーを Claude CLI に追加するには:
Claude との会話では、次のことができます。
SELECT
クエリを実行します。(デフォルトのCopySQL_DATABASE
で操作する場合、またはSQL_ALLOWED_DATABASES
単一の選択を意味する場合、database
属性はオプションです。)- ストアド プロシージャを実行します。Copy
- データベース スキーマを探索します。(Copy
YourDatabaseName
を省略した場合は、環境変数で指定されたSQL_DATABASE
がデフォルトになります。)
接続処理
この MCP サーバーは、 DatabaseService
によって管理されるグローバルで堅牢な接続プール ( mssql
ライブラリの組み込みプーリング) を利用します。
- 効率: 接続が再利用されるため、リクエストごとに新しい接続を確立する際のオーバーヘッドが削減されます。
- 回復力: 初期接続の確立に指数バックオフを使用した再試行ロジックを実装します。
- 呼び出し間でセッション状態を保持しない:ユーザーごとのセッションモデルとは異なり、このサーバーは、LLMからの後続のMCP呼び出し(例:2つの別々の
execute_query
呼び出し)が、基盤となるデータベース接続と全く同じ接続を使用することを保証しません。したがって、ある呼び出しで作成された一時テーブルやセッション変数などのセッション固有の状態は、別の呼び出しでは使用できない可能性があります。各呼び出しは、セッション状態の観点からアトミックであると考える必要があります。ターゲットデータベースがプールのデフォルトと異なる場合、各操作内でUSE [database]
コマンドが発行され、その特定の操作のコンテキストが確保されます。
発達
ローカル開発環境
セキュリティノート
SELECT
のみ: サーバーは、SQL 解析を使用して、execute_query
ツール経由でSELECT
クエリのみを実行できるように厳密に制限します。DML (INSERT、UPDATE、DELETE) および DDL ステートメントはブロックされます。- ストアド プロシージャの実行: ストアド プロシージャは権限で許可されたすべてのアクションを実行できますが、その実行は個別に管理されます。
- データベースホワイトリスト:
SQL_ALLOWED_DATABASES
環境変数を使用して、サーバーが通信できるデータベースを制限します。この機能の詳細とSQL_DATABASE
との連携方法については、DATABASE_WHITELISTING.md
ご覧ください。 - システムプロシージャのブロッキング:一般的なシステムプロシージャ(例:
sp_
、xp_
)の直接実行、およびRECONFIGURE
やWAITFOR DELAY
などのコマンドのexecute_query
経由の実行はブロックされます。正当なシステム操作にはストアドプロシージャを使用してください。 - 入力検証:コンテキストスイッチのデータベース名とストアドプロシージャ名は形式検証を受けます。SQL解析により、クエリの検証レイヤーがさらに強化されます。
- パラメーター化された入力: ストアド プロシージャのパラメーターは
mssql
ライブラリによって処理され、通常は SQL インジェクションを防ぐためにパラメーター化されます。
トラブルシューティング
問題が発生した場合:
- コンテナ ログを確認します:
docker logs mssql-mcp
(Docker を使用している場合)。 - ローカルで実行している場合は、サーバーのコンソール出力で pino ログを確認してください。
.env
ファイル内のすべての必須環境変数、特にSQL_PASSWORD
、SQL_SERVER
、SQL_USER
、およびSQL_DATABASE
が正しく設定されていることを確認します。- この変数を設定している場合は、アクセスしようとしているデータベースが
SQL_ALLOWED_DATABASES
にリストされていることを確認してください。 - MCP サーバーが実行されている場所から SQL Server インスタンスへのネットワーク接続を確認します。
- テスト スクリプト (
test-mcp.sh
、test-session-persistence.sh
) のレビュー/更新が必要になる可能性があります。
Docker の詳細なトラブルシューティングについては、 Docker README を参照してください。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Claude のような大規模言語モデルが SQL クエリを実行し、データベース スキーマを探索し、SQL Server データベースへの永続的な接続を維持できるようにするモデル コンテキスト プロトコル サーバー。
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that enables Large Language Models to seamlessly interact with ClickHouse databases, supporting resource listing, schema retrieval, and query execution.Last updated -1PythonMIT License
Astra DB MCP Serverofficial
AsecurityAlicenseAqualityA Model Context Protocol server that allows Large Language Models to interact with Astra DB databases, providing tools for managing collections and records through natural language commands.Last updated -1011512TypeScriptApache 2.0- -security-license-qualityA Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.Last updated -Python
MCP TapData Serverofficial
-securityFlicense-qualityA Model Context Protocol server that enables Large Language Models to access and interact with database connections, including viewing schemas and performing CRUD operations on connected databases.Last updated -