リモート開発メインのソフトウェア開発企業のエンジニアブログです

公式の Slack MCP サーバーを試してみた

今までも非公式の Slack MCP サーバーはあったのですが、2/17(10日前くらいですね)についに公式の MCP サーバーがリリースされました。ドキュメントは以下にあります。

Slack MCP Server | Slack Developer Docs

ということで、今回早速使ってみました。

前提

本記事では、一応、以下の知識があることを前提としています。

  • (必須)MCP、MCP サーバーが何なのかを知ってる
  • (必須)OAuth が何なのかを知ってる
  • (出来れば)OAuth を使ったアプリを作ったことがある
Moba Pro

手順

Slack の管理画面から Slack アプリの作成

ドキュメントの Create an app の項に書いてありますが、app settings ページからアプリを作成します。

注意点が1つあり、後ほど使うためにコールバックURL として以下を登録する必要があるのですが、画面から登録しようとすると https でないとダメ、みたいなエラーとなります。そのため、manifest に記載して登録する必要があります。(アプリ作成後も、App Manifest のところで修正は可能。)

http://localhost:6274/oauth/callback

それ以外は特に注意するところはないので、詳細は省略します。

Slack アプリの設定

これもドキュメントに書いてありますが、左側のメニューより「Agents & AI Apps」を選択し、「Model Context Protocol」を有効にします。

また、必要に応じて、OAuth のスコープを絞ったり追加したりしてください。

MCP Inspector を起動

Slack のアプリを作ったら、通常はウェブアプリなどに OAuth のフローを組み込むのですが、今回は MCP サーバーを使いたいだけなので、MCP Inspector を使います。

まずは以下の通り実行します。実行には Node.js が必要です。

npx @modelcontextprotocol/inspector

次に、以下の URL にアクセスします。

http://localhost:6274/

MCP Inspector の接続設定、OAuth フロー

MCP Inspector の画面では以下の通り入力・選択します。

左メニューの「Authentication」を開くと、下の方に「OAuth 2.0 Flow」というのがあるので、そこに、先ほど作成した Slack アプリの Client ID と Client Secret を入力します。Scope は使いたいものをスペース区切りで入力してください。Redirect URL は以下のデフォルト値のままで良いです。

http://localhost:6274/oauth/callback

次に、右側のメイン画面のところから以下の「Open Auth Settings」ボタンをクリックします。

その後、少し下にスクロールすると以下のような画面になっているので、「Continue」を押します。

1回押す毎に次のステップに進みます。Preparing Authorization が終わると以下のようになりますので、赤丸のボタンをクリックします。

すると、別ウィンドウで Slack の OAuth の確認画面がでます。そこから先に進むと以下のような画面が出るので、黒塗りの部分に表示されている code をコピーして、このウィンドウは閉じます。

MCP Inspector の画面で code を「Authorization Code」のところに入力して Continue ボタンを押していきます。最後の「Authentication Complete」まで緑のチェックがついている事を確認します。

上のスクリーンショットの下の方に「Access Tokens」というのがあるので、そこを開いてアクセストークンの文字列をコピーします。

その後、左のメニューの「Authentication」に戻り、「Custom Headers」を有効化し、Authorization ヘッダーの値には Bearer 実際のアクセストークン と入力します。最初から Bearer と入力されているので、その後に xoxp- から始まるアクセストークンを入力すれば良いです。

その後、左側のメニュー最下部で「▷Connect」というボタンをクリックします。接続に成功すれば準備完了です。

試しに使ってみる

早速 MCP サーバーを使ってみましょう。上のタブから「Tools」を選択して、「List Tools」をクリックします。

使えるツールが出てくるので、「Send message」を選択します。以下の必要な情報を入力します。

  • channel_id → C から始まる文字列。Slack アプリのチャンネル詳細情報から確認できます
  • message → 投稿したい任意の文字列

その後、最下部の「Run Tool」ボタンをクリックし、Slack に以下のような投稿がされていれば成功です。”Sent using” の後の文字列は「Slack アプリの名前 + bot」となっています。

補足・技術的な詳細

Metadata Discovery

ウェブアプリなどで OAuth に対応したことがある人、特に昔に対応した人は、authorization とかの URL を指定しなくて良いの?と思ったかもしれません。MCP の仕様では認可サーバーは RFC 8414 か OpenID Connect Discovery 1.0 に対応している必要があり、それらによって自動的に必要な metadata を取得出来ます。

5. MCP authorization servers MUST provide at least one of the following discovery mechanisms:

  • OAuth 2.0 Authorization Server Metadata (RFC8414)
  • OpenID Connect Discovery 1.0
Authorization – Model Context Protocol

Slack も RFC8414 に対応しています。以下の URL にブラウザでアクセスすれば、どのような情報が提供されているかが分かると思います。

https://mcp.slack.com/.well-known/oauth-authorization-server

興味のある方は RFC を直接参照してください。

RFC 8414 – OAuth 2.0 Authorization Server Metadata

Client Registration

MCP Inspector の「OAuth Flow Progress」のところで、「Metadata Discovery」の下に「Client Registration」というのがあったと思います。

Slack の場合は、今回書いたとおり、Slack の管理画面で自分でアプリを作成して、OAuth のフローではそれの client ID と client secret を使います。ただ、世の中には RFC 7591 OAuth 2.0 Dynamic Client Registration Protocol というのがあり、それに対応していれば今回のようなアプリ作成の作業は不要です。MCP の仕様において RFC 7591 への対応は MAY なので任意です。

3. Authorization servers and MCP clients MAY support the OAuth 2.0 Dynamic Client Registration Protocol (RFC7591).

Authorization – Model Context Protocol

Slack は RFC 7591 に対応していませんが、私が知っているものだと Notion は対応していました。

Integrating your own MCP client – Notion Docs

どのようなものかは、RFC を直接参照してみてください。

RFC 7591 – OAuth 2.0 Dynamic Client Registration Protocol

MCP を使える Slack アプリについて

Slack MCP サーバーのドキュメントには以下の記述があります。(use use は typo でしょう。)

Only directory-published apps or internal apps may use use MCP.

“directory-published apps” は、Slack の審査を経て Slack のアプリディレクトリに登録されているアプリの事です。それは分かるのですが、”internal apps” とは何でしょうか。

結論から言うと多分「Manage Distribution」の画面で「Activate Public Distribution」を押していないアプリの事だと思います。つまり、アプリを作成したユーザーのいる Slack チームでしか使えないものです。

まとめると、以下の○がついているアプリでは MCP サーバーが使えるけど、公開はしているけどアプリディレクトリに載っていないアプリでは MCP サーバーは使えないと言うことです。

  • ○ アプリを公開して、審査も完了してアプリディレクトリにも載っているアプリ
  • × 公開をしているだけの野良アプリ
  • ○ 公開前のアプリ

まとめ

10日ほど前に、待望の Slack 公式 MCP サーバーが発表されました。MCP Inspector を使うと比較的手軽に試すことが出来ますが、Slack アプリの登録が必要なので、今日からすぐに業務で使えるかというとなかなか難しいかなと思います。

最後に宣伝ですが、現在 MCP サーバーの設定・実行を一元管理するウェブアプリを作っています。それを使うと、この辺の面倒な設定とかを行わずに MCP サーバーを使うことが出来ます。現在 Early Access Program の登録者を募集中ですので、興味のある方は以下のリンク先より登録していただければと思います。

Register for MHaaS (tentative) Early Access & Lifetime Benefits

← 前の投稿

Bubblewrap を Docker コンテナ内で動かす

次の投稿 →

コメントを残す