Skip to content

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_namestrYesチャンネル名
countintNo取得件数(デフォルト: 20)

戻り値: メッセージ一覧(投稿者・時刻・内容)

get_today_slack_messages

指定チャンネルの今日のメッセージだけを取得する。

python
@mcp.tool()
def get_today_slack_messages(channel_name: str) -> str:
    """指定したSlackチャンネルの今日のメッセージを取得する"""
パラメータ必須説明
channel_namestrYesチャンネル名

戻り値: 今日のメッセージ一覧

search_slack_messages

キーワードでメッセージを検索する。

python
@mcp.tool()
def search_slack_messages(query: str, count: int = 10) -> str:
    """Slackのメッセージをキーワードで検索する"""
パラメータ必須説明
querystrYes検索キーワード
countintNo取得件数(デフォルト: 10)

get_slack_thread

スレッドの内容を取得する。

python
@mcp.tool()
def get_slack_thread(channel_name: str, thread_ts: str) -> str:
    """Slackスレッドの全メッセージを取得する"""
パラメータ必須説明
channel_namestrYesチャンネル名
thread_tsstrYesスレッドのタイムスタンプ

実装メモ

  • slack_sdk.WebClient を使用
  • チャンネル名 → チャンネルID の変換が必要(conversations.list で解決)
  • ユーザーID → ユーザー名の変換(users.info で解決)
  • レート制限に注意(Tier 3: 50+/min)