「今日のChatwork、何か来てる?」
朝、コーヒーを淹れながらターミナルに打つ。Claude Codeが17ルーム分のメッセージを取ってきて、要約する。返信が必要なものには「これ、返した方がいいですよ」と言ってくる。
ブラウザでChatworkを開いていない。通知も見ていない。でもメッセージは全部読めている。
Chatwork MCPを繋いだ日から、こうなった。
Chatwork MCPとは
ChatworkのAPIをMCP(Model Context Protocol)経由でClaude Codeに接続するサーバーだ。npmに公式パッケージとして公開されている。
npm info @chatwork/mcp-server
これを入れると、Claude Codeの中からChatworkの全APIを叩ける。メッセージの取得・投稿、タスク管理、ルーム操作、メンバー管理、ファイル一覧——APIで出来ることは全部できる。
セットアップ
1. APIトークンを取得
Chatworkの管理画面からAPIトークンを発行する。
「サービス連携 → API → APIトークン」の順。表示されたトークンを控える。
2. Claude Codeに追加
ターミナルで:
claude mcp add chatwork -- npx -y @chatwork/mcp-server
APIトークンは環境変数で渡す。.claude/settings.local.json(gitignore推奨)に書くか、シェルの環境変数に設定する:
export CHATWORK_API_TOKEN="your_token_here"
.claude/settings.local.jsonで環境変数を指定する場合:
{
"env": {
"CHATWORK_API_TOKEN": "your_token_here"
}
}
3. 接続確認
Claude Codeを起動して「Chatworkのルーム一覧を見せて」と言えば動く。
> Chatworkのルーム一覧を見せて
list_roomsを実行中...
17件のルームが見つかりました:
1. 社内連絡(room_id: 123456)
2. 開発チーム(room_id: 234567)
...
これで完了。所要時間は3分くらいだ。
使えるツール一覧
接続すると使えるようになるMCPツールは20個以上ある。よく使うものだけ抜粋する:
| ツール | 用途 |
|---|---|
list_rooms |
ルーム一覧取得 |
get_room |
ルーム詳細 |
list_room_messages |
メッセージ取得 |
post_room_message |
メッセージ投稿 |
list_room_tasks |
タスク一覧 |
create_room_task |
タスク作成 |
list_room_members |
メンバー一覧 |
list_room_files |
ファイル一覧 |
get_room_file |
ファイル詳細 |
get_me |
自分のアカウント情報 |
get_my_status |
未読数など |
全部で34 APIある。Chatwork APIのv2がカバーしている範囲は全部使える。
実用パターン
パターン① 朝の未読チェック
一番よく使う。
> Chatworkの未読メッセージを確認して
Claude Codeはget_my_statusで未読数を確認し、list_roomsでルーム一覧を取得、未読のあるルームのlist_room_messagesを順に叩いてくれる。
17ルームあっても10秒くらい。ブラウザで1ルームずつ開いていくより圧倒的に速い。
パターン② メッセージ投稿
> 開発チームのルームに「本日の進捗:〇〇が完了しました」と投稿して
ルーム名で指定すれば、Claude Codeがlist_roomsでroom_idを特定してpost_room_messageで投稿する。IDを覚える必要はない。
Chatworkの装飾記法([info]タグなど)もそのまま使える:
> 社内連絡に以下をinfoタグ付きで投稿して:
> 明日の会議は10時からに変更になりました
パターン③ タスク管理
> 開発チームのタスク一覧を見せて。期限が今週のものだけ
list_room_tasksで取得して、期限でフィルタしてくれる。
新しいタスクの作成もできる:
> 田中さんに「見積書の確認」というタスクを期限3/15で作って
create_room_taskでアカウントID指定が必要だが、Claude Codeはlist_room_membersでメンバー一覧を取得して名前からIDを解決してくれる。
パターン④ 複数ルーム横断検索
これがブラウザでは面倒なやつだ。
> 過去1週間で「請求書」というキーワードが含まれるメッセージを全ルームから探して
Chatwork APIには全ルーム横断の検索APIがない。だからClaude Codeがlist_rooms→各ルームのlist_room_messagesを順に回して、ローカルでフィルタする。力技だが、それでも手作業より速い。
2アカウント同時接続
ここが個人的に一番気に入っている設定だ。
仕事で複数のChatworkアカウントを使っている人は少なくない。メインの会社アカウントと、事務局・副業・外部プロジェクト用のアカウント。ブラウザだとログイン切り替えが面倒で、毎回「あ、アカウント違う」となる。
Claude CodeのMCPは、同じサーバーを名前を変えて複数登録できる。
# メインアカウント
claude mcp add chatwork -- npx -y @chatwork/mcp-server
# サブアカウント(別名で追加)
claude mcp add chatwork-sub -- npx -y @chatwork/mcp-server
それぞれ別の環境変数でトークンを渡す:
{
"mcpServers": {
"chatwork": {
"command": "npx",
"args": ["-y", "@chatwork/mcp-server"],
"env": {
"CHATWORK_API_TOKEN": "main_account_token"
}
},
"chatwork-sub": {
"command": "npx",
"args": ["-y", "@chatwork/mcp-server"],
"env": {
"CHATWORK_API_TOKEN": "sub_account_token"
}
}
}
}
使い分けはこうなる:
> メインのChatworkで社内連絡を確認して
> サブのChatworkで事務局ルームにメッセージを送って
Claude Codeはmcp__chatwork__list_roomsとmcp__chatwork-sub__list_roomsを区別してくれる。MCP名がそのまま接頭辞になるので混線しない。
2つのアカウントの未読を一度に確認できるのは、ブラウザでは絶対にできない体験だ。
ハマりどころ
APIトークンの権限
Chatwork APIトークンは、そのアカウントが参加しているルームの情報しか取れない。「あのルームのメッセージが見えない」と思ったら、そもそもそのアカウントがルームに参加していないケースが多い。
メッセージ取得の100件制限
list_room_messagesは1回のリクエストで最新100件しか返さない。それ以上遡るにはforce=1パラメータが必要だが、5分間に1回しか実行できない制限がある。大量のメッセージを一気に取得したいときは、GASやn8nでバッチ処理した方がいい。
投稿ミスに注意
post_room_messageは実行した瞬間に送信される。確認ダイアログは出ない。Claude Codeに「このルームに投稿して」と頼むとき、ルーム名を間違えると別のルームに投稿されることがある。
対策は2つ:
- 「投稿する前にルーム名とメッセージ内容を確認して」と毎回言う
- 前回のHooks記事で紹介した
PreToolUseフックで、post_room_message実行前に確認ステップを挟む
正直、2の方が確実だ。
@chatwork/mcp-serverのバージョン
npmの@chatwork/mcp-serverはChatwork(kubell社)が公式でメンテナンスしている。npx -yで常に最新版が取得されるので、バージョン管理の心配は少ない。ただしAPIの仕様変更には要注意。
Chatwork MCPでできないこと
念のために書いておく。
-
ファイルのアップロード:
multipart/form-dataが必要で、現状のMCPサーバーではサポートされていない。ファイルを送りたいときはブラウザかGASを使う - Webhook受信: MCPは「Claude Code側から叩く」方向。Chatworkからの通知をリアルタイムで受け取るにはn8nやGASのWebhookが必要
- 組織管理API: Chatwork Enterprise限定のAPIはMCPでも使えるが、ビジネスプラン以下では利用不可
所感
Chatwork MCPを入れてから、Chatworkのブラウザタブを開く頻度が激減した。
「メッセージを読む」「返事を書く」「タスクを作る」——日常的な操作の8割はターミナルで済む。ブラウザに切り替える必要があるのは、ファイルをアップロードするときと、リアクション(いいね)を押すときくらいだ。
Slack全盛の時代に、Chatwork APIの記事を書いている人間は少ない。MCPで繋いでいる人間はもっと少ない。だからこそ、ここに書いておく。
3分で繋がる。繋がったら、もうブラウザには戻れない。
Chatworkシリーズ
- #1 なぜ2026年にまだChatworkを使い倒しているのか
- #2 chatwork-client-gas、ぶっちゃけいるの?
- #3 ルームの参加者データだけで、組織の人間関係マップを作った
- #4 「Chatworkに確定連絡が来たら請求書を送る」をGASで自動化する
- #5 Chatwork MCPを繋いだら、17ルームの未読が10秒で片付いた(この記事)
- #6 MCP vs GAS — Chatwork自動化の「正解」はどっちか
- #7 コンタクト承認をn8nで自動化しようとしたら、3つの罠にハマった
- #8 ChatworkにAIチームを住まわせたら、勝手に会話が始まった
- #9 Chatwork 8ルームの全メッセージからFAQ429件を自動抽出した
- #10 Webhook署名検証を入れたら全メッセージが消えた
- #11 過去メッセージを全件取得しようとしたら、APIの「100件の壁」にハマった
- #12 Chatwork APIの「既読」は自分で制御できる
- #13 Chatwork APIのファイル機能、使ったことある?
- #14 n8nで全ルーム巡回
- #15 タスク機能をAPIで使い倒す
- #16 MCPを2アカウント同時接続したら、仕事用と事務局用が1画面で回った
- #17 【世界初かもしれない】ChatworkでClaude Code Channelsを実装してみた
- #18 Chatwork × Dify × GASで問い合わせ回答を自動提案する
- #19 RelationMapを夜間バッチで毎日自動更新する
- #20 17記事書いて見えた、Chatwork APIエコシステムに足りないもの
- #21 Googleフォームの回答をChatworkに自動投稿するGAS
- #22 Chatworkの会話を毎日AIが要約してくれる仕組みをn8nで作った話
- #23 chatwork-cliを入れたら、シェルからChatworkが操作できて世界が変わった
- #24 ChatworkのWebhookをn8nで受けるなら、HMAC署名検証は必ずやれ
- #25 Chatwork × GAS × Claude Codeで会員制講座の運用を自動化した