mcpField
M
microsoft-teams

microsoft-teams

github.com/acedatacloud生産性17170 回インストール今日更新
リポジトリ

microsoft-teams について

Microsoft Graph、curl、jq を使って Microsoft Teams のチャットを読み書きするスキルです。職場または学校アカウントの認証要件と、チャネルメッセージや個人アカウントの非対応についても説明します。

主な機能

  1. 011対1およびグループチャットの一覧表示
  2. 02最近のチャットメッセージの取得
  3. 03チャットメッセージの送信
  4. 04アカウントと権限エラーの説明

活用シーン

  1. 01最近の会話の確認
  2. 02Teams チャットへのメッセージ送信

MCP 対応

MCP サーバーではなくスキルです。curl と jq を使って Microsoft Graph を操作する方法を説明します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/acedatacloud/skills --skill microsoft-teams

インストール後、Claude Code で/microsoft-teamsを入力して読み込まれたか確認します。

詳細

curl + jq を使って Microsoft Graph 経由で Microsoft Teams のチャットを操作します。ユーザーの OAuth ベアラートークンは $MICROSOFT_TEAMS_TOKEN に格納されています。すべての呼び出しで Authorization: Bearer $MICROSOFT_TEAMS_TOKEN が必要です。ベース URL: https://graph.microsoft.com/v1.0

失敗時のレスポンスは {"error":{"code","message"}} です。message をそのまま表示してください。401 の場合は再インストールしてください。送信時の 403/Forbidden は、ユーザーが読み取り専用の権限(Chat.Read)を許可したことを示します。Chat.ReadWrite と ChatMessage.Send を指定して再接続してください。

/me/chats で 403 "No authorization information present on the request" が発生する場合、接続アカウントは 個人用 Microsoft アカウントです。 Teams チャットは職場または学校向け(組織向け)の機能です。Microsoft Graph は個人用 MSA アカウント(outlook.com/hotmail など)に対して /me/chats を公開せず、Chat.* スコープも付与しません。ユーザーには明確に次のように伝えてください:「Microsoft Teams のチャットには職場または学校のアカウントが必要です。接続されているアカウントは個人用 Microsoft アカウントです。Teams に再接続して、職場または学校のアカウントを選択してください。」再試行しないでください。そのアカウントでは成功しません。

G="https://graph.microsoft.com/v1.0"; AUTH="Authorization: Bearer $MICROSOFT_TEAMS_TOKEN"
# My chats (1:1 + group), most recent first; expand members for names
curl -sS -H "$AUTH" "$G/me/chats?\$top=20&\$expand=members" \
  | jq '.value[] | {id, chatType, topic, members: [.members[].displayName]}'

チャットメッセージの読み取りと送信

CHAT="CHAT_ID"
# Recent messages
curl -sS -H "$AUTH" "$G/chats/$CHAT/messages?\$top=20" \
  | jq '.value[] | {from: .from.user.displayName, created: .createdDateTime, text: .body.content}'

# Send a message (confirm content with the user first). contentType html|text.
curl -sS -X POST -H "$AUTH" -H "Content-Type: application/json" \
  -d '{"body":{"contentType":"html","content":"Hi from the assistant 👋"}}' \
  "$G/chats/$CHAT/messages" | jq '{id, created: .createdDateTime}'

注意点

  • チャットのみです。 Teams の チャネルメッセージの読み取りには ChannelMessage.Read.All が必要です。これはテナント管理者の同意が必要な Microsoft の「保護された API」であり、このコネクターでは意図的に要求していません。/teams/{id}/channels/.../messages を試さないでください。403 が返されます。
  • HTML メッセージの body.content にはマークアップが含まれます。要約する際はタグを削除してください。
  • OData の $top/$expand ではシェル内で $ をエスケープする必要があります。URL は引用符で囲んでください。

コメント