MCP SQL Server

by JubinSaniei

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 インジェクション パターンに対する保護。
    • 直接クエリ内の潜在的に有害なシステム プロシージャまたはコマンドの実行をブロックします。
  • 構成可能なキャッシュ: データベース スキーマ情報は、構成可能な Time-To-Live (TTL) を使用してキャッシュされます。
  • 構造化ログ: 詳細かつ構造化されたアプリケーション ログ用の統合pinoロガー。
  • Docker 対応: Docker を使用した簡単なデプロイメント。

クイックスタート

Dockerの使用(推奨)

# Clone the repository (if you haven't already) git clone https://github.com/JubinSaniei/mcp-mssql # cd mcp-mssql # Copy example configuration and edit with your settings cp .env.example .env nano .env # Edit with your SQL Server details and other configurations # Start the Docker container docker-compose up -d

完全な Docker セットアップ手順については、 Docker README を参照してください。

構成

サーバーは環境変数を使用して設定されます。ルートディレクトリに.envファイル( .env.exampleをコピーできます)を作成し、これらの値を設定します。

すべての設定オプションとその設定方法の詳細なガイドについては、 CONFIG参照してください。

カテゴリ変数説明デフォルト(config.js から)
繋がりSQL_SERVERSQL Server のホスト名または IPlocalhost
SQL_PORTSQL Server ポート1433
SQL_USERSQL Server ユーザー名sa
SQL_PASSWORDSQL 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_NAMEMCPサーバーの名前MSSQL Server
MCP_SERVER_VERSIONMCP サーバーのバージョン1.0.0
ログ記録LOG_LEVELpinoロガーのログレベル(例: fatalerrorwarninfodebugtracesilent )。これはconfig.jsではなく、 server.tsprocess.envから直接読み込まれます。info

クロードと一緒に使う

この MCP サーバーを Claude CLI に追加するには:

# Add the MCP server using the config file claude mcp add-json mssql-mcp "$(cat claude-mcp-config.json)" # To add it globally claude mcp add-json -s user mssql-mcp "$(cat claude-mcp-config.json)" # Start a conversation with Claude using this MCP claude mcp mssql-mcp

Claude との会話では、次のことができます。

  1. SELECTクエリを実行します。
    <mcp:execute_query database="YourDatabaseName"> SELECT TOP 10 * FROM YourTable </mcp:execute_query>
    (デフォルトのSQL_DATABASEで操作する場合、またはSQL_ALLOWED_DATABASES単一の選択を意味する場合、 database属性はオプションです。)
  2. ストアド プロシージャを実行します。
    <mcp:execute_StoredProcedure database="YourDatabaseName"> { "procedure": "YourSchema.YourProcedureName", "parameters": [ {"name": "Param1", "type": "NVarChar", "value": "SomeValue"}, {"name": "Param2", "type": "Int", "value": 123} ] } </mcp:execute_StoredProcedure>
  3. データベース スキーマを探索します。
    <mcp:schema> YourDatabaseName </mcp:schema>
    ( YourDatabaseNameを省略した場合は、環境変数で指定されたSQL_DATABASEがデフォルトになります。)

接続処理

この MCP サーバーは、 DatabaseServiceによって管理されるグローバルで堅牢な接続プール ( mssqlライブラリの組み込みプーリング) を利用します。

  • 効率: 接続が再利用されるため、リクエストごとに新しい接続を確立する際のオーバーヘッドが削減されます。
  • 回復力: 初期接続の確立に指数バックオフを使用した再試行ロジックを実装します。
  • 呼び出し間でセッション状態を保持しない:ユーザーごとのセッションモデルとは異なり、このサーバーは、LLMからの後続のMCP呼び出し(例:2つの別々のexecute_query呼び出し)が、基盤となるデータベース接続と全く同じ接続を使用することを保証しません。したがって、ある呼び出しで作成された一時テーブルやセッション変数などのセッション固有の状態は、別の呼び出しでは使用できない可能性があります。各呼び出しは、セッション状態の観点からアトミックであると考える必要があります。ターゲットデータベースがプールのデフォルトと異なる場合、各操作内でUSE [database]コマンドが発行され、その特定の操作のコンテキストが確保されます。

発達

ローカル開発環境

# Install dependencies npm install # Create and configure your .env file cp .env.example .env nano .env # Run the server directly (requires environment variables to be set) npm start # Run with TypeScript compiler watching for changes npm run dev

セキュリティノート

  • SELECTのみ: サーバーは、SQL 解析を使用して、 execute_queryツール経由でSELECTクエリのみを実行できるように厳密に制限します。DML (INSERT、UPDATE、DELETE) および DDL ステートメントはブロックされます。
  • ストアド プロシージャの実行: ストアド プロシージャは権限で許可されたすべてのアクションを実行できますが、その実行は個別に管理されます。
  • データベースホワイトリストSQL_ALLOWED_DATABASES環境変数を使用して、サーバーが通信できるデータベースを制限します。この機能の詳細とSQL_DATABASEとの連携方法については、 DATABASE_WHITELISTING.mdご覧ください。
  • システムプロシージャのブロッキング:一般的なシステムプロシージャ(例: sp_xp_ )の直接実行、およびRECONFIGUREWAITFOR DELAYなどのコマンドのexecute_query経由の実行はブロックされます。正当なシステム操作にはストアドプロシージャを使用してください。
  • 入力検証:コンテキストスイッチのデータベース名とストアドプロシージャ名は形式検証を受けます。SQL解析により、クエリの検証レイヤーがさらに強化されます。
  • パラメーター化された入力: ストアド プロシージャのパラメーターはmssqlライブラリによって処理され、通常は SQL インジェクションを防ぐためにパラメーター化されます。

トラブルシューティング

問題が発生した場合:

  1. コンテナ ログを確認します: docker logs mssql-mcp (Docker を使用している場合)。
  2. ローカルで実行している場合は、サーバーのコンソール出力で pino ログを確認してください。
  3. .envファイル内のすべての必須環境変数、特にSQL_PASSWORDSQL_SERVERSQL_USER 、およびSQL_DATABASEが正しく設定されていることを確認します。
  4. この変数を設定している場合は、アクセスしようとしているデータベースがSQL_ALLOWED_DATABASESにリストされていることを確認してください。
  5. MCP サーバーが実行されている場所から SQL Server インスタンスへのネットワーク接続を確認します。
  6. テスト スクリプト ( test-mcp.shtest-session-persistence.sh ) のレビュー/更新が必要になる可能性があります。

Docker の詳細なトラブルシューティングについては、 Docker README を参照してください。

-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Claude のような大規模言語モデルが SQL クエリを実行し、データベース スキーマを探索し、SQL Server データベースへの永続的な接続を維持できるようにするモデル コンテキスト プロトコル サーバー。

  1. 特徴
    1. クイックスタート
      1. Dockerの使用(推奨)
    2. 構成
      1. クロードと一緒に使う
        1. 接続処理
          1. 発達
            1. ローカル開発環境
          2. セキュリティノート
            1. トラブルシューティング

              Related MCP Servers

              • -
                security
                A
                license
                -
                quality
                A 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 -
                1
                Python
                MIT License
                • Linux
                • Apple
              • A
                security
                A
                license
                A
                quality
                A 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 -
                10
                115
                12
                TypeScript
                Apache 2.0
                • Apple
              • -
                security
                -
                license
                -
                quality
                A 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
              • -
                security
                F
                license
                -
                quality
                A 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 -
                • Apple

              View all related MCP servers

              ID: 6rj1s2u5o5