Graph APIなしでCursorからMicrosoft Teamsを読む方法(Claude、VS Code、Windsurf)
Mac上でCursor、Claude Desktop、VS Code、またはあらゆるMCPクライアントにMicrosoft Teamsのメッセージへのアクセスを提供します。Graph APIなし、OAuthなし、Azure ADなし。LevelDB経由でローカルのTeamsキャッシュから直接読み取ります。
課題
コーディングに集中しているとき、誰かがTeamsでAPIエンドポイントのスキーマが変わったと言及します。あるいは、3時間前にチームメイトが新しいデータベースの認証情報をチャンネルに投稿しました。通常であれば、Teamsに切り替え、会話をスクロールし、該当するメッセージを見つけ、情報をコピーして、エディタに戻る必要があります。
Teamsにプログラムからアクセスする公式な方法はMicrosoft Graph APIで、これにはAzure ADアプリの登録、OAuthスコープの設定、トークンのリフレッシュ処理、レート制限への対応が必要です。コーディング中にメッセージを読みたいだけの開発者にとって、これはばかげた量の手続きです。
LMCPによる解決方法
LMCPはまったく異なるアプローチを取ります。Microsoftのクラウドapiを経由する代わりに、Mac上のローカルキャッシュからTeamsのデータを直接読み取ります。Teamsデスクトップアプリは、メッセージをLevelDBデータベース(Chromiumベースのレンダラーを支えるIndexedDBストア)に保存します。LMCPはこのデータベースをローカルで読み取るため、次のような利点があります:
- Microsoft Graph APIの登録が不要
- OAuthトークンやAzure ADの設定が不要
- レート制限やAPIクォータがない
- Microsoftサーバーへのネットワークリクエストがない
- VPNや企業プロキシがGraph APIをブロックしていても動作する
インストールすると、AIアシスタントに次のようなことを尋ねられます:
APIマイグレーションに関するTeamsチャンネルの未読メッセージを要約して
AIがLMCPを通じてメッセージを読み取り、エディタ内で直接要約を返します。コンテキストの切り替えも、コピー&ペーストも不要です。
仕組み
Mac上のMicrosoft Teamsデスクトップアプリ(新しいTeams、バージョン2.x)はElectron上に構築されており、そのデータを次の場所にあるChromiumベースのLevelDBデータベースに保存します:
~/Library/Containers/com.microsoft.teams2/.../https_teams.microsoft.com_0.indexeddb.leveldb
LMCPは、Chromium IndexedDBストアを読み取るためのオープンソースライブラリ ccl_chromium_reader を使用して、このデータベースを解析します。チャットメッセージ、チャンネルの投稿、チーム名、会話のメタデータを抽出します — これらすべてを、ネットワークリクエストを1つも行わずに実現します。
データは読み取り専用です。LMCPはメッセージの送信、会話の変更、Teamsデータベースへの書き込みはできません。Teamsアプリによって既にローカルにキャッシュされている内容を読み取るだけです。
ステップ1: MacにLMCPをインストールする
LMCPをダウンロード してインストールします:
- ダウンロードフォルダから、ダウンロードした
.dmgファイルを開きます - Local MCP をアプリケーションフォルダにドラッグします
- アプリケーションフォルダから Local MCP を開きます — メニューバーに表示されます
約30秒で完了します。AIクライアントは自動的に設定されます。
ステップ2: AIクライアントを再起動する
インストール後、新しいMCPツールを読み込むためにAIクライアントを再起動します:
- Cursor — エディタを再起動します
- Claude Desktop — 完全に終了し(Cmd+Q)、再度開きます
- VS Code — ウィンドウを再読み込みします(Cmd+Shift+P → “Reload Window”)
- ChatGPT / Windsurf — アプリケーションを再起動します
ステップ3: Teamsが実行されていることを確認する
LMCPはローカルのTeamsキャッシュから読み取るため、Teamsデスクトップアプリがインストールされており、少なくとも一度はログインしている必要があります。クエリを実行する瞬間にアプリが実行されている必要はありません — キャッシュされたデータはディスク上に保持されます。ただし、最新のメッセージを取得するには、新しいデータを同期できるようTeamsを実行したままにしておきましょう。
ステップ4: AIからTeamsにクエリを実行する
AIクライアントを開き、次のようなプロンプトを試してみましょう:
- “最近のTeamsチャットを一覧表示して” — 1:1およびグループの会話を確認します。
- “バックエンドチームが今日#deploymentsチャンネルに何を投稿したか?” — 特定のチャンネルを検索します。
- “APIマイグレーションに関するTeamsチャンネルの未読メッセージを要約して” — 焦点を絞った要約を取得します。
- “Sarahが新しいステージングURLを共有したメッセージを見つけて” — すべての会話を横断して検索します。
利用できるTeamsのデータは?
LMCPはAIアシスタントに次のTeamsツールを公開します:
- チャットの一覧表示 — 1:1の会話やグループチャットを閲覧します
- チャットメッセージの読み取り — あらゆるチャット会話の内容を取得します
- チームの一覧表示 — あなたが所属するすべてのチームを確認します
- チャンネルの一覧表示 — チーム内のチャンネルを閲覧します
- チャンネルメッセージの読み取り — あらゆるチャンネルの投稿や返信を取得します
すべての操作は読み取り専用です。LMCPを通じてメッセージを送信することはできません。
開発者のワークフロー
コードレビューのコンテキスト
支払いサービスのリファクタリングに関する議論がないかTeamsのメッセージを確認し、次にこのリポジトリのオープンなPRを見て、両方をまとめて要約して。
AIがTeamsとコードベースから同時にコンテキストを取得し、レビューを始める前に全体像を提供します。
インシデント対応
Teamsの#incidentsチャンネルの最新メッセージを読んで、このプロジェクトのエラーログを確認して。500エラーの原因として考えられるのは?
インシデントの際、エディタ内でTeamsのコンテキストを得られることで、貴重な数分を節約できます。
よくある質問
古いTeamsアプリ(Teams Classic)でも動作しますか?
いいえ。ローカルLevelDBのアプローチは、新しいMicrosoft Teams(バージョン2.x)で動作します。これは、Microsoftが2023年以降に提供しているElectronベースのアプリです。古いTeams Classicは異なるストレージ形式を使用していました。まだTeams Classicを使用している場合は、新しいバージョンに更新してください — Microsoftはこの移行を2年以上にわたって推進しています。
LMCPはTeamsでメッセージを送信できますか?
いいえ。Teamsへのアクセスは読み取り専用です。LMCPはローカルキャッシュから読み取りますが、書き込むことはできません。メッセージの送信にはGraph APIが必要となり、ローカルファーストのアプローチの目的が損なわれてしまいます。メッセージを送信する必要がある場合は、Teamsを直接使用してください。
Teamsのデータが古い場合はどうなりますか?
LMCPはローカルキャッシュにある内容を読み取ります。Teamsデスクトップアプリが実行中で接続されていれば、キャッシュは最新の状態に保たれます。Teamsがしばらく閉じられていた場合、データは最後に同期した時点の内容を反映します。最新のデータを得るには、Teamsをバックグラウンドで実行したままにしておきましょう。
すべての主要なAIクライアントで動作します
このガイドはCursorに焦点を当てていますが、LMCPはMCP互換のあらゆるクライアントで動作します。 Claude Desktop、Copilot付きのVS Code、Windsurf、ChatGPT、Zedなどからもteamsにアクセスできます。インストールコマンドはすべて同じです。
LMCPでほかに何ができる?
Teamsは、LMCPがAIアシスタントに接続するアプリの1つにすぎません。 メールとEメール、 OAuthなしのCalendar、Contacts、OneDrive、Outlookなどにもアクセスできます。利用可能なすべての連携については、 ガイドの全リスト をご覧ください。