mcp-teams について
mcp-teamsは、チーム、チャネル、チャット、メッセージを確認するAgent向けのMicrosoft Teams MCPサーバーです。初期状態は読み取り専用で、追加のモードと安全策を有効にした場合のみ投稿や削除が可能です。
主な機能
- 01チーム、チャネル、メンバーの一覧
- 02チャネルメッセージとスレッドの閲覧
- 03チャットとチャットメッセージの閲覧
- 04安全策付きのチャネル・チャット送信
- 05管理者モードでの自分のメッセージの論理削除
活用シーン
- 01チャネルの最近の会話や返信の確認
- 02メンバーと利用可能なチャネルの確認
- 03チャットやチャネルへの連絡の送信
- 04管理者向け制限下での自分の投稿の削除
MCP 対応
Microsoft Graphを介して、Microsoft Teamsのデータとメッセージ操作をMCPクライアントに公開します。書き込みツールは設定モードと承認などの安全策で制御されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @dockndevai/mcp-teamsTEAMS_CLIENT_IDEntra (Azure AD) app (client) id. For browser sign-in, register a public client with redirect URI http://localhost.TEAMS_TENANT_IDDirectory tenant: a tenant id, or common | organizations | consumers (default common).TEAMS_CLIENT_SECRETシークレットApp secret for app-only (client-credentials) auth. Omit to use interactive browser sign-in.TEAMS_TOKENシークレットA pre-obtained Microsoft Graph bearer token (alternative to browser or app-only auth).TEAMS_MODEAccess mode: read-only | read-write | admin. Starts read-only; writes need read-write.TEAMS_ALLOW_SENDSet true to permit posting messages (channel/chat send & reply). Off by default.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-teams
デフォルトで安全な、Microsoft Graph を介して Microsoft Teams を操作する Model Context Protocol サーバーです。エージェントから Teams を読み取り、操作できます。参加しているチーム、チャネル、メンバーの一覧表示、チャネルのメッセージやスレッド形式の返信の読み取り、1 対 1/グループチャットとそのメッセージの読み取りが可能です。また、より高いモードでは、チャネルへの投稿、スレッドへの返信、チャットメッセージの送信、メッセージの論理削除ができます。
**ブラウザーサインイン:**初回実行時に Microsoft のサインインページがブラウザーで開き、トークンがキャッシュされてサイレントに更新されます。サーバーがパスワードを確認することはありません。
dockndevai MCP server suite の一部です。すべてのサーバーで共通のガバナンスモデルを採用しています。
エージェントに提供する機能
サーバーは読み取り専用で起動します(デフォルトで安全を参照)。より高い機能を持つツールは、モードを引き上げた場合にのみ登録されます。
| ツール | 用途 | 必要なモード |
|---|---|---|
whoami | 使用中のアカウントを確認する | 読み取り専用 |
list_teams | ユーザーが参加しているチームを一覧表示する | 読み取り専用 |
list_channels | チーム内のチャネルを一覧表示する | 読み取り専用 |
list_team_members | チームのメンバーを一覧表示する | 読み取り専用 |
list_channel_messages | チャネルの最近のメッセージを一覧表示する | 読み取り専用 |
get_channel_message | チャネルのメッセージと本文を取得する | 読み取り専用 |
list_message_replies | チャネルメッセージのスレッドを一覧表示する | 読み取り専用 |
list_chats | ユーザーの 1 対 1/グループチャットを一覧表示する | 読み取り専用 |
list_chat_messages | チャット内のメッセージを一覧表示する | 読み取り専用 |
send_channel_message | チャネルに投稿する | 読み書き + TEAMS_ALLOW_SEND |
reply_channel_message | チャネルのスレッドに返信する | 読み書き + TEAMS_ALLOW_SEND |
send_chat_message | チャットメッセージを送信する | 読み書き + TEAMS_ALLOW_SEND |
delete_channel_message | 自分のメッセージを論理削除する | 管理者 + TEAMS_ALLOW_DELETE |
インストール
npx -y @dockndevai/mcp-teams
Entra(Azure AD)アプリ登録が必要です。デフォルトのブラウザーサインインを使用する場合は、パブリッククライアントを登録し、リダイレクト URI に http://localhost(プラットフォーム:モバイル アプリケーションとデスクトップ アプリケーション)を追加します。その後、その アプリケーション(クライアント)ID を TEAMS_CLIENT_ID として使用してください。委任されたアクセス許可 Team.ReadBasic.All、Channel.ReadBasic.All、ChannelMessage.Read.All(投稿する場合は ChannelMessage.Send/Chat.ReadWrite も)を付与します。対話型の使用にクライアントシークレットは不要です。
設定
{
"mcpServers": {
"teams": {
"command": "npx",
"args": ["-y", "@dockndevai/mcp-teams"],
"env": {
"TEAMS_CLIENT_ID": "00000000-0000-0000-0000-000000000000",
"TEAMS_TENANT_ID": "common",
"TEAMS_MODE": "read-only"
}
}
}
}
初回の使用時に、サーバーはブラウザーを開いてサインインを求め、トークンを ~/.mcp-teams/token.json(0600)にキャッシュします。以降の実行ではサイレントに更新されます。
Claude Code/Cursor/Codex/VS Code/Windsurf の設定例については docs/CLIENTS.md を、サポートされているすべての変数については .env.example を参照してください。
認証
認証モードは自動的に選択されます(TEAMS_AUTH で上書きできます)。
- interactive(デフォルト) —
TEAMS_CLIENT_IDのみが設定されている場合に使用します。ループバックリダイレクトを使用した認可コード + PKCE 方式です。ブラウザーが開き、初回に一度承認すると、アクセストークンと更新トークンがディスクにキャッシュされます。Teams のメッセージング API の多くは委任されたアクセス許可のみをサポートするため、通常はこちらを使用します。サーバーがパスワードを扱うことはありません。 - client-credentials(アプリ専用) —
TEAMS_CLIENT_SECRETが設定されている場合に使用します。サーバーがアプリトークンを取得します。Microsoft による保護対象 API の承認がない場合、Teams のメッセージ API の一部はアプリ専用トークンでは利用できない点に注意してください。 - token —
TEAMS_TOKENに事前に取得した Graph ベアラートークンを設定します。トークンの有効期間は自身で管理します。
デフォルトで安全
アクセスモデルは、src/security.ts で適用されます。Graph トークン独自のスコープ/ロールに加え、多層防御を実現しています。
TEAMS_MODE—read-only(デフォルト)→read-write→admin。モードで許可された機能に限り、ツールが登録されます。読み取り専用では9つの読み取りツールが利用でき、投稿にはread-writeが、削除にはadminが必要です。TEAMS_ALLOW_SEND— メッセージの投稿は他のユーザーにも表示され、投稿を非公開で取り消すことはできません。そのため、read-writeに加えてこのフラグも必要です。TEAMS_ALLOW_DELETE— 削除には、adminモードに加えてこのフラグが必要です。削除は復元可能な論理削除で、自分のメッセージのみが対象です。TEAMS_TEAM_ALLOWLIST/TEAMS_PROTECTED_TEAMS— 投稿/モデレーションの対象となるチームを制限したり、読み取りは可能でも投稿は禁止するチームを指定したりできます。- 対話型の確認 — クライアントが MCP エリシテーションに対応している場合、投稿と削除は一時停止し、実行前に人間が正確な対象を承認するよう求めます。エリシテーションに対応していないクライアントでは、
TEAMS_ALLOW_SEND/TEAMS_ALLOW_DELETEによる制限が適用されます。 TEAMS_DRY_RUN— 書き込みを実行せずに検証してログに記録します。TEAMS_AUDIT_LOG— 制限対象の操作ごとに、stderr に JSON 形式の監査ログを1行出力します(デフォルトで有効)。
SECURITY.md を参照してください。
開発
npm install
npm run build
# introspect the tool list without signing in (uses a fake token, no network):
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | TEAMS_TOKEN=x node dist/index.js
npm test
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。