mcpField
M
mcp-teams

mcp-teams

ローカル
github.com/dockndevaiコミュニケーション03 日前に更新

mcp-teams について

mcp-teamsは、チーム、チャネル、チャット、メッセージを確認するAgent向けのMicrosoft Teams MCPサーバーです。初期状態は読み取り専用で、追加のモードと安全策を有効にした場合のみ投稿や削除が可能です。

主な機能

  1. 01チーム、チャネル、メンバーの一覧
  2. 02チャネルメッセージとスレッドの閲覧
  3. 03チャットとチャットメッセージの閲覧
  4. 04安全策付きのチャネル・チャット送信
  5. 05管理者モードでの自分のメッセージの論理削除

活用シーン

  1. 01チャネルの最近の会話や返信の確認
  2. 02メンバーと利用可能なチャネルの確認
  3. 03チャットやチャネルへの連絡の送信
  4. 04管理者向け制限下での自分の投稿の削除

MCP 対応

Microsoft Graphを介して、Microsoft Teamsのデータとメッセージ操作をMCPクライアントに公開します。書き込みツールは設定モードと承認などの安全策で制御されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"dockndevai-mcp-teams": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-teams"
],
"env": {
"TEAMS_CLIENT_ID": "<TEAMS_CLIENT_ID>",
"TEAMS_TENANT_ID": "<TEAMS_TENANT_ID>",
"TEAMS_CLIENT_SECRET": "<TEAMS_CLIENT_SECRET>",
"TEAMS_TOKEN": "<TEAMS_TOKEN>",
"TEAMS_MODE": "<TEAMS_MODE>",
"TEAMS_ALLOW_SEND": "<TEAMS_ALLOW_SEND>"
}
}
}
}
起動コマンドnpx -y @dockndevai/mcp-teams
設定が必要な環境変数
TEAMS_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@dockndevai/mcp-teams0.2.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mcp-teams

npm CI licence

デフォルトで安全な、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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。