Teams MCP
Teams MCP
Microsoft Graph APIとのシームレスな統合を提供するModel Context Protocol (MCP) サーバーです。AIアシスタントがMicrosoft Teams、ユーザー、チャット、ファイル、および組織データとやり取りできるようになります。
📦 インストール
Cursor/Claude/VS CodeでこのMCPサーバーを使用するには、以下の設定を追加してください:
{
"mcpServers": {
"teams-mcp": {
"command": "npx",
"args": ["-y", "@floriscornel/teams-mcp@latest"]
}
}
}Related MCP server: Meeting BaaS MCP Server
🚀 機能
🔐 認証
Microsoft Graphを使用したOAuth 2.0デバイスコード認証フロー
安全なトークン管理、キャッシュの永続化、およびリフレッシュトークンの更新
認証状態の確認とログアウトのサポート
権限を制限した読み取り専用モード
事前に発行されたMicrosoft Graphアクセストークン用の直接的な
AUTH_TOKENサポート
👥 ユーザー管理
現在のユーザー情報の取得
名前またはメールアドレスによるユーザー検索
詳細なユーザープロファイルの取得
組織ディレクトリデータへのアクセス
🏢 Microsoft Teams統合
チーム管理
ユーザーが参加しているチームの一覧表示
チームの詳細とメタデータへのアクセス
チャネル操作
チーム内のチャネル一覧表示
チャネルメッセージと返信の取得
チームチャネルへのメッセージ送信
既存のチャネルスレッドへの返信
チャネルメッセージと返信の編集および論理削除
メッセージの重要度レベルのサポート (
normal,high,urgent)URLまたはbase64データによるインライン画像添付のサポート
チームメンバー
チームメンバーとその役割の一覧表示
メンバー情報へのアクセス
@mentions用のユーザー検索
💬 チャットとメッセージング
1対1およびグループチャット
ユーザーのチャット一覧表示
新しい1対1またはグループ会話の作成
フィルタリング、順序付け、ページネーションを備えたチャットメッセージ履歴の取得
@odata.nextLinkページネーションによるすべての利用可能なメッセージの取得既存のチャットへのメッセージ送信
送信済みチャットメッセージの編集
チャットメッセージの論理削除
✏️ メッセージ管理
編集と削除
チャットおよびチャネル内の送信済みメッセージの更新(編集)
チャットおよびチャネル内のメッセージの論理削除(完全に削除せず削除済みとしてマーク)
メッセージ送信者のみが自身のメッセージを更新/削除可能
編集時のMarkdownフォーマット、メンション、重要度レベルのサポート
📎 メディアと添付ファイル
ホストされたコンテンツ
チャットおよびチャネルメッセージからのホストされたコンテンツ(画像、ファイル)のダウンロード
会話内で共有されたインライン画像および添付ファイルへのアクセス
ホストされたコンテンツをディスクに直接保存するオプション
ファイルアップロード
あらゆるファイルタイプ(PDF、DOCX、XLSX、ZIP、画像など)をチャネルやチャットにアップロードして送信
再開可能なアップロードセッションによる大容量ファイル(4MB超)のサポート
チャネルへのアップロードはSharePointへ、チャットへのアップロードはOneDriveへ保存
メッセージテキスト、カスタムファイル名、フォーマット、重要度レベルのオプション
🔍 高度な検索と発見
メッセージ検索
Microsoft Search APIを使用してすべてのTeamsチャネルとチャットを横断検索
KQL(キーワードクエリ言語)構文のサポート
送信者、メンション、添付ファイル、既読状態、日付範囲によるフィルタリング
高度なフィルタリングオプションを備えた最近のメッセージの取得
現在のユーザーに言及しているメッセージの検索
リッチメッセージフォーマットのサポート
以下のツールは、Teamsチャネルおよびチャットでのリッチメッセージフォーマットをサポートしています:
send_channel_messagesend_chat_messagereply_to_channel_messageupdate_channel_messageupdate_chat_messagesend_file_to_channelsend_file_to_chat
フォーマットオプション
format パラメータを指定してメッセージのフォーマットを制御できます:
text(デフォルト): プレーンテキストmarkdown: Markdownフォーマット(太字、斜体、リスト、リンク、コードなど)をサニタイズされたHTMLに変換
format が markdown に設定されている場合、メッセージ内容は安全なMarkdownパーサーを使用してHTMLに変換され、Teamsに送信される前に潜在的に危険なコンテンツを除去するためにサニタイズされます。
format が指定されていない場合、メッセージはプレーンテキストとして送信されます。
使用例
{
"teamId": "...",
"channelId": "...",
"message": "**Bold text** and _italic text_\n\n- List item 1\n- List item 2\n\n[Link](https://example.com)",
"format": "markdown",
"importance": "high"
}{
"chatId": "...",
"message": "Simple plain text message",
"format": "text"
}セキュリティ機能
HTMLサニタイズ: すべてのMarkdownコンテンツはHTMLに変換され、潜在的に危険な要素(スクリプト、イベントハンドラなど)を除去するためにサニタイズされます
許可されたタグ: 安全なHTMLタグのみが許可されます (p, strong, em, a, ul, ol, li, h1-h6, code, pre など)
安全な属性: 安全な属性のみが許可されます
XSS防止: クロスサイトスクリプティング攻撃を防ぐためにコンテンツは自動的にサニタイズされます
サポートされているMarkdown機能
テキストフォーマット: 太字 (
**text**), 斜体 (_text_), 取り消し線 (~~text~~)リンク:
[text](url)リスト: 箇条書き (
- item) および番号付き (1. item)コード: インライン
`code`およびコードブロック見出し:
# H1から###### H6引用:
> quoted textテーブル: GitHub形式のMarkdownテーブル
LLMフレンドリーなコンテンツフォーマット
Microsoft Graph APIから取得されたメッセージは、Teams固有のタグを含む生のHTMLとして返されます。このコンテンツをAIアシスタントが扱いやすくするために、以下のツールは自動的なHTMLからMarkdownへの変換をサポートしています:
get_chat_messagesget_channel_messagesget_channel_message_repliessearch_messagesget_my_mentions
コンテンツフォーマットオプション
contentFormat パラメータを使用して、メッセージコンテンツの返却方法を制御します:
markdown(デフォルト): TeamsのHTMLをLLMでの利用に最適化されたクリーンなMarkdownに変換しますraw: Microsoft Graph APIからの元のHTMLを返します
変換内容
HTML要素 | Markdown出力 |
|
|
|
|
|
|
|
|
|
|
|
|
| GFM Markdownテーブル |
|
|
| (削除) |
|
|
| プレーン文字にデコード |
添付ファイルのメタデータ
ファイル添付やインライン画像を含むメッセージには、各添付ファイルのメタデータ(id, name, contentType, contentUrl, thumbnailUrl)を含む attachments 配列がレスポンスに含まれます。Markdownコンテンツ内のインライン {attachment:id} マーカーはこの配列内のエントリと関連付けられており、利用者は download_message_hosted_content または download_chat_hosted_content を通じて添付ファイルを特定しダウンロードできます。
使用例
{
"chatId": "19:meeting_...",
"limit": 10,
"contentFormat": "markdown"
}元のHTMLを取得する場合:
{
"chatId": "19:meeting_...",
"limit": 10,
"contentFormat": "raw"
}📦 インストール
# Install dependencies
npm install
# Build the project
npm run build
# Set up authentication
npm run auth🔧 設定
前提条件
Node.js 18以上
適切な権限を持つMicrosoft 365アカウント
以下のスコープに対するMicrosoft Graph委任権限
必要なMicrosoft Graph権限
フルモード(デフォルト):
User.Read- ユーザープロファイルの読み取りUser.ReadBasic.All- 基本ユーザー情報の読み取りTeam.ReadBasic.All- チーム情報の読み取りChannel.ReadBasic.All- チャネル情報の読み取りChannelMessage.Read.All- チャネルメッセージの読み取りChannelMessage.Send- チャネルメッセージと返信の送信ChannelMessage.ReadWrite- チャネルメッセージの編集と削除Chat.Read- チャットメッセージの読み取り(読み取り専用スコープに含まれる)Chat.ReadWrite- チャットの作成と管理、チャットメッセージの送信/編集/削除 (Chat.Readを上書き)TeamMember.Read.All- チームメンバーの読み取りFiles.ReadWrite.All- チャネルおよびチャットへのファイルアップロードに必要
読み取り専用モード (TEAMS_MCP_READ_ONLY=true) — 以下のスコープのみが要求されます:
User.ReadUser.ReadBasic.AllTeam.ReadBasic.AllChannel.ReadBasic.AllChannelMessage.Read.AllTeamMember.Read.AllChat.Read
認証モード
フルアクセス:
npx @floriscornel/teams-mcp@latest authenticate読み取り専用アクセス:
npx @floriscornel/teams-mcp@latest authenticate --read-only既存のMicrosoft Graph JWTを使用した直接トークン注入:
{
"mcpServers": {
"teams-mcp": {
"command": "npx",
"args": ["-y", "@floriscornel/teams-mcp@latest"],
"env": {
"AUTH_TOKEN": "<jwt-for-https://graph.microsoft.com>"
}
}
}
}トークンストレージ
認証メタデータはローカルの
~/.msgraph-mcp-auth.jsonに保存されますトークンキャッシュはローカルの
~/.teams-mcp-token-cache.jsonに保存されます
🛠️ 使用方法
サーバーの起動
# Development mode with hot reload
npm run dev
# Production mode
npm run build && node dist/index.js
# Start in read-only mode (disables all write tools)
TEAMS_MCP_READ_ONLY=true node dist/index.jsCLIコマンド
npx @floriscornel/teams-mcp@latest authenticate # Authenticate with full scopes
npx @floriscornel/teams-mcp@latest authenticate --read-only # Authenticate with read-only scopes
npx @floriscornel/teams-mcp@latest check # Check authentication status
npx @floriscornel/teams-mcp@latest logout # Clear authentication
npx @floriscornel/teams-mcp@latest auth # Alias for authenticate
npx @floriscornel/teams-mcp@latest # Start MCP server (default)環境変数
TEAMS_MCP_READ_ONLY=true- MCPサーバーを読み取り専用モードで起動AUTH_TOKEN=<jwt>- MSALログインの代わりに既存のMicrosoft Graphアクセストークンを使用
読み取り専用モード
サーバーは、すべての書き込み操作(メッセージ送信、チャット作成、ファイルアップロード、メッセージの編集/削除)を無効にし、Microsoft Graphから読み取り権限スコープのみを要求する読み取り専用モードをサポートしています。
読み取り専用モードを有効にする方法:
環境変数:
TEAMS_MCP_READ_ONLY=trueCLIフラグ:
--read-only
制限されたスコープで認証:
npx @floriscornel/teams-mcp@latest authenticate --read-onlyMCPサーバー設定(読み取り専用):
{
"mcpServers": {
"teams-mcp": {
"command": "npx",
"args": ["-y", "@floriscornel/teams-mcp@latest"],
"env": {
"TEAMS_MCP_READ_ONLY": "true"
}
}
}
}モードの切り替え: 読み取り専用からフルモードに切り替える際、サーバーはスコープの不一致を検出し、再認証を促す警告を表示します:
npx @floriscornel/teams-mcp@latest authenticate読み取り専用ツール (16):
auth_status, get_current_user, search_users, get_user, list_teams, list_channels, get_channel_messages, get_channel_message_replies, list_team_members, search_users_for_mentions, download_message_hosted_content, list_chats, get_chat_messages, download_chat_hosted_content, search_messages, get_my_mentions
読み取り専用モードで無効化される書き込みツール (10):
send_channel_message, reply_to_channel_message, update_channel_message, delete_channel_message, send_file_to_channel, send_chat_message, create_chat, update_chat_message, delete_chat_message, send_file_to_chat
利用可能なMCPツール
認証
auth_status- 現在の認証状態を確認
ユーザー操作
get_current_user- 認証済みユーザー情報を取得search_users- 名前またはメールアドレスでユーザーを検索get_user- IDまたはメールアドレスで詳細なユーザー情報を取得
チーム操作
list_teams- ユーザーが参加しているチームを一覧表示list_channels- 特定のチーム内のチャネルを一覧表示get_channel_messages- 添付ファイルの概要とコンテンツフォーマット選択を備えたチームチャネルからのメッセージを取得get_channel_message_replies- 特定のチャネルメッセージへの返信を取得send_channel_message- メンション、重要度、画像添付オプションを備えたチームチャネルへのメッセージ送信reply_to_channel_message- 既存のチャネルメッセージへの返信update_channel_message- 送信済みのチャネルメッセージまたは返信を編集delete_channel_message- チャネルメッセージまたは返信を論理削除list_team_members- 特定のチームのメンバーを一覧表示search_users_for_mentions- メッセージで@メンションするためのチームメンバーを検索send_file_to_channel- ローカルファイルをアップロードし、チャネルへのメッセージとして送信
チャット操作
list_chats- ユーザーのチャット(1対1およびグループ)を一覧表示get_chat_messages- ページネーション、フィルタ、順序付け、fetchAllを備えた特定のチャットからのメッセージを取得send_chat_message- チャットへのメッセージ送信create_chat- 新しい1対1またはグループチャットを作成update_chat_message- 送信済みのチャットメッセージを編集
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/floriscornel/teams-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server