DifyとSlackを公式MCPサーバで連携!API開発不要でAIエージェントを動かす

はじめに

対象とする読者

本記事は、ノーコードAIアプリ開発ツールで人気の Dify を構築・運用している方で、特に以下のような方を対象としています。

  • Difyを使ってAIエージェントを開発しているエンジニア・ノーコードユーザー。
  • SlackのデータをAIに読み取らせたり、AIからSlackへ投稿させたりしたい方。
  • カスタムツール(API定義)の設定を面倒に感じており、より効率的な連携方法を探している方。

また本記事の前提知識として、何かしらのワークフローツールとSlackアプリの基礎知識があることを想定しています。

記事のゴール

本記事は以下の点を達成することを目指します。

  • Slack公式のMCPサーバをDifyと連携し、認証を完了させるまでの手順を学ぶ。
  • DifyのエージェントからSlackへのメッセージ投稿やスレッド取得の検証を行う。
  • AIエージェント運用時のトークン消費を抑えるための注意点を理解する。

記事を書こうと思った理由

現在、DifyによるAIエージェント開発をしており、その中でDifyからSlack上のデータを取得したいケースが出てきました。
以前の記事で紹介したプラグインはあくまでトリガーなので、Slackで発生したイベントに含まれるデータしか受け取れず、任意のデータにアクセスするという用途ではありません。
そのため、こういったケースでは、APIによる取得が手段として考えられます。

Difyには、カスタムツールというものがあり、他サービスのAPIをあらかじめOpenAPI/Swagger仕様に沿った形で定義しておき、そのAPIをツールとして呼び出すことができます。
この仕組みを利用して、ワークフローやチャットフロー内のツールノードから対象のAPIを呼び出すことで、Slackデータへアクセスすることができます。

ただしSlackに関しては、実はSlackが公式にMCPサーバを公開しており、Difyでは、MCPサーバとも連携できるので、その方法でも一部のSlackデータにアクセスすることが可能です。

今回のケースで取得したいデータは限られたものなので、特定APIをカスタムツールとして呼び出しても良かったのですが、Slack公式のMCPサーバが提供する機能でもカバーできそうだったので、試しに使ってみようと思います。


SlackのMCPサーバとDifyの連携設定

設定作業

SlackのMCPサーバとDifyとの連携のために必要な作業は以下の通りです。

(1) DifyからSLack APIとのやり取りをするSlackアプリを作成
  ↓
(2) 作成したSlackアプリに追加設定、クライアントシークレットなどの情報を取得
  ↓
(3) DifyでSlackのMCPサーバを設定(ここでDifyへの認可コールバックURLが生成される)→ Slackアプリに生成されたDifyへの認可コールバックURLを設定
  ↓
(4) DifyからSlackアプリ経由でSlack APIへのアクセス許可リクエスト&許可

Slackアプリを作成

Slack Developers公式ドキュメントにある通り、Difyからやり取りをするSlackアプリを作成していきます。

Slack APIダッシュボード にアクセスし、右上の「Create New App」をクリックします。

作成方法を聞かれるので「From a manifest」を選択します。

アプリ名を設定し、接続するSlackワークスペースを選択し、「Next」をクリックします。

先ほどのSlack Developers公式ドキュメントにある、manifest.json をコピーして貼り付け、「Next」をクリックします。

確認がされますが、そのまま「Create」をクリックします。

Slackアプリに追加で設定、シークレットなどの情報を取得

次に作成したSlackアプリに対して、権限設定など追加でいくつか設定をしていきます。

Features > Agents & AI AppsModel Context Protocol を有効にします。

MCPを有効にしたことで、先ほど貼り付けたマニフェストファイルには存在しなかったユーザースコープが追加されます。
Features > OAuth & Permissions > スコープ を確認してみましょう。

Slack Developers公式ドキュメントの説明によると、MCPサーバではこれらスコープが必要だという事なので、すべてにチェックを入れます。(一番左上の「必須」にチェックを入れればOK)

続いて、Ridirect URLs の設定が必要なのですが、Dify側でMCPサーバを設定しないとURLが生成されないため、いったんここは設定しないでおきます。

次に、Dify側でのMCPサーバ設定に必要となるため、Settings > Basic Information に移動し、以下の2つの値をメモしておきます。

  • Client ID
  • Client Secret ※「Show」をクリックして表示する

DifyでMCPサーバを設定、SlackアプリにコールバックURL設定

Dify側に移動し、(上部にある)ツール > (左側にある)MCP > MCPサーバー(HTTP)を追加 をクリックします。

MCPサーバの設定画面になるため、以下の要領で設定します。
ただしこの時点で「追加して認証」はまだクリックしないでください。(理由は後述)

  • サーバーURL: https://mcp.slack.com/mcp ※公式ドキュメントのこちらに記載あり
  • 名前とアイコン: 任意
  • サーバー識別子: 任意 ※文字列制約があるため注意
  • 認証タブ:
    • 動的クライアント登録を使用する: チェックを外す
    • クライアントID: 先ほどメモした値を貼り付け
    • クライアントシークレット: 先ほどメモした値を貼り付け

この時点でクリックしない理由は、Slackアプリ側にコールバックURLが設定されていないのでエラーになるからです
あと、Dify側のこの設定画面に不具合があるようで、認証に失敗すると、この画面で設定した内容が1から再設定が必要になります。

ということで、この画面で表示されている [!]OAuthリダイレクトURLを次のように設定してください: の部分に表示されているURLをコピーして、さっさとSlackアプリ側のコールバックURLに設定してしまいましょう。

