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)