Redshift MCP Server (TypeScript) について
Redshift MCP Server (TypeScript)はAmazon RedshiftをMCP対応クライアントに接続します。Cursor IDEなどからデータウェアハウスの構造を確認し、読み取り専用クエリを実行したいチーム向けです。
主な機能
- 01読み取り専用SQLクエリの実行
- 02テーブル構造の確認
- 03名前パターンによる列検索
- 04スキーマとテーブルリソースの提供
- 05マスキング済みサンプル行の提供
活用シーン
- 01Redshiftスキーマ内のテーブル確認
- 02条件に合う列を含むテーブルの検索
- 03テーブル構造とサンプルデータの確認
MCP 対応
MCPサーバーは、クエリ、テーブル構造の説明、列検索のツールと、スキーマ、テーブル構造、サンプルデータ、統計情報のリソースを公開します。MCPクライアントはstdioで接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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
mcp.jsonで設定すると、サーバーは自動的に検出されます- MCP の設定にある「利用可能なツール」にツールが表示されます
- エージェントは、関連する場合にツールを自動的に使用します
その他の 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 がインストールされていること
インストール
- このリポジトリをクローンするか、ファイルをローカルシステムにコピーします
- 依存関係をインストールします。
npm install
- 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 に次のような質問をすることができます。
- "public スキーマ内のすべてのテーブルを表示してください"
- "customers テーブルの構造はどうなっていますか?"
- "顧客情報を含むすべてのテーブルを探してください"
- "ステータス別に注文数を数えるクエリを書いてください"
- "products テーブルのサンプルデータを表示してください"
サーバーの拡張
次の方法でこのサーバーを拡張できます。
ListResourcesRequestSchemaとReadResourceRequestSchemaのハンドラーに新しいリソースタイプを追加するListToolsRequestSchemaとCallToolRequestSchemaのハンドラーに新しいツールを追加する- セキュリティ機能を強化するか、認証を追加する
開発
開発には、npm run dev コマンドを使用できます。このコマンドは ts-node を使って、事前コンパイルなしで TypeScript コードを直接実行します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。