Features > OAuth & Permissions > Redirect URLs ですでにあるURLの編集ボタンをクリックします。

先ほどコピーしたURLを貼り付け、「Done」をクリックします。

さらに続けて必ず「Save URLs」をクリックします。 ※忘れがちなので注意!

DifyからSlack APIへのアクセス許可リクエスト&認可

Dify側の先ほどのMCPサーバの設定画面に戻り、先ほど止めておいた「追加して認証」をクリックします。

Slackへのアクセス許可を求める画面がポップアップ表示されるため、「許可する」をクリックします。

認可処理が成功し、無事Difyに13個のツールを持つMCPサーバが追加されました。

もしここでエラーになった場合は、Slackアプリ側かDifyのMCPサーバ設定のどこかに誤りがある可能性があります。
ただし、先ほども記載した通り、Dify側のMCPサーバ設定画面は不具合があるっぽく、認証に失敗するとこの画面で設定した内容が1から再設定が必要になります。(もう一度設定画面を開いてみると分かると思いますが、無効にしたはずの「動的クライアント登録を使用する」が有効になっていたり、マスクしてある文字列がマスクしたまま扱われてしまうような挙動をします。)
そのため、Dify側のMCPサーバ設定画面で設定した内容は再度1から設定するようにしてください。

動作検証

連携設定が終わったので、さっそく動作を見ていきましょう。
とりあえず簡単なエージェントを作って動作を確認したいと思います。

エージェント作成

Difyで、スタジオ > エージェント > 最初から作成 をクリックします。

以下の要領で設定し「作成する」をクリックします。

  • アプリタイプを選択: エージェント
  • アプリのアイコンと名前: 任意

プロンプトを設定します。

あなたはSlackMCPサーバのAIエージェントとして動作します。以下の指示に従い、与えられた情報をもとに適切な応答を生成してください。出力にXMLタグは一切含めないでください。

1. 質問内容に基づいて、ユーザーのリクエストを理解します。
2. 情報が不十分な場合、さらに詳しい情報を得るための質問を考えます。
3. リクエストに対して適切な応答を生成します。応答は有用で、コンテキストに沿ったものであることを確認してください。
4. 最後に、応答を簡潔かつ明瞭に書き上げます。

続いて使用するツールを設定します。
ツール > 追加 > MCP で、今回の動作確認で使用する以下の2つのツールを選択してください。

  • slack_send_message
  • slack_read_thread

※あまり多くのツールを与えると、AIエージェントは全てのツールの詳細を確認して、どれが適切なツールかを考えてしまいます。その結果トークン数が増大してしまうので、利用しないツールは選択しないようにしてください。(例えるならネジを1つ締めるだけなのが分かっているのに、あらゆる工具を持参するようなものです)

さてここまで設定したら、デバッグとプレビューのチャット欄から動作確認ができます。

検証1: チャンネルへの投稿

例えばチャット欄に次のように入力します。
(※チャンネルIDとはSlack内でチャンネルを識別するためのIDです)

チャンネルID 'C08QKC66LQL' に「テスト」と投稿して。

次のように回答があり、実際にSlackチャンネルにも投稿されていました。

これは、エージェントが、質問内容から、先ほど設定した2つのツールの slack_send_message が適切と判断し、それを利用して投稿を行った結果です。

検証2: スレッド履歴の取得

先ほどのテスト投稿に続いて、スレッドにいくつか投稿を行いました。

この状態で、チャット欄に次のように入力してみます。
(※スレッドTSとはSlack内でスレッドを識別するためのタイムスタンプです)

チャンネルID 'C08QKC66LQL' のスレッドTS '1774955419.790229' のスレッド履歴を取得して、さらに内容を要約して。

すると次のように、スレッド履歴を取得して、さらに内容を要約してくれました。

このように、SlackのMCPサーバを利用することで、簡単にSlackへの投稿やデータ取得ができました。


エージェント利用時の注意

今回は動作検証のために簡単なエージェントを作成して検証を行いましたが、AIエージェントはある程度自律的に行動しようとするため、次のような状況になると頑張りすぎることで大量のトークンを消費することがあります。

  • 使わないツールも含めてたくさんツールを持たせる
  • 複数のツールを使用する複雑なプロンプトを持たせる
  • 大量のテキストを読み込ませる

そのため、反復回数の上限を設定したり、あいまいな質問や指示が入ってきた場合はすぐ諦めるようなプロンプトにしたり、処理に不要なメタデータは読み込ませないようにするなど、工夫が必要になります。
検証の際はコストが膨らまないよう、常に消費トークン数などを確認しながら行うよう注意してください。


まとめ

学んだことの整理

今回の記事を通じて以下の点を学びました。

  • API開発不要のスピード連携:カスタムツールを1から定義しなくても、Slack公式のMCPサーバを利用すれば、認可設定だけで高度な操作が可能になる。
  • 実用性の高いアクション:チャンネルへの投稿だけでなく、特定スレッドの履歴取得と要約など、実業務に即した複雑なタスクもノーコードに近い形で実現できる。
  • 最小限のツール選択が鍵:エージェントに持たせるツールを絞り込むことで、AIの判断迷いを防ぎ、実行スピードの向上とトークンコストの削減につながる。

Slack公式のMCPサーバとDifyの組み合わせは、AIエージェントの外部連携を劇的にシンプルにしてくれます。設定にはちょっとしたコツが必要ですが、一度繋がってしまえばその拡張性は非常に強力です。
消費トークンに配慮しつつ、ぜひ自社の業務を加速させる最強のSlackエージェントを構築してみてください。

新規CTA