㊙️

話題のMCPでWindows環境でSlackと連携してみた

2024/11/29に公開

先日Anthropicから発表されて話題のModel Context Protocol(MCP)ですが、詳細…は参考にさせていただいた記事に譲るとして、それよりもタイトルの内容で詰まっている方が多いと思いますのでそちらを解説していきます。
https://www.anthropic.com/news/model-context-protocol

WindowsでMCPが動かない問題

結論から言いますと、Windowsではslackに限らず公式の言う通りにやっても絶対につながらないです
これは多くの人が指摘しており、間違いないと思います。
https://github.com/modelcontextprotocol/servers/issues/40

そんな中でも接続に成功する猛者たちが登場

上記のリンクや参考記事で紹介されているように、工夫を凝らして何とか接続させる猛者の方がちらほら。猛者の方たちが言うことには主にnpxコマンドに問題があるそうです。
そんなこんなでちらほら成功例があがってくるものの、QuickStartの内容がsqliteなため、sqliteとの通信かGitHubとの通信の成功例しか見かけません。
私はslackと通信したかったので困っておりました…ですがGitHubがいけるならslackもいけるはず!(※)と思い、先人の知恵を丁寧に読み込んだ結果、slackとの通信方法がわかりましたので嬉しすぎて記事にした次第です。
※ 公式でslackのMCPサーバーも用意されていると書かれてるので

slackとの通信方法

準備

  1. 以下で基本的な内容は確認してください
    https://github.com/modelcontextprotocol/servers/blob/main/src/slack/README.md
  2. Claudeのデスクトップアプリをインストールしておいてください
    https://claude.ai/download
  3. Node.jsをインストールしておいてください

手順

  1. まず先人の方たちに倣い手動でslackのMCPサーバをインストールします。
    管理者権限でPowerShellを開き以下を実行してください。
    npm install -g @modelcontextprotocol/server-slack

  2. デスクトップアプリで以下の画像のように操作し、Settingsを開くとDeveloperというタブがあり、そこでEdit Configを押すとそのファイルがある場所が表示されます

    • C:\Users\[ユーザー名]\AppData\Roaming\npm\node_modulesが表示されると思います
    • C:\Program Files\nodejs\node_modulesかもしれませんが問題ありません。重要なのは場所(パス)なので
  3. おそらくclaude_desktop_config.jsonという名前の空のjsonファイルがあると思うのでこれに書き込んでいきます。

  4. まず公式のまま書くと以下のようになります

{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-slack"
      ],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
        "SLACK_TEAM_ID": "T01234567"
      }
    }
  }
}
  1. これを先人の知恵を借りて以下のように修正します
{
  "mcpServers": {
    "slack": {
-      "command": "npx",
+      "command": "node"
      "args": [
-        "-y",
-        "@modelcontextprotocol/server-slack"
+        ""C:\\Users\\[ユーザー名]\\AppData\\Roaming\\npm\\node_modules\\@modelcontextprotocol\\server-slack\\dist\\index.js""
      ],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
        "SLACK_TEAM_ID": "T01234567"
      }
    }
  }
}
何をしているのか?

本来ならnpxでClaude側でよしなにしてくれているはずの部分をよしなにしてくれていないので、Nodeを絶対パスで直でnodeを叩きに行ってます。
また、絶対パスの区切りは必ずバックスラッシュ2つにしてください。

  1. 上記の内容を書き込んだらいよいよ大詰めです。まずはClaudeのアプリを落としてください。ウィンドウを閉じるだけでなく、タスクバーにいる*もquitしてください。
  2. 最後に検索バーでClaudeと検索し、デスクトップアプリが表示されたら右クリックして管理者として実行してください
  3. そうして立ち上がったアプリには以下のようにハンマーのマークが表示され、slackと通信できる状態になっているはずです!
  4. 最後にスラックについて適当に聞いてみます。
    (2024/12/03追記)このとき、連携させているBotを対象のチャンネルに招待しておく必要があります。簡単な方法だと対象チャンネル内で/invite @yourbotnameと打つことで招待できます。
  5. 最後に注意ですが、上記を実行する際に権限の許可を聞かれるので許可をしないと処理が進みません。Denyしてしまうとそこで終わってしまいます。また、slackのBotとして持っている権限以上のことはできませんので悪しからず…。

最後に

駆け足になってしまいましたがとにかく共有したくてスピード重視で書いてみました。権限の関係で思ったような挙動にならないときがあるので、そこは自分含め、皆さんで探っていきましょう。とりあえずたたき台になれば幸いです。

最後の最後に宣伝

絶賛お仕事募集中です。
データ分析できます、LLMそこそこ詳しいです、クラウド(AWS)ほどほどにできます、統計検定準1級持ってます、めっちゃ勉強してキャッチアップする自信あります、のでもしよろしければお声掛けください!

参考にさせていただいた記事

https://note.com/kyutaro15/n/n4b5ee8fd5d85?sub_rt=share_pw
https://hamaruki.com/create-sample-repo-claude-github-mcp/
https://qiita.com/Maki-HamarukiLab/items/298d81c1ba686abb3db4
https://six-loganberry-ba7.notion.site/24-11-29-Windows-Claude-MCP-14df7e7600e9800baad5c3611be9afa7

Discussion