Skip to main content
Glama

Teams MCP Server

Claude 向けの最初のオープンソース Microsoft Teams コネクタです。Microsoft 365 ユーザーなら誰でも接続できます — 職場のアカウントでサインインするだけです。セットアップ不要、資格情報不要、セルフホスティング不要です。

メッセージの読み取り、チャネルの一覧表示、Teams 全体の検索、メッセージの送信 — すべて Claude Code、Claude Desktop、または Claude Cowork から行えます。

開発者: 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 アカウントを接続します。 自分のチーム、自分のチャネル、自分のメッセージが表示されます。各ユーザーのトークンは分離されています。サーバーはブリッジであり、メッセージを保存せず、単に通過させるだけです。

Related MCP server: Microsoft 365 MCP Server

機能

  • ワンクリック接続 — /connect にアクセスし、Microsoft でサインインするだけ

  • マルチテナント — 任意の Microsoft 365 組織、任意のユーザー

  • 11 のツール — チーム、チャネル、メッセージ、チャット、検索、プロフィール

  • デュアルトランスポート — Claude Code 用の STDIO、Cowork およびリモート用の HTTP/SSE

  • マルチユーザー — 各セッションに分離された OAuth トークンが付与されます

  • 自動検出 — 起動方法に基づいて適切なトランスポートを選択

  • トークンキャッシュ — サイレント更新、セッションごとの再ログイン不要

  • 再試行ロジック — スロットルされた Graph API 呼び出しの自動再試行

  • TypeScript — 完全に型付けされ、クリーンなアーキテクチャ、MIT ライセンス

ユーザー向け: 1クリックで接続

誰かがこのサーバーを既にホストしている場合 (例: https://teams-mcp.surgeai.com):

  1. Claude が Microsoft Teams への接続を求めます

  2. 認証リンクをクリックします

  3. Microsoft の職場アカウントでサインインします

  4. 完了 — Claude があなたの Teams を読み取れるようになります

API キー不要、Azure ポータル不要、セットアップ不要です。

開発者向け: セルフホスト

1. クローンとインストール

git clone https://github.com/SurgeEnterpriseAI/teams-mcp-server.git
cd teams-mcp-server
npm install
npm run build

2. Azure AD アプリ登録

  1. Azure Portal に移動 → アプリの登録 → 新規登録

  2. 名前: Teams MCP Server

  3. サポートされるアカウントの種類: "任意の組織ディレクトリ内のアカウント (任意の Azure AD ディレクトリ - マルチテナント)"

  4. リダイレクト URI: Web → https://your-server.com/auth/callback

  5. 登録 をクリック

設定:

  • 証明書とシークレット → 新しいクライアント シークレット → 値をコピー

  • API のアクセス許可 → 委任されたアクセス許可を追加 (Microsoft Graph):

    • ChannelMessage.Read.All, ChannelMessage.Send

    • Chat.Read, Chat.ReadWrite, ChatMessage.Send

    • Team.ReadBasic.All, Channel.ReadBasic.All

    • User.Read

  • 管理者の同意を付与 をクリック (自分のテナント用; 他のテナントは初回ログイン時に同意)

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 レジストリに提出

デプロイとテストが完了したら、サーバー URL を Anthropic の MCP コネクタレジストリに提出してください。すると、ユーザーは Claude Cowork の接続オプションとして "Microsoft Teams" を表示できるようになります — Slack や Gmail と同じように。

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.

Related MCP Connectors

Related MCP Servers