# MCP Slack Setup

> Slack MCP サーバの追加・認証（Claude Code 用）

- Skill: `sayonari/mcp-slack-setup` (Agent Skill)
- Install (CLI): `npx skillmds@latest add sayonari/mcp-slack-setup`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sayonari/mcp-slack-setup/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: sayonari (https://skillmd.com/u/sayonari)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/sayonari/mcp-slack-setup

---


# Slack MCP サーバの追加・認証（Claude Code 用）

## 結論：OAuth の client_id と callback_port が必須

Slack の公式 MCP サーバは **動的クライアント登録に対応していない**．そのため URL だけで登録すると，`/mcp` → Authenticate が次のエラーで必ず失敗する：

```
SDK auth failed: Error from the MCP SDK for https://mcp.slack.com/mcp?ws=...
```

`~/.claude.json` の設定が `{"type":"http","url":"..."}` だけで，`oauth` キーがない状態が原因．エラー文からは原因がわからないので，まずここを疑う．

## 手順

### 1. 既に動いている Slack MCP の設定を確認する

```bash
python3 - <<'EOF'
import json,os
d=json.load(open(os.path.expanduser('~/.claude.json')))
for n,c in d.get('mcpServers',{}).items():
    if 'slack' in n: print(n, c.get('url'), c.get('oauth'))
EOF
```

`oauth: {"clientId": "...", "callbackPort": ...}` を持つサーバがあれば，**その clientId と callbackPort を流用する**．同じ Slack アプリなので，ワークスペースが違っても同じ値でよい．

動いているサーバが1つもない場合は，claude.ai 側の Slack コネクタや Slack の MCP 公式ドキュメントで Claude Code 用の client_id を確認する．

### 2. 登録し直す（`~/.claude.json` は手で書き換えずに CLI で）

```bash
cp ~/.claude.json <スクラッチパッド>/claude.json.bak      # 念のためのバックアップ
claude mcp remove <名前> -s user
claude mcp add --transport http \
  --client-id <clientId> --callback-port <callbackPort> \
  -s user <名前> "https://mcp.slack.com/mcp?ws=<ワークスペースのサブドメイン>"
claude mcp get <名前>     # 「OAuth: client_id configured, callback_port ...」と出れば成功
```

- `ws=` にはワークスペース URL のサブドメイン（`xxx.slack.com` の `xxx`）を書く．Slack が途中で切り詰めた名前になっている場合もあるので，ワークスペース URL をそのまま使う
- `claude mcp add` の出力では URL のクエリ部分が省かれて表示されるが，`claude mcp get` で `?ws=` が残っていれば問題ない

### 3. ユーザーに認証してもらう

- `/mcp` → 該当サーバ → **Authenticate**
- ブラウザの Slack 認可画面で，**右上のワークスペースが目的のものか**を確認してから許可するよう伝える（複数ワークスペースにログインしていると別のワークスペースで許可してしまいやすい）
- 起動中のセッションが古い設定のまま失敗する場合は，Claude Code を再起動してからやり直す

## Claude がやってはいけないこと

- `mcp__<名前>__authenticate` ツールが同じ SDK エラーを返したら，**何度も呼び直さない**．それは設定不足のサインなので，上の手順 1〜2 に進む
- `~/.claude.json` を Python や sed で直接書き換えない（Claude Code 本体が上書きする可能性がある）．必ず `claude mcp remove/add` を使う

