mcpField
S
SQL Server MCP Server

SQL Server MCP Server

ローカル
github.com/Popplywopデータベース741 週間前に更新

SQL Server MCP Server について

SQL Server MCP Serverは、MCP経由でSQL Serverのクエリ実行とスキーマ確認機能をLLMに提供します。データベース利用者やエージェントのワークフロー向けに、クエリツール、キャッシュ付きリソース、SQLインジェクション検証を備えています。

主な機能

  1. 01SQLクエリとストアドプロシージャの実行
  2. 02テーブル、ビュー、プロシージャの確認
  3. 03列、主キー、サンプルデータの取得
  4. 04スキーマメタデータのキャッシュ
  5. 05SQLインジェクションの検証

活用シーン

  1. 01LLM経由でのSQL Serverデータの検索
  2. 02クエリ前のデータベース構造の確認
  3. 03パラメーター付きストアドプロシージャの実行

MCP 対応

クエリ、ストアドプロシージャ、スキーマ確認用のMCPツールと、URIで参照できるデータベースリソースを提供します。MCPクライアントはリソースを自動検出して直接アクセスできます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

SQL Server MCP サーバー

SQL Server データベースを操作するためのツールを提供する Model Context Protocol(MCP)サーバーです。このサーバーを使用すると、LLM は標準化されたプロトコルを介して SQL Server データベースに対するクエリや調査を行えます。

特長

  • データベースへのクエリ:SQL クエリを実行し、結果を取得します
  • スキーマの調査:テーブル、ビュー、ストアドプロシージャを一覧表示し、テーブルスキーマを確認します
  • SQL インジェクションの防止:SQL インジェクション攻撃を防止するための検証機能を内蔵しています
  • リソースのキャッシュ:パフォーマンスを向上させるため、メタデータをキャッシュします

はじめに

前提条件
  • .NET 10.0 SDK 以降(または Docker)
  • SQL Server インスタンス(ローカルまたはリモート)
インストール
オプション 1:Docker(推奨)

.NET をインストールせずに、Docker を使用してサーバーを実行します。

# Build the image
docker build -t tsql-mcp-server .

# Run with connection string
docker run -i tsql-mcp-server --dsn "Server=host.docker.internal;Database=mydb;User Id=sa;Password=mypassword;TrustServerCertificate=True;"

# Run in read-only mode
docker run -i tsql-mcp-server --dsn "..." --read-only

# Run with environment variable
docker run -i -e SQL_CONNECTION="Server=..." tsql-mcp-server --env-var SQL_CONNECTION

注意:

  • stdio トランスポートでは -i フラグが必要です
  • ホストマシン上の SQL Server に接続するには、host.docker.internal を使用します
  • WSL2 ユーザーの場合:host.docker.internal が解決されない場合は、代わりに --network host と localhost を使用します
オプション 2:.NET ツールとしてインストール

.NET ツールとしてグローバルにインストールします。

dotnet tool install --global tsql-mcp-server

最新バージョンに更新するには:

dotnet tool update --global tsql-mcp-server
オプション 2:ソースからビルド
# Clone the repository
git clone https://github.com/Popplywop/tsql-mcp-server
cd tsql-mcp-server

# Build the project
dotnet build
サーバーの実行
.NET ツールを使用する場合

.NET グローバルツールとしてインストールした場合:

# Using a direct connection string
tsql-mcp-server --dsn "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"

# Using an environment variable
tsql-mcp-server --env-var "SQL_CONNECTION_STRING"
ソースコードを使用する場合

ソースからビルドした場合:

# Using a direct connection string
dotnet run --dsn "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"

# Using an environment variable
dotnet run --env-var "SQL_CONNECTION_STRING"
MCP サーバーの設定

このサーバーを Claude や Model Context Protocol に対応するその他の LLM と使用するには、MCP 設定ファイルで設定する必要があります。

.NET ツールとしてインストールした場合
{
  "servers": [
    {
      "name": "SqlServerMcp",
      "command": "tsql-mcp-server",
      "args": [
        "--dsn",
        "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
      ]
    }
  ]
}
ソースからビルドした場合
{
  "servers": [
    {
      "name": "SqlServerMcp",
      "command": "path/to/tsql-mcp-server.exe",
      "args": [
        "--dsn",
        "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
      ]
    }
  ]
}

接続文字列を実際の値に置き換えてください。この設定は、Claude の MCP 統合や、Model Context Protocol に対応するその他の LLM プラットフォームで使用できます。

Docker を使用する場合
{
  "mcpServers": {
    "sqlserver": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "tsql-mcp-server",
        "--dsn", "Server=host.docker.internal;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
      ]
    }
  }
}

読み取り専用モードにするには、args 配列に "--read-only" を追加します。

機密情報に環境変数を使用する場合

セキュリティを強化するため、接続文字列に環境変数を使用できます。

{
  "servers": [
    {
      "name": "SqlServerMcp",
      "command": "tsql-mcp-server",
      "args": [
        "--env-var",
        "SQL_CONNECTION_STRING"
      ]
    }
  ]
}

