mcpField
R
Redshift MCP Server (TypeScript)

Redshift MCP Server (TypeScript)

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

Redshift MCP Server (TypeScript) について

Redshift MCP Server (TypeScript)は、MCP対応クライアントをAmazon Redshiftに接続し、読み取り専用クエリとデータウェアハウスの調査を行います。クエリツールに加え、スキーマ、サンプルデータ、統計情報を提供し、サンプル内の機密値をマスキングします。

主な機能

  1. 01読み取り専用SQLクエリの実行
  2. 02テーブル構造の確認
  3. 03名前パターンによる列検索
  4. 04スキーマとテーブルリソースの参照
  5. 05サンプル行と統計情報の表示
  6. 06サンプル内の機密データのマスキング

活用シーン

  1. 01Redshift内のテーブルと列の調査
  2. 02データウェアハウスの読み取り専用クエリ
  3. 03サンプル行とテーブル統計の確認

MCP 対応

クエリ、テーブル説明、列検索のツールと、スキーマ、サンプルデータ、統計情報のリソースをMCPクライアントに提供します。設定したデータベースURLでRedshiftに接続します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

Redshift MCP Server (TypeScript)

これは、TypeScript で実装された Amazon Redshift 用の Model Context Protocol(MCP)サーバーです。Anthropic の実装パターンに従い、Cursor IDE やその他の MCP 対応クライアントに、Redshift データウェアハウスに関する豊富なコンテキスト情報を提供します。このサーバーを使うと、LLM がデータベースのスキーマを調べ、読み取り専用クエリを実行できます。

MCP クライアントとの連携

プロジェクト固有の設定

プロジェクトディレクトリに .cursor/mcp.json ファイルを作成します。

{
  "mcpServers": {
    "redshift-mcp": {
      "command": "node",
      "args": ["path/to/dist/index.js"],
      "env": {
        "DATABASE_URL": "redshift://username:password@hostname:port/database?ssl=true"
      }
    }
  }
}
グローバル設定

すべてのプロジェクトで使用するには、ホームディレクトリに同じ設定で ~/.cursor/mcp.json を作成します。

クライアント固有のセットアップ
Cursor IDE
  1. mcp.json で設定すると、サーバーは自動的に検出されます
  2. MCP の設定にある「利用可能なツール」にツールが表示されます
  3. エージェントは、関連する場合にツールを自動的に使用します
その他の MCP クライアント

stdio トランスポートを使用してサーバーを設定します。

{
  "servers": [
    {
      "name": "redshift-mcp",
      "transport": {
        "kind": "stdio",
        "command": ["node", "path/to/dist/index.js"]
      }
    }
  ]
}

前提条件

  • Node.js 16 以降
  • TypeScript
  • Amazon Redshift クラスターへのアクセス
  • Redshift と SQL の基本的な知識
  • Cursor IDE がインストールされていること

インストール

  1. このリポジトリをクローンするか、ファイルをローカルシステムにコピーします
  2. 依存関係をインストールします。
npm install
  1. TypeScript コードをビルドします。
npm run build

使用方法

サーバーには、DATABASE_URL 環境変数を使った Redshift 接続 URL が必要です。

export DATABASE_URL="redshift://username:password@hostname:port/database?ssl=true"
npm start

または、直接実行できます。

DATABASE_URL="redshift://username:password@hostname:port/database?ssl=true" node dist/index.js

開発時には、次のように実行できます。

DATABASE_URL="redshift://username:password@hostname:port/database?ssl=true" npm run dev
接続 URL の形式
redshift://username:password@hostname:port/database?ssl=true
  • username:Redshift のユーザー名
  • password:Redshift のパスワード
  • hostname:Redshift クラスターのエンドポイント
  • port:Redshift では通常 5439
  • database:データベース名
  • ssl:安全な接続の場合は "true" に設定します(推奨)

追加の接続パラメーター:

  • ssl=true:安全な接続に必須です(推奨)
  • timeout=10:接続タイムアウト(秒)
  • keepalives=1:TCP キープアライブを有効にします
  • keepalives_idle=130:TCP キープアライブのアイドル時間

プロジェクト構成

  • src/index.ts:TypeScript のメイン実装
  • dist/:コンパイル済み JavaScript の出力先
  • package.json:プロジェクトの依存関係とスクリプト
  • tsconfig.json:TypeScript の設定

コンポーネント

Cursor で利用できるツール
  • query

    • 接続先の Redshift データベースに対して、読み取り専用の SQL クエリを実行します
    • 例:「public スキーマ内のすべてのテーブルを表示するクエリを書いてください」
  • describe_table

    • 特定のテーブルに関する詳細情報を取得します
    • 例:「users テーブルの構造を表示してください」
  • find_column

    • 特定の名前パターンに一致するカラムを含むテーブルを検索します
    • 例:「名前に 'email' を含むカラムがあるテーブルをすべて検索してください」
Cursor が利用できるリソース

サーバーは、Cursor が利用できるスキーマ情報を提供します。

  • スキーマ一覧(redshift://<host>/schema/<schema_name>)

    • 特定のスキーマ内にあるすべてのテーブルを一覧表示します
    • データベースのメタデータから自動的に検出されます
  • テーブルスキーマ(redshift://<host>/<schema>/<table>/schema)

    • 各テーブルの JSON スキーマ情報
    • カラム名、データ型、Redshift 固有の属性(分散キーとソートキー)が含まれます
  • サンプルデータ(redshift://<host>/<schema>/<table>/sample)

    • 各テーブルのサンプル行(最大 5 行)
    • 機密データは自動的にマスキングされます
  • 統計情報(redshift://<host>/<schema>/<table>/statistics)

    • サイズ、行数、作成時刻などのテーブル統計情報
    • 分散と圧縮に関する情報

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

このサーバーは、次の処理を行います。

  • クエリには読み取り専用トランザクションを使用し、変更を防ぎます
  • SQL インジェクションを防ぐために入力をサニタイズします
  • リソース URI にパスワードの生データを公開しません
  • サンプル結果の機密データ(メールアドレス、電話番号)を自動的にマスキングします
  • データベースにアクセスできるため、安全な環境で使用してください

Cursor での操作例

接続後、Cursor に次のような質問をすることができます。

  1. "public スキーマ内のすべてのテーブルを表示してください"
  2. "customers テーブルの構造はどうなっていますか?"
  3. "顧客情報を含むすべてのテーブルを探してください"
  4. "ステータス別に注文数を数えるクエリを書いてください"
  5. "products テーブルのサンプルデータを表示してください"

サーバーの拡張

次の方法でこのサーバーを拡張できます。

  1. ListResourcesRequestSchema と ReadResourceRequestSchema のハンドラーに新しいリソースタイプを追加する
  2. ListToolsRequestSchema と CallToolRequestSchema のハンドラーに新しいツールを追加する
  3. セキュリティ機能を強化するか、認証を追加する

開発

開発には、npm run dev コマンドを使用できます。このコマンドは ts-node を使って、事前コンパイルなしで TypeScript コードを直接実行します。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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