Appearance
Slack連携
Issue: #8 Slack連携
概要
Slack Web API を使い、指定チャンネルのメッセージを取得する。本アプリのコア機能であり、「今日やるべきこと」の情報源となる。
前提条件
- Slack App を作成し、Bot Token(
xoxb-...)を取得 - 必要な OAuth Scopes:
| Scope | 用途 |
|---|---|
channels:history | パブリックチャンネルのメッセージ取得 |
channels:read | チャンネル一覧の取得 |
groups:read | プライベートチャンネルの情報取得 |
groups:history | プライベートチャンネルのメッセージ取得 |
search:read | メッセージ検索 |
users:read | ユーザー名の解決 |
ツール定義
list_slack_channels
参加しているチャンネル一覧を取得する。
python
@mcp.tool()
def list_slack_channels() -> str:
"""参加しているSlackチャンネルの一覧を取得する"""| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| (なし) |
戻り値: チャンネル名のリスト
get_slack_messages
指定チャンネルの直近メッセージを取得する。
python
@mcp.tool()
def get_slack_messages(channel_name: str, count: int = 20) -> str:
"""指定したSlackチャンネルの直近メッセージを取得する"""| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| channel_name | str | Yes | チャンネル名 |
| count | int | No | 取得件数(デフォルト: 20) |
戻り値: メッセージ一覧(投稿者・時刻・内容)
get_today_slack_messages
指定チャンネルの今日のメッセージだけを取得する。
python
@mcp.tool()
def get_today_slack_messages(channel_name: str) -> str:
"""指定したSlackチャンネルの今日のメッセージを取得する"""| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| channel_name | str | Yes | チャンネル名 |
戻り値: 今日のメッセージ一覧
search_slack_messages
キーワードでメッセージを検索する。
python
@mcp.tool()
def search_slack_messages(query: str, count: int = 10) -> str:
"""Slackのメッセージをキーワードで検索する"""| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| query | str | Yes | 検索キーワード |
| count | int | No | 取得件数(デフォルト: 10) |
get_slack_thread
スレッドの内容を取得する。
python
@mcp.tool()
def get_slack_thread(channel_name: str, thread_ts: str) -> str:
"""Slackスレッドの全メッセージを取得する"""| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| channel_name | str | Yes | チャンネル名 |
| thread_ts | str | Yes | スレッドのタイムスタンプ |
実装メモ
slack_sdk.WebClientを使用- チャンネル名 → チャンネルID の変換が必要(
conversations.listで解決) - ユーザーID → ユーザー名の変換(
users.infoで解決) - レート制限に注意(Tier 3: 50+/min)