コマンドラインオプション

オプション短縮形説明
--dsn-dSQL Server の接続文字列
--env-var-e接続文字列を格納する環境変数名
--read-only-r読み取り専用モードで実行します(INSERT、UPDATE、DELETE などをブロックします)

利用可能な MCP ツール

クエリツール
  • ExecuteQuery:データベースに対して SQL クエリを実行し、結果を返します

    • パラメーター:
      • query:実行する SQL クエリ
      • commandTimeout:コマンドのタイムアウト時間(秒)。省略可能です
      • maxRows:返す行数の最大値。省略可能です
  • ExecuteStoredProcedure:省略可能なパラメーターを指定してストアドプロシージャを実行します

    • パラメーター:
      • schema:スキーマ名(例:'dbo')
      • procedureName:ストアドプロシージャ名
      • parametersJson:パラメーターの JSON オブジェクト。省略可能です(例:{"@param1": "value"})
      • commandTimeout:コマンドのタイムアウト時間(秒)。省略可能です
      • maxRows:返す行数の最大値。省略可能です
スキーマツール(トークン最適化)

データを取得せずにデータベース構造を調べられる軽量なツールです。

  • GetTableColumns:テーブルの列名と型を取得します
  • GetTableRowCount:テーブルの行数を取得します
  • ListTables:スキーマ内のすべてのテーブルを一覧表示します(行数の表示は省略可能です)
  • GetPrimaryKey:テーブルの主キー列を取得します
  • GetSampleData:少量のサンプルデータを取得します(最大 20 行)
データベースリソース

サーバーは、リソースベースのアプローチを通じてデータベースのスキーマ情報を提供します。リソースは URI 経由でアクセスし、パフォーマンス向上のために遅延読み込みとキャッシュが行われます。

リソース URI説明読み込み動作
sqlserver://schemas/{schema_name}特定のスキーマに関する情報初回のリクエスト時に読み込まれ、10 分間キャッシュされます
sqlserver://schemas/{schema_name}/tablesスキーマ内のテーブル一覧初回のリクエスト時に読み込まれ、10 分間キャッシュされます
sqlserver://schemas/{schema_name}/viewsスキーマ内のビュー一覧初回のリクエスト時に読み込まれ、10 分間キャッシュされます
sqlserver://schemas/{schema_name}/proceduresスキーマ内のストアドプロシージャ一覧初回のリクエスト時に読み込まれ、10 分間キャッシュされます
sqlserver://schemas/{schema_name}/tables/{table_name}特定のテーブルに関する詳細情報初回のリクエスト時に読み込まれ、10 分間キャッシュされます
sqlserver://schemas/{schema_name}/views/{view_name}ビューの列(定義は含まれません)初回のリクエスト時に読み込まれ、10 分間キャッシュされます
sqlserver://schemas/{schema_name}/views/{view_name}/definitionビューの SQL 定義リクエスト時に読み込まれます
sqlserver://schemas/{schema_name}/procedures/{procedure_name}プロシージャのパラメーター(定義は含まれません)初回のリクエスト時に読み込まれ、10 分間キャッシュされます
sqlserver://schemas/{schema_name}/procedures/{procedure_name}/definitionプロシージャの SQL 定義リクエスト時に読み込まれます

注: トークンの使用量を抑えるため、ビューとプロシージャの定義はデフォルトで除外されています。SQL ソースコードが必要な場合は、/definition エンドポイントを使用してください。

リソースは MCP クライアントによって自動的に検出され、特定のツール呼び出しを行わずに直接アクセスできます。

セキュリティに関する考慮事項

  • 適切な権限を持つ SQL Server アカウントを使用してください(最小権限の原則)。
  • 接続文字列は安全に保管してください(ソース管理に含めないでください)。
  • 接続文字列には環境変数の使用を検討してください。
  • データベース接続では TLS/SSL を有効にしてください。
  • SQL インジェクションの検証により危険な操作を防ぎ、一般的な攻撃ベクトルから保護します。

使用例

データのクエリ
ExecuteQuery:
  query: "SELECT TOP 10 * FROM MyTable"
  maxRows: 100
データベースリソースへのアクセス

リソースには URI 経由で直接アクセスできます。

# List all schemas
GET sqlserver://schemas

# Get information about a specific schema
GET sqlserver://schemas/dbo

# List all tables in a schema
GET sqlserver://schemas/dbo/tables

# Get detailed information about a specific table
GET sqlserver://schemas/dbo/tables/Customers

リソースベースのアプローチにより、データベーススキーマを探索して操作するための RESTful な方法が提供されます。

ライセンス

このプロジェクトは MIT License の下でライセンスされています。詳細については、LICENSE.md ファイルを参照してください。

MIT License は、最小限の制限で再利用を認める寛容なライセンスです。元の著作権表示と許諾表示をすべての複製物に記載することを条件として、誰でもソフトウェアを使用、コピー、変更、統合、公開、配布、サブライセンス、および/または販売できます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。