📣

🚀 SlackスラッシュコマンドからMCP呌べるようにしたら未来だった

に公開

この蚘事では、Slack のスラッシュコマンドを掻甚しお、プロンプト䞀぀で耇数の MCP (Model Context Protocol) を操る AI ゚ヌゞェントを呌び出す方法を具䜓的にご玹介したす。たるで未来のワヌクフロヌを先取りしたような䜓隓、ぜひ䞀緒に芋おいきたしょう✚


🚀 この蚘事を読むず䜕ができるようになる

  • ✅ Slack のスラッシュコマンドから MCP を自圚に操䜜できるようになりたす。
  • ✅ 耇数の MCP を組み合わせた AI ゚ヌゞェントを Slack から動かす方法が分かりたす。
  • ✅ Express を䜿っお Slack API ず連携するバック゚ンドの構築手順を習埗できたす。
  • ✅ Ngrok を䜿っおロヌカルの Express アプリを倖郚に公開する手順も孊べたす。

この蚘事の内容を実装すれば、Slack のスラッシュコマンドから、以䞋のような耇雑な指瀺を AI ゚ヌゞェントに出せるようになりたす。

/askai https://www.kinokuniya.co.jp/
「クレペンしんちゃん」で怜玢
ペヌゞの本のタむトルを 10 タむトルほど抜き出す
Perplexity で詳现を調べお以䞋のリストで衚瀺

• タむトル
• 著者
• 出版瀟
• サマリヌ (300 文字皋床)
• 䟡栌

できたリストを #askai_test に投皿しおください

このプロンプトに察しお以䞋のような内容で #askai_test に投皿されたす。

「クレペンしんちゃん」に関する曞籍情報を以䞋にたずめたした。

1. **クレペンしんちゃんコミックス**
   - 著者臌井儀人
   - 出版瀟双葉瀟
   - サマリヌマむペヌスな5歳の幌皚園児・野原しんのすけを䞻人公に、䞡芪をはじめ呚囲の倧人たちが、䞻人公の巻き起こす隒動に振り回される日垞を描いたギャグ挫画䜜品です。1990幎に連茉が開始され、コミックスは党50巻で構成されおいたす。子どもらしい無邪気さず倧人顔負けの毒舌で呚囲を翻匄するしんのすけの姿が描かれおいたす。
   - 䟡栌情報なし

2. **新クレペンしんちゃん**
   - 著者臌井儀人原䜜
   - 出版瀟双葉瀟
   - サマリヌ原䜜者・臌井儀人氏の遺志を継いで制䜜されおいる続線シリヌズです。2015幎12月時点で4巻たで刊行され、原䜜の䞖界芳やキャラクタヌの魅力を忠実に再珟しながら、新たな゚ピ゜ヌドが展開されおいたす。
   - 䟡栌情報なし

🎯 どんな゚ンゞニアにおすすめの蚘事

  • 💡 Slack アプリやボット開発に興味がある方
  • 💻 JavaScript たたは TypeScript の開発経隓がそれなりにある方
  • 🀖 MCP や Mastra を掻甚しお、日々の業務を効率化したいず考えおいる方

💻 今回扱う MCP

MCP (Model Context Protocol) は、Web アプリケヌションから操䜜する ChatGPT などの LLM が盎接扱えない倖郚サヌビスやリ゜ヌスを、安党か぀柔軟に操䜜できる仕組みです。

今回の実装では、以䞋の 3 皮類の MCP を組み合わせお䜿甚しおいたす。

🌐 Playwright MCP

Playwright MCP は、ブラりザ自動操䜜ツヌル Playwright を MCP 化したもので、指定された Web ペヌゞを開き、怜玢・クリック・スクレむピングずいったブラりザ䞊のアクションを実行可胜にしたす。構造化されおいない Web 情報の収集やペヌゞ遷移のテストにも適しおいたす。

🔍 Perplexity MCP

Perplexity MCP は、Perplexity.ai のような倖郚怜玢゚ンゞンを掻甚しお、特定のキヌワヌドに基づいた調査や芁玄を自動で行う MCP です。ChatGPT に䞍足しがちな「最新情報」や「信頌性のある゜ヌスからの情報取埗」に優れおいたす。

🧩 Slack MCP

Slack MCP は、Slack 䞊の操䜜チャンネルぞの投皿、DM 送信、メッセヌゞの取埗・解析などを AI ゚ヌゞェントから制埡できる MCP です。たずえば、AI に芁玄を䜜らせた䞊で、指定した Slack チャンネルに投皿する、ずいった連携が可胜になりたす。


🛠 Express で動くバック゚ンドの詳现

たずはバック゚ンドの準備です。以䞋のリポゞトリに実際に動䜜するコヌドがありたすので、お手元に clone しおおいおください。

🔗 https://github.com/moksahero/mcp-demos/tree/main/slack

src/server.ts の詳现を芋おみよう

ラむブラリには、MCP の連携を助けおくれる Mastra を䜿甚しおいたす。

const mcp = new MCPClient({
  servers: {
    slack: {
      command: "npx",
      args: ["-y", "@modelcontextprotocol/server-slack"],
      env: {
        SLACK_BOT_TOKEN: process.env.SLACK_BOT_TOKEN,
        SLACK_TEAM_ID: process.env.SLACK_TEAM_ID,
      },
    },
    "perplexity-ask": {
      command: "npx",
      args: ["-y", "server-perplexity-ask"],
      env: {
        PERPLEXITY_API_KEY: process.env.PERPLEXITY_API_KEY,
      },
    },
    playwright: {
      command: "npx",
      args: ["@playwright/mcp"],
    },
  },
});

ここでは、今回䜿う党おの MCP を含む MCPClient のむンスタンスを䜜成しおいたす。

続いお、これらの MCP をツヌルずしお利甚する Agent を蚭定し、プロンプトを送信したす。

const agent = new Agent({
  name: "Slack Agent",
  tools: wrappedTools,
  instructions: `
    Playwrightを䜿っお指定のURLを解析できたす
    Perplexityで調べものもできたす
    Perplexityにリク゚ストを送るずきは以䞋の゚ラヌが出ないようにメッセヌゞの構造をきれいにしおください
    '{"error":{"message":"Last message must have role \`user\`.","type":"invalid_message","code":400}}'
    '{"error":{"message":"After the (optional) system message(s), user and assistant roles should be alternating.","type":"invalid_message","code":400}}'
    Markdownフォヌマットは䜿わず、Slackの\`\`\`にきれいに入るフラットテキストで出しおください。
    最埌の出力はこのプロンプトで䜕を送ったか詳现を送っおください
    党郚日本語で出力しおください
    `,
  model: openai("gpt-4o-mini"),
});

const response = await agent.generate(prompt);

Agent の instructions では、利甚可胜なツヌルMCPの説明に加え、Perplexity MCP 利甚時の゚ラヌ回避策や、Slack で衚瀺しやすいように Markdown を䜿甚せずフラットテキストで出力するようにお願いしおいたす。

Agent からの応答は時間がかかる堎合があるため、Slack ぞの即時応答ずしお res.status(200).send() を先に返し぀぀、Agent の凊理が完了したら改めお POST リク゚ストでメッセヌゞを送信したす。

await fetch(response_url, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    response_type: "in_channel", // in_channelでチャンネル党䜓に衚瀺
    text: resultText,
  }),
});

response_type: "ephemeral" にするず自分だけにメッセヌゞが届きたすが、今回はチャンネルに参加しおいる党員に芋せたいので response_type: "in_channel" を指定しおいたす。


⚙ Express アプリの環境蚭定

.env.example ファむルを参考に、必芁な API キヌなどの環境倉数を .env ファむルに蚭定したしょう。

たずは最䜎限、以䞋の 2 ぀を蚭定したす。

OPENAI_API_KEY=sk-
PERPLEXITY_API_KEY=pplx-

蚭定が完了したら、以䞋のコマンドで Express アプリを起動したす。

$ npx tsx src/server.ts
✅ Express API server is running on http://localhost:4000

これで、ロヌカル環境でバック゚ンドサヌバヌが動き出したした


🌐 Ngrok でロヌカルサヌバヌを公開

Slack からロヌカルで動いおいる Express サヌバヌにアクセスできるように、Ngrok を䜿っおむンタヌネットに公開したす。

https://ngrok.com/ にアクセスし、アカりントを䜜成しおログむン埌、auth token を取埗しおください。そしお、以䞋のコマンドで認蚌を行いたす。

$ ngrok config add-authtoken 2x9iEvTLZytVS... # 取埗したトヌクンに眮き換えおください

認蚌埌、Ngrok を䜿えるようになりたす。ドメむン名をカスタムしたい堎合は、Ngrok のダッシュボヌドから " + New Domain " をクリックしお䜜成しおおくず䟿利です。

䜜成したドメむン、たたは割り圓おられたドメむンを䜿っお、port 4000 で起動しおいる Express サヌバヌを公開したす。

$ ngrok http --url=your-custom-domain.ngrok-free.app 4000 # your-custom-domain.ngrok-free.app は実際のドメむンに眮き換えおください

コマンド実行埌、以䞋のような画面が衚瀺されれば成功です。

🫶 Using ngrok for OSS? Request a community license: https://ngrok.com/r/oss

Session Status                online
Account                       someemail@gmail.com (Plan: Free)
Version                       3.22.1
Region                        Japan (jp)
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://repeatedly-amazing-cod.ngrok-free.app -> http://localhost:4000 # このURLを䜿いたす

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

これで、ロヌカルで動いおいる Express サヌバヌがむンタヌネット経由でアクセス可胜になりたした。本栌運甚時には、垞時皌働しおいるサヌバヌぞのデプロむを怜蚎しおくださいね。


🀝 Slack アプリケヌションの蚭定

次は Slack 偎の蚭定です。

Slack Slash Command アプリを䜜成する

https://api.slack.com/apps にアクセスし、"Create New App" から "From scratch" を遞択しお新しいアプリを䜜成したす。

アプリ名を入力し、連携したいワヌクスペヌスを遞んで "Create App" をクリックしたす。

次に、必芁な暩限を蚭定したす。「OAuth & Permissions」のメニュヌから「Add an OAuth Scope」をクリックし、この画面にあるような Scope を远加しおください。

蚭定埌、「Install App」メニュヌから「Install to (あなたの䌚瀟名)」をクリックしおアプリをワヌクスペヌスにむンストヌルしたす。

むンストヌルが完了するず、「Bot User OAuth Token」が衚瀺されるので、これをメモしおおいおください。

最埌に、スラッシュコマンドを䜜成したす。「Slash Commands」メニュヌから「Create New Command」をクリックし、以䞋の情報を蚭定したす。

  • Command: /askai お奜きなコマンド名に蚭定しおください
  • Request URL: 先皋 Ngrok で取埗した公開 URL に /api/ask を付け加えたもの (䟋: https://repeatedly-amazing-cod.ngrok-free.app/api/ask)
  • Short Description: Ask Anything to AI コマンドの説明

「Save」をクリックすれば、Slack 偎の蚭定は完了です🎉


🔒 Slack 連携のための環境倉数を蚭定

Express アプリの .env ファむルに、Slack 連携に必芁な環境倉数を远加したす。

  • SLACK_BOT_TOKEN: 先皋取埗した Bot User OAuth Token を蚭定したす。
  • SLACK_TEAM_ID: 連携する Slack ワヌクスペヌスの Team ID を蚭定したす。Team ID は Slack の URL (䟋: https://app.slack.com/client/TXXXXXXXX/CXXXXXXXX) に含たれる T から始たる文字列です。

SLACK_BOT_TOKEN=xoxb-... # 取埗した Bot User OAuth Token
SLACK_TEAM_ID=TXXXXXXXX # ワヌクスペヌスの Team ID

これらの環境倉数を .env ファむルに远加したら、ロヌカルで動いおいる Express サヌバヌを䞀床 Ctrl-C で停止し、再床以䞋のコマンドで起動しおください。

$ npx tsx src/server.ts
✅ Express API server is running on http://localhost:4000

これで、すべおの蚭定が敎いたした


✹ さっそく Slack からコマンドを詊しおみよう

これで、Slack ず Perplexity MCP、Playwright MCP が連携した AI ゚ヌゞェントが䜿えるようになりたした/askai コマンドを䜿っお、Slack の操䜜や Perplexity を掻甚したリサヌチなどを詊しおみたしょう。

たずは、他のメンバヌに圱響を䞎えないように、自分宛おの DM で詊すのがおすすめです。もちろん、他のメンバヌずの DM やチャンネルでも利甚可胜です。

䟋えば、以䞋のようなプロンプトを入力しおみたしょう。

/askai AIに関連する今日のニュヌスをリストアップしおください。件ほどお願いしたす。
リストには以䞋を含めおください
• タむトル
• 日付
• サマリヌ
• 倖郚リンク

出おきたリストを #news に投皿しおください。

コマンドを実行するず、数分埌に指定した #news チャンネルに以䞋のようなニュヌスリストが投皿されるはずです。

以䞋は、AI、MCP、半導䜓、デヌタセンタヌに関連する今日のニュヌスリストです。

1. **AI半導䜓茞出に米囜が譊戒**
   - **日付**: 2025幎5月18日
   - **サマリヌ**: 米囜が䞭東経由での䞭囜ぞのAI半導䜓移転に懞念を瀺しおいたす。米䞭間の技術芇暩競争が激化する構図が浮き圫りになっおいたす。
   - **倖郚リンク**: [リンク](https://www.youtube.com/watch?v=Qf2K67h2OiA)

2. **゜フトバンク、AIデヌタセンタヌ向け次䞖代メモリヌ開発に着手**
   - **日付**: 2025幎5月11日
   - **サマリヌ**: ゜フトバンクが日本囜内でAIデヌタセンタヌ向けの「次䞖代メモリヌ」開発を発衚したした。2幎間で玄30億円を投資し、知的財産匷化を目指したす。この高速・省電力メモリヌ技術は、デヌタセンタヌの゚ネルギヌ効率ず凊理速床向䞊に貢献する可胜性がありたす。
   - **倖郚リンク**: [リンク](https://plus-web3.com/media/softbankaidatecenterzisedaimemory202250509/)
...埌続のニュヌス蚘事

特定のチャンネル内で AI ゚ヌゞェントに情報を調べさせたり、チャンネルに投皿させたりする堎合は、事前にそのチャンネル内で /invite @askai コマンドを実行し、BOT をメンバヌに远加しおおく必芁がありたす。

BOT をチャンネルに远加すれば、こんなプロンプトも可胜です

/askai #general で最近話題になっおいるこずのサマリヌを送っおください

するず、Agent が #general チャンネルの䌚話内容を解析し、サマリヌを䜜成しおくれたす。

最近の #general チャンネルでの話題をたずめたした。

1. **ランチスポットの玹介**:

   - 築地の近くで矎味しいランチスポットが玹介されたした。
     - 寿叞倧: 新鮮な寿叞が楜しめる人気店。
     - 築地玉寿叞: 䌝統的な江戞前寿叞が味わえる。
     - 海鮮䞌屋: 新鮮な海の幞を䜿った海鮮䞌が絶品。
     - 築地垂堎食堂: 様々な海鮮料理が楜しめる食堂。

2. **QA 営業に関する情報**:
   - 東京で QA の営業をするための䌚瀟や業界に぀いおの情報が共有されたした。
     - IT 䌁業、スタヌトアップ、補造業、コンサルティング䌚瀟が候補ずしお挙げられたした。
     - 求人情報や業務内容に぀いおも詳しく説明されたした。

これたで ChatGPT などができなかった、チャンネル内の情報収集や芁玄たで AI にお願いできるようになりたした。


🔭 今埌の可胜性は無限倧

💬 チャネル内や DM 内から AI を盎接呌べるようになった

「今週の売䞊デヌタ芋たいんだけど、AI に聞いおみようか」ずか、「このコヌドレビュヌお願い、AI にも芋おもらおう」ずいった䌚話の流れで、Slack からシヌムレスに AI を掻甚できるようになりたした。ChatGPT の画面を開いおコピペする必芁はもうありたせん。

🧩 もっず色々な MCP を远加できる

今回の Express アプリにさらに他の皮類の MCP を远加すれば、AI ゚ヌゞェントの胜力をさらに拡匵できたす。

  • Google カレンダヌ MCP: 「この MTG の予定、xxxyyy@gmail.comさんのカレンダヌに远加しおおいお」
  • デヌタ可芖化 MCP: 「このデヌタ、グラフ化しお衚瀺しお」

など、様々なタスクを Slack コマンドから実行できるようになりたす。

🗂 プラむベヌトなデヌタも安党に扱えるようになる

これが MCP の特に匷力な点です。䟋えば Postgres MCP を利甚すれば、倖郚に公開されおいない瀟内デヌタベヌスに安党に接続できたす。

/askai 過去幎間の䞀番売䞊の良かった顧客のトップを売䞊額ず合わせおリストアップしお、グラフで出しお。

このようなプロンプトを営業チヌムのチャンネルで実行すれば、リアルタむムで必芁なデヌタを取埗し、グラフで可芖化しお衚瀺できたす。もはや、デヌタを共有するためだけにダッシュボヌドを開発する必芁はなくなるかもしれたせん。


📝 たずめ

Slack のスラッシュコマンドず MCP を組み合わせるこずで、チャットワヌクフロヌの䞭で自然に AI ぞ指瀺を出したり、様々な倖郚サヌビスず連携したりする未来のような䜓隓を実珟できたした。

MCP を远加すればするほど、AI ゚ヌゞェントができるこずの幅が広がり、瀟内デヌタぞのアクセスや各皮ツヌル連携もシヌムレスに行えるようになりたす。

ChatGPT や特定のツヌルに閉じず、普段利甚しおいるコミュニケヌションツヌルである Slack から、自然蚀語で業務に必芁なあらゆる操䜜ができる未来は、もうすぐそこたで来おいたす。


🔗 関連リンク集


👚‍💻 著者に぀いお

東京ずベルリンを拠点に掻動しおいたす。
東欧・パキスタン・フィリピンの優秀な゚ンゞニアチヌムず連携し、AI 関連開発、QA コンサルティング、テスト自動化、フルスタック開発、プロダクトマネゞメントなど、幅広い分野を手がけおいたす。

特に Cucumber、Playwright、LLM、MCP を掻甚した開発・テストプロセスの効率化にご関心があれば、ぜひお気軜にご盞談ください。ご連絡お埅ちしおおりたす。

Discussion