Slack Search MCP Server

by takuya0206
Verified
Slack の検索機能にアクセスするための Model Context Protocol (MCP) サーバーを TypeScript で実装してください。このサーバーは、LLM が Slack のユーザー、チャンネル、メッセージなどを検索・取得できるようにするためのツールとリソースを提供します。 ## 技術要件 - Bun ランタイムを使用 - TypeScript で実装 - @modelcontextprotocol/sdk を使用 - Slack API (Official Slack SDK など) を使用して Slack と通信 - zod を使用してパラメータのバリデーション ## 機能要件 ### Slack 接続 - 環境変数から Slack API トークンを取得(必須) - トークン有効性チェックのために起動時に `auth.test` などで接続テスト ### ツール(Tools) 1. `get_users` - ワークスペースのユーザー一覧を取得 - 結果を適切にページネーションまたは制限 - トークンをパラメータとして受け取る 2. `get_channels` - ワークスペースのチャンネル一覧を取得 - 結果を適切にページネーションまたは制限 - トークンをパラメータとして受け取る 3. `get_channel_messages` - 特定のチャンネルからメッセージを取得 - タイムスタンプや日付範囲 ( oldest, latest ) などで絞り込み可能 - トークン、チャンネルID、必要に応じて日付・期間などをパラメータとして受け取る 4. `get_thread_replies` - 特定のメッセージ(thread_ts)に紐づくスレッドリプライを取得 - トークン、チャンネルID、thread_ts をパラメータとして受け取る 5. `search_messages` - Slack の検索機能を使ってメッセージを検索 - クエリ文字列、ユーザー、チャンネル、日付などで絞り込む - トークン、検索文字列、オプションのフィルタパラメータを受け取る - 結果をページネーションまたは制限 ### リソース(Resources) 1. `all_users` - URI: allusers:// - クエリパラメータで Slack API トークンを指定 - ワークスペースの全ユーザー一覧を取得・提供 2. `all_channels` - URI: allchannels:// - クエリパラメータで Slack API トークンを指定 - ワークスペースの全チャンネル一覧を取得・提供 ## エラーハンドリング - API トークンが無効または指定されていない場合のエラー - ページネーション上限超過や Slack API 呼び出し失敗時のエラー - 無効なチャンネル ID、無効なスレッド ID、その他バリデーションエラー ## セキュリティ - Slack API トークンをログに出力しない - 必要に応じて HTTPS や環境変数の安全な管理を徹底 ## 実行方法 - Bun ランタイムで実行 - StdioServerTransport を使用して標準入出力で通信