🚀 🔔 Claude Code 钉钉 MCP サーバー
Claude Code を钉钉ロボット通知に統合した MCP サーバーの実装です。このサーバーは、Claude Code と钉钉の連携を容易にし、タスク完了通知などの機能を提供します。

✨ 主な機能
- ✅ 環境変数設定 - 環境変数を使用して自動的に初期化でき、手動設定が不要です。
- ✅ 钉钉グループロボット統合 - 完全な Webhook API をサポートしています。
- ✅ 複数のメッセージ形式 - テキスト、Markdown、リンクの3種類のメッセージタイプをサポートします。
- ✅ セキュリティ署名検証 - HMAC - SHA256 署名検証をサポートしています。
- ✅ 専用タスク通知 - タスク完了通知のフォーマットされたテンプレートが用意されています。
- ✅ TypeScript 開発 - 完全な型安全性とインテリジェントな提案機能を備えています。
- ✅ 即時使用可能 - Claude Code とシームレスに統合できます。
🚀 クイックスタート
ステップ1:インストール
npm install -g claude-code-dingtalk-mcp
Claude MCP マネージャーを使用してインストール(推奨)
claude mcp add dingtalk-mcp dingtalk-mcp-server
ステップ2:钉钉ロボット情報の取得
- 钉钉グループ → グループ設定 → スマートグループアシスタント → ロボットの追加 → カスタム
- セキュリティ設定で「加簽」を選択し、Webhook URL とシークレットを取得します。
ステップ3:環境変数の設定
export DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
export DINGTALK_SECRET="YOUR_SECRET"
ステップ4:Claude Code の設定
.mcp.json ファイルを作成します。
{"mcpServers": {"dingtalk-notifications": {"command": "dingtalk-mcp-server"}}}
ステップ5:テスト
Claude Code を再起動し、次のコマンドを実行します。
dingtalk_send_text {"content": "テスト成功!"}
✅ 完了!これで各会話終了時に dingtalk_notify_session_end を呼び出して通知を送信できます。
インストール方法の選択
方法1:npm を使用したインストール(推奨)
npm install -g claude-code-dingtalk-mcp
方法2:MCP マネージャーを使用したインストール
npx @modelcontextprotocol/cli add claude-code-dingtalk-mcp
方法3:npx を直接使用する
npx claude-code-dingtalk-mcp
📦 インストール
第1ステップ:Claude Code との接続設定
ステップ1:钉钉 MCP サーバーのインストール
以下のいずれかの方法でインストールします。
npm install -g claude-code-dingtalk-mcp
npm install claude-code-dingtalk-mcp
npx claude-code-dingtalk-mcp
ステップ2:Claude Code の設定
プロジェクトのルートディレクトリまたは Claude Code のグローバル設定ディレクトリで .mcp.json ファイルを作成または編集します。
グローバルインストールの場合:
{
"mcpServers": {
"dingtalk-notifications": {
"command": "dingtalk-mcp-server",
"description": "钉钉通知サーバー"
}
}
}
ローカルインストールの場合:
{
"mcpServers": {
"dingtalk-notifications": {
"command": "node",
"args": ["./node_modules/claude-code-dingtalk-mcp/dist/index.js"],
"description": "钉钉通知サーバー"
}
}
}
NPX を使用する場合:
{
"mcpServers": {
"dingtalk-notifications": {
"command": "npx",
"args": ["claude-code-dingtalk-mcp"],
"description": "钉钉通知サーバー"
}
}
}
ステップ3:钉钉ロボットの設定
3.1 钉钉グループロボットの作成
- 钉钉グループで「群设置」→「智能群助手」→「添加机器人」をクリックします。
- 「カスタム」ロボットを選択します。
- ロボットの名前(例:Claude Code 通知)を設定します。
- 重要:セキュリティ設定で「加簽」(推奨)を選択します。
- 生成された Webhook URL と署名キーをコピーします。
3.2 環境変数の設定
方法1:システム環境変数
export DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN"
export DINGTALK_SECRET="YOUR_SECRET_KEY"
export DINGTALK_KEYWORDS="Claude,タスク完了,通知"
方法2:プロジェクトの .env ファイル
DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN
DINGTALK_SECRET=YOUR_SECRET_KEY
DINGTALK_KEYWORDS=Claude,タスク完了,通知
ステップ4:Claude Code の再起動
claude code restart
ステップ5:設定の検証
Claude Code で次のコマンドを実行してテストします。
dingtalk_send_text {"content": "🎉 Claude Code 钉钉通知テスト成功!"}
dingtalk_notify_session_end {
"sessionType": "設定テスト",
"summary": "Claude Code 钉钉通知機能を正常に設定しました"
}
📍 設定ファイルの位置
Claude Code は以下の場所で .mcp.json 設定を検索します。
- 現在のプロジェクトディレクトリ:
./mcp.json または ./.mcp.json
- ユーザーのホームディレクトリ:
~/.claude/mcp.json
- グローバル設定:
~/.config/claude-code/mcp.json
🔍 よくある質問
Q: dingtalk_xxx コマンドが見つからないと表示されます。
A: .mcp.json 設定が正しいか確認し、Claude Code を再起動します。
Q: 钉钉通知の送信に失敗します。
A: 環境変数の設定を確認し、Webhook URL とキーが正しいことを確認します。
Q: MCP サーバーが実行されていることを確認するにはどうすればいいですか?
A: Claude Code で dingtalk_ と入力して Tab キーを押すと、利用可能なコマンドが表示されます。
Q: チームで設定を共有できますか?
A: はい、.mcp.json をコードリポジトリにコミットすることでチームで共有できます。
💻 使用例
基本的な使用法
自動初期化(推奨)
環境変数を設定している場合、MCP サーバーは自動的に初期化され、手動設定は不要です。
dingtalk_notify_task_complete {
"taskName": "プロジェクトビルド",
"status": "success",
"details": "ビルド成功、すべてのテストを通過",
"duration": "2分30秒"
}
手動設定方法
環境変数を設定していない場合は、Claude Code で手動で設定できます。
dingtalk_configure {
"webhook": "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN",
"secret": "YOUR_SECRET_KEY"
}
高度な使用法
1. dingtalk_configure
钉钉ロボットの設定を手動で行います。
パラメーター:
webhook (必須): 钉钉ロボットの Webhook URL
secret (オプション): 署名検証キー
keywords (オプション): セキュリティキーワードの配列
2. dingtalk_send_text
テキストメッセージを送信します。
パラメーター:
content (必須): テキスト内容
atAll (オプション): 全員に @ を付けるかどうか、デフォルトは false
3. dingtalk_send_markdown
Markdown 形式のメッセージを送信します。
パラメーター:
title (必須): メッセージのタイトル
text (必須): Markdown 形式のテキスト内容
atAll (オプション): 全員に @ を付けるかどうか、デフォルトは false
4. dingtalk_send_link
リンクメッセージを送信します。
パラメーター:
title (必須): リンクのタイトル
text (必須): リンクの説明テキスト
messageUrl (必須): ターゲット URL
picUrl (オプション): 画像 URL
6. dingtalk_notify_session_end
セッション終了通知を送信します(新機能)。
パラメーター:
sessionType (オプション): セッションのタイプ、例:"開発支援"、"コードレビュー"、"問題解決"、デフォルトは "開発支援"
duration (オプション): セッションの時間、例:"30分"、"1時間20分"
mainTasks (オプション): 主要なタスクのリスト
summary (オプション): セッションの要約、デフォルトは "セッションが完了しました"
filesCount (オプション): 変更/作成されたファイルの数、デフォルトは 0
toolsUsed (オプション): 使用されたツール/コマンドの数、デフォルトは 0
atAll (オプション): 全員に @ を付けるかどうか、デフォルトは false
🎯 自動セッション終了通知
重要機能:Claude Code の各会話が完了するたびに、自動的に钉钉グループに通知が送信されます!
方法1:直接呼び出し(推奨)
Claude Code の会話が終了する直前に、次のコマンドを直接呼び出します。
dingtalk_notify_session_end {
"sessionType": "開発支援",
"duration": "45分",
"mainTasks": ["钉钉MCPサーバーの実装", "環境変数サポートの追加", "使用ドキュメントの作成"],
"summary": "钉钉通知MCPサーバーを正常に開発してデプロイしました。複数のメッセージ形式と自動セッション通知をサポートしています。",
"filesCount": 8,
"toolsUsed": 15
}
方法2:環境変数によるトリガー
環境変数を設定した後、スクリプトを使用して自動的にトリガーします。
export CLAUDE_SESSION_TYPE="コードレビュー"
export CLAUDE_SESSION_DURATION="30分"
export CLAUDE_MAIN_TASKS="コード品質チェック,セキュリティホールスキャン,パフォーマンス最適化提案"
export CLAUDE_SESSION_SUMMARY="全面的なコードレビューを完了し、3つのセキュリティ問題を発見して修正しました。"
export CLAUDE_FILES_COUNT="5"
export CLAUDE_TOOLS_USED="12"
npm run notify-session-end
方法3:Claude Code Hooks(自動化)
フックをインストールすると、各セッション終了時に自動的にトリガーされます。
./claude-hook.sh install
🔧 钉钉ロボットの設定
1. 钉钉グループロボットの作成
- 钉钉グループで、グループ設定 → スマートグループアシスタント → ロボットの追加 をクリックします。
- 「カスタム」ロボットを選択します。
- ロボットの名前とアイコンを設定します。
- 重要:セキュリティ設定を構成します(「加簽」方式の使用を推奨)。
- Webhook URL と署名キーを取得します。
2. セキュリティ設定の説明
- キーワード検証:メッセージに設定されたキーワードが含まれている必要があります。
- 加簽検証:HMAC - SHA256 署名検証を使用します(推奨)。
- IP ホワイトリスト:リクエストの送信元 IP を制限します。
3. 設定情報の取得
https://oapi.dingtalk.com/robot/send?access_token=f248fa5a2e04cf0c13abb23831c4a6190f3837fa7ddf3338f759db5a67079469
SECad12bf23f1e2e3c3d7dae0cd58e41c2b4daa9d1066cdf7ce452c4732ecf0c30e
🚨 注意事項
- メッセージ頻度制限:各ロボットは1分間に最大20件のメッセージを送信できます。
- メッセージ形式:Markdown 形式が正しいことを確認し、特殊文字はエスケープする必要があります。
- セキュリティ設定:本番環境では署名検証を有効にすることを推奨します。
- 環境変数の優先順位:環境変数の設定は手動設定よりも優先されます。
- エラー処理:ツールは成功/失敗のステータスを返します。返り値を確認してください。
🔍 トラブルシューティング
よくある問題
Q: "DingTalk client not configured" と表示されます。
A: 環境変数の設定を確認するか、dingtalk_configure を使用して手動で設定してください。
Q: メッセージの送信に失敗します。
A: 以下を確認してください。
- Webhook URL が正しいか
- 署名キーが一致するか
- セキュリティキーワード検証がトリガーされていないか
- 頻度制限(1分間に20件)を超えていないか
Q: npm インストールに失敗します。
A: Node.js のバージョンが ≥ 18.0.0 であることを確認してください。
デバッグモード
DEBUG=dingtalk-mcp-server npx claude-code-dingtalk-mcp
🤝 開発と貢献
ローカル開発
git clone https://github.com/claude-code-community/dingtalk-mcp-server.git
cd dingtalk-mcp-server
npm install
npm run dev
npm run build
npm test
プロジェクト構造
claude-code-dingtalk-mcp/
├── src/
│ ├── dingtalk.ts # 钉钉クライアントのラッパー
│ ├── index.ts # MCP サーバーのメインプログラム
│ └── test.ts # テストケース
├── dist/ # コンパイル出力
├── .env.example # 環境変数の例
├── LICENSE # MIT ライセンス
├── README.md # 説明ドキュメント
└── package.json # プロジェクト設定
📄 ライセンス
MIT ライセンス - 詳細は LICENSE ファイルを参照してください。
🔗 関連リンク
Claude Code のタスク完了通知をより便利に! 🚀