slack-read-mcp

slack-read-mcp

A read-only MCP server for Slack that reads messages from channels the bot is invited to, without storing data. It provides tools to fetch channel history, thread replies, and resolve user IDs, with access controlled solely by channel invitations.

Category
访问服务器

README

slack-read-mcp

Slack を読むだけの MCP サーバー。

Bot が招待されたチャンネルのメッセージを読みます。招待されていないチャンネルは、 チャンネル ID を正確に指定しても読めません。書き込みは一切できません。

サーバーもデータベースも使いません。利用者の PC 上で動き、Slack Web API を直接呼びます。 このサーバー自体は状態を持たず、メッセージを保存しません(取得のたびに Slack へ 問い合わせます)。

読んだ内容からタスク台帳や要約を手元に作るのは利用側の想定された使い方ですが、 全文アーカイブは作らない・転記物は元と同じ機密度で扱う、という線引きがあります。 詳細は GUIDE.md を参照してください。

設計

権限の実体は「Bot がどのチャンネルに招待されているか」だけです。

  • インストールしただけでは一件も読めない
  • 招待を外すと、トークンを変更せずに即座に読めなくなる
  • パブリック/プライベートの別は関係ない。効いているのは招待の有無だけ
  • 書き込みは Slack が API レベルで拒否する(スコープを付与していないため)

チャンネル一覧を取得する権限(channels:read)も付与しません。したがって、 Bot は自分が招待されていないチャンネルの存在を知ることができません。 読み取り対象は設定ファイルで指定します。

設定ファイルはアクセス制御ではありません。 そこに何を書いても、 招待されていないチャンネルは読めません。編集しても危険はありません。

セットアップ

導入作業を AI に任せる場合は、INSTALL.md を読ませてください。 環境(Node のバージョン、Slack アプリの有無)を確認したうえで、利用者にしかできない操作だけを 依頼するよう書かれています。以下は人間が自分で作業する場合の手順です。

1. Slack アプリを作る

api.slack.com/apps → Create New App → From a manifest を選び、 slack-app-manifest.json の内容を貼り付けます。

付与されるスコープは3つだけです。

channels:history   参加しているパブリックチャンネルのメッセージ
groups:history     参加しているプライベートチャンネルのメッセージ
users:read         ユーザー ID から表示名への解決

作成後、ワークスペースへインストールして Bot User OAuth Token(xoxb- で始まる)を取得します。

2. Bot をチャンネルへ招待する

読みたいチャンネルで次を実行します。招待していないチャンネルは読めません。

/invite @slack-read-mcp

3. トークンと読み取り対象を配置する

設定はホームディレクトリの ~/.config/slack-read-mcp/ に置きます。MCP の設定ファイルや 環境変数にトークンを書く必要はありません。

~/.config/slack-read-mcp/
├── token           Bot User OAuth Token(xoxb-…)を1行だけ
└── channels.json   読み取り対象のチャンネル一覧

トークンは、クリップボード経由にすると画面やコマンド履歴に出さずに配置できます。 順序に注意してください: ①下のコマンドを先にターミナルへ貼る(実行はまだ)→ ②Slack のページでトークンを Copy → ③ターミナルに戻って Enter。 トークンをコピーした後にコマンドをコピーすると、クリップボードが上書きされて消えます。

# Windows
New-Item -ItemType Directory -Force "$env:USERPROFILE\.config\slack-read-mcp" | Out-Null
Set-Content "$env:USERPROFILE\.config\slack-read-mcp\token" (Get-Clipboard).Trim() -NoNewline
Set-Clipboard "done"   # 本物のトークンをクリップボードに残さない
# macOS / Linux
mkdir -p ~/.config/slack-read-mcp && pbpaste > ~/.config/slack-read-mcp/token && echo done | pbcopy

AI に導入を任せる場合は、この配置は AI がクリップボードから直接行います (INSTALL.md 参照。利用者はコピーだけ)。

channels.json は channels.example.json を参考に作ります。チャンネル ID は、 Slack でチャンネル名を右クリック →「リンクをコピー」で取得できます。

[
  { "id": "C0123456789", "name": "team-general" }
]

4. MCP クライアントに登録する

Claude Code の場合:

claude mcp add slack-read --scope local -- npx -y github:zio3/slack-read-mcp

推奨はローカルスコープ(この Slack に関わる作業フォルダにだけ登録)です。ユーザー スコープは全プロジェクトに常駐するため、複数の顧客・業務を扱う PC では情報の混線経路に なります。プロジェクトスコープはリポジトリ内に .mcp.json を作って共有してしまうため 不適切です。

設定の探索順

設定 優先1(環境変数) 優先2(ファイル)
トークン SLACK_BOT_TOKEN SLACK_TOKEN_FILE のパス → ~/.config/slack-read-mcp/token
読み取り対象 SLACK_CHANNELS_FILE のパス ~/.config/slack-read-mcp/channels.json

通常はファイルだけで動きます。環境変数は CI などで上書きしたい場合に使ってください。 なお環境変数を使う場合、変更は起動中のプロセスへ伝播しないため、ターミナルごと 再起動が必要になります。ファイル方式ならこの問題はありません(MCP クライアントの 再起動・再接続だけで反映されます)。

ツール

ツール 内容
list_channels 設定ファイルに書かれた対象の一覧。Slack へは問い合わせない
get_channel_history チャンネルのメッセージ取得。oldest で差分のみ取得可
get_thread_replies スレッド返信の取得
resolve_user ユーザー ID を表示名・実名に解決

使う AI に読ませるもの

GUIDE.md を最初に読み込ませてください。

Slack のデータ構造には、知らないと取りこぼしに気づけない箇所があります。 特に get_channel_history はスレッド返信を返しません。これを知らずに使うと、 返信のやり取りを丸ごと見落とし、しかも見落としたことに気づけません。

開発

npm install
npm run build
pwsh ./test-mcp.ps1 -Tool list_channels

test-mcp.ps1 は MCP サーバーを素の JSON-RPC で叩く確認用スクリプトです。

ビルドを挟まず TypeScript のまま実行することもできます(Node 22.6 以降)。

npm run start:ts        # Node 22.6〜23.5(--experimental-strip-types 付き)
node src/index.ts       # Node 23.6 以降(フラグ不要)

配布時にビルド方式を既定にしているのは、実行環境の Node バージョンに依存させないためです。 型ストリッピングはまだ experimental で、stderr に警告が出ます。

ライセンス

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选