Microsoft Teams について
Microsoft Teamsは、ClaudeクライアントとMicrosoft Teamsを接続するオープンソースのMCPサーバーです。Microsoft 365ユーザー向けに、メッセージの閲覧・送信、チャネルやチャットへのアクセス、検索機能を提供します。
主な機能
- 01チームとチャネルの一覧表示
- 02チャネルとチャットのメッセージ閲覧
- 03メッセージとスレッド返信の送信
- 04Teams全体のメッセージ検索
- 05Microsoft 365プロフィールの表示
- 06STDIOとHTTP/SSEトランスポート対応
活用シーン
- 01Claudeで最近のチャネルの議論を確認
- 02Teams全体からメッセージを検索
- 03チャネル更新やチャットを送信
- 04組織のTeamsにClaudeを接続
MCP 対応
チャネルやチャットのメッセージ操作、検索、プロフィール取得など、11個のTeamsツールをMCPクライアントに提供します。STDIOとHTTP/SSEに対応し、Microsoftログインとセッションごとのトークン分離を使用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Teams MCP サーバー
Claude 向けの、初のオープンソース Microsoft Teams コネクターです。Microsoft 365 ユーザーなら誰でも、職場のアカウントでサインインするだけで接続できます。セットアップも認証情報も不要で、セルフホストも必要ありません。
Claude Code、Claude Desktop、または Claude Cowork から、メッセージの閲覧、チャネルの一覧表示、Teams 全体の検索、メッセージの送信を行えます。
SurgeEnterpriseAI が開発しました。
仕組み
┌─────────────┐ Click "Connect" ┌──────────────────────┐
│ Claude User │ ──────────────────────► │ Teams MCP Server │
│ (Cowork/ │ │ (hosted by Surge) │
│ Desktop/ │ SSE/MCP Protocol │ │
│ Code) │ ◄─────────────────────► │ ┌────────────────┐ │
└─────────────┘ │ │ OAuth (common) │ │
│ │ Any M365 user │ │
User signs in with their │ │ can sign in │ │
own Microsoft account │ └───────┬────────┘ │
─────────────────────► │ │ │
│ ┌───────▼────────┐ │
│ │ Microsoft │ │
│ │ Graph API │ │
│ └────────────────┘ │
└──────────────────────┘
ユーザーは自分の Microsoft 365 アカウントで接続します。 自分のチーム、自分のチャネル、自分のメッセージが表示されます。各ユーザーのトークンは個別に分離されています。サーバーは中継役であり、メッセージを保存することはなく、転送するだけです。
機能
- ワンクリック接続 —
/connectにアクセスし、Microsoft でサインインするだけです - マルチテナント対応 — あらゆる Microsoft 365 組織、あらゆるユーザーに対応します
- 11 個のツール — チーム、チャネル、メッセージ、チャット、検索、プロフィール
- デュアルトランスポート — Claude Code 向けの STDIO、Cowork とリモート向けの HTTP/SSE
- マルチユーザー対応 — 各セッションに分離された OAuth トークンが割り当てられます
- 自動検出 — 起動方法に応じて適切なトランスポートを選択します
- トークンのキャッシュ — サイレント更新により、セッションごとの再ログインは不要です
- 再試行ロジック — Graph API の呼び出しがスロットリングされた場合、自動で再試行します
- TypeScript — 型が完全に定義され、クリーンなアーキテクチャを採用した MIT ライセンスのプロジェクトです
ユーザー向け:1 クリックで接続
すでに誰かがこのサーバーをホストしている場合(例:https://teams-mcp.surgeai.com):
- Claude が Microsoft Teams への接続を求めます
- 認証リンクをクリックします
- Microsoft の職場アカウントでサインインします
- これで完了です。Claude が Teams を閲覧できるようになります
API キーも Azure portal もセットアップも必要ありません。
開発者向け:セルフホスト
1. クローンしてインストール
git clone https://github.com/SurgeEnterpriseAI/teams-mcp-server.git
cd teams-mcp-server
npm install
npm run build
2. Azure AD アプリの登録
- Azure Portal → App registrations → New registration に移動します
- 名前:
Teams MCP Server - サポートされるアカウントの種類:「Accounts in any organizational directory (Any Azure AD directory - Multitenant)」
- リダイレクト URI:Web →
https://your-server.com/auth/callback - Register をクリックします
設定:
- Certificates & secrets → 新しいクライアントシークレットを作成 → Value をコピーします
- API Permissions → Delegated(Microsoft Graph)を追加します:
ChannelMessage.Read.All、ChannelMessage.SendChat.Read、Chat.ReadWrite、ChatMessage.SendTeam.ReadBasic.All、Channel.ReadBasic.AllUser.Read
- Grant admin consent をクリックします(自分のテナントの場合。他のテナントでは初回ログイン時に同意します)
3. 設定してデプロイ
cp .env.example .env
# Set TEAMS_CLIENT_ID, TEAMS_CLIENT_SECRET
# Set BASE_URL and REDIRECT_URI to your production URL
# TEAMS_AUTHORITY=common (multi-tenant, default)
Railway、Render、Azure App Service、または任意の Node.js ホストにデプロイします:
# Railway
railway login && railway init && railway up
# Or Azure
az webapp up --name teams-mcp-server --runtime "NODE:20-lts"
# Or just run directly
TRANSPORT_MODE=http node dist/index.js
4. MCP Registry に提出
デプロイしてテストしたら、サーバー URL を Anthropic の MCP コネクターレジストリに提出します。すると Claude Cowork で、Slack や Gmail と同じように、ユーザーが接続先として「Microsoft Teams」を選べるようになります。
Claude Code ユーザー向け:ローカル STDIO モード
.mcp.json に追加します:
{
"mcpServers": {
"teams": {
"command": "node",
"args": ["/path/to/teams-mcp-server/dist/index.js"],
"cwd": "/path/to/teams-mcp-server"
}
}
}
初回の実行時に、Microsoft へのログイン用にブラウザーが開きます。その後、トークンはキャッシュされます。
利用可能なツール
| ツール | 機能 |
|---|---|
teams_list_teams | 自分の Teams をすべて一覧表示します |
teams_list_channels | チーム内のチャネルを一覧表示します |
teams_read_channel_messages | チャネルの最近のメッセージを読み取ります |
teams_send_channel_message | チャネルにメッセージを送信します |
teams_reply_to_message | チャネルのスレッドに返信します |
teams_read_message_replies | スレッドの返信を読み取ります |
teams_list_chats | 自分の DM とグループチャットを一覧表示します |
teams_read_chat_messages | チャットのメッセージを読み取ります |
teams_send_chat_message | ダイレクトチャットまたはグループチャットにメッセージを送信します |
teams_search_messages | すべての Teams のメッセージを検索します |
teams_get_profile | 自分の Microsoft 365 プロフィールを取得します |
アーキテクチャ
src/
├── index.ts Main entry (auto-detects transport)
├── config.ts Central configuration
├── logger.ts Structured logging
├── types.ts TypeScript interfaces
├── sessions.ts Multi-user session manager
├── auth/
│ ├── oauth.ts MSAL OAuth (multi-tenant, per-user)
│ └── token-store.ts Persistent token cache
├── graph/
│ ├── client.ts Graph HTTP client with retries
│ ├── teams.ts Teams & channels API
│ ├── messages.ts Channel messages API
│ ├── chats.ts DM & group chat API
│ └── search.ts Search & profile API
├── mcp/
│ ├── server.ts MCP server factory
│ └── tools/ 11 tool definitions
├── transport/
│ ├── stdio.ts STDIO (Claude Code)
│ └── http.ts Express + SSE (Cowork / remote)
環境変数
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
TEAMS_CLIENT_ID | はい | — | Azure AD アプリのクライアント ID |
TEAMS_CLIENT_SECRET | はい | — | Azure AD クライアントシークレット |
TEAMS_AUTHORITY | いいえ | common | マルチテナントの場合は common、または特定のテナント ID |
TRANSPORT_MODE | いいえ | auto | auto、stdio、または http |
PORT | いいえ | 3000 | HTTP サーバーのポート |
BASE_URL | いいえ | http://localhost:3000 | 公開 URL |
REDIRECT_URI | いいえ | {BASE_URL}/auth/callback | OAuth コールバック URL |
TOKEN_STORE_PATH | いいえ | ./.data/tokens | トークンキャッシュのディレクトリ |
LOG_LEVEL | いいえ | info | ログレベル |
ライセンス
MIT — LICENSE
貢献
Issue と PR を歓迎します。SurgeEnterpriseAI が開発しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。