AIエージェント入門

Claude×M365 Connector|Word文書エージェント構築ガイド

Claude×M365 Connector|Word文書エージェント構築ガイド

この記事の結論

AnthropicのM365 Connectorを使ってClaudeをWordと連携させる方法を解説。MCP経由でSharePoint・OneDriveの文書を操作するエージェント構築の全手順を公開します。

「ClaudeをWordで使えるって聞いたけど、どうやって業務に組み込めばいいの?」

2026年に入ってAnthropicがMicrosoft 365との統合を大幅に強化し、Word・SharePoint・OneDriveをClaudeから直接操作できるようになりました。単にCopilotの裏でClaudeが動くという話ではなく、MCPプロトコルを使った本格的なエージェント統合です。

この記事では、M365 Connectorの仕組みから始まり、Microsoft Graph APIとの連携、そしてWordドキュメントを自動生成・編集・レビューするエージェントの実装方法まで、実際に動くコードとともに解説します。

AnthropicがリリースしたM365 ConnectorはModel Context Protocol(MCP)を使ってClaudeとMicrosoft 365テナントを接続する仕組みです。

仕組みはシンプルで、「M365 MCP Server for Claude」と「M365 MCP Client for Claude」という2つのアプリがGraph APIのデリゲート権限を使ってMicrosoft 365のデータにアクセスします。ユーザーが一度同意すれば、Claude側からSharePoint・OneDrive・Outlook・Teamsのデータを読み書きできます。

機能 アクセス先 操作内容
文書検索・読み取り SharePoint / OneDrive Wordファイル・PDFの内容取得
メール分析 Outlook スレッド検索・要約・下書き生成
チャット参照 Teams 会議要約・会話履歴の分析
カレンダー連携 Outlook Calendar スケジュール確認・会議設定
Word文書作成 OneDrive / SharePoint 新規ドキュメントの生成・編集

2026年4月時点でFree・Pro・Max・Team・Enterpriseの全プランで利用可能になっています(参照: Anthropic公式ヘルプ)。ただしEnterpriseプランで使う場合は、Microsoft 365管理センターでAnthropicをサブプロセッサとして有効化する必要があります(2026年5月1日までに設定必須)。

AIエージェントの基本概念や構築パターンについては、AIエージェント構築完全ガイドで体系的にまとめています。

M365 Connectorのセットアップ手順

接続自体は3ステップで完了します。

ステップ1: Microsoft Marketplaceでアプリを承認

Microsoft AppSource(marketplace.microsoft.com)で「M365 Connector for Claude by Anthropic」を検索してインストールします。Enterpriseの場合はIT管理者がテナント全体で承認する形になります。

ステップ2: Claude.aiで接続を有効化

Claude.aiの設定画面(Settings → Integrations)を開き、「Microsoft 365」のトグルをオンにします。Microsoftアカウントでの認証フローが走り、デリゲート権限の同意画面が表示されます。

ステップ3: 権限スコープの確認

同意する権限は「ファイル読み取り」「メール読み取り」「Teams読み取り」など読み取り系が中心です。書き込み権限(Word文書の作成・編集)が必要な場合は別途有効化が必要です。

Wordドキュメントエージェントの実装例

M365 ConnectorだけでもClaudeとWordは連携できますが、より高度な自動化(バッチ処理・スケジュール実行・複数ファイル操作)には、Graph APIをPythonから直接呼び出すエージェント構築が有効です。

まず、Microsoft Graph APIを使ってOneDriveのWordファイルを読み取り、Claudeで要約するエージェントの基本コードです。

# 動作環境: Python 3.11+
# 必要パッケージ: pip install anthropic msal requests
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

import anthropic
import requests
from msal import ConfidentialClientApplication

# Microsoft Entra(Azure AD)の認証設定
TENANT_ID = "your-tenant-id"
CLIENT_ID = "your-client-id"
CLIENT_SECRET = "your-client-secret"  # 実際は環境変数から取得

# Graph APIトークン取得
def get_graph_token():
    app = ConfidentialClientApplication(
        CLIENT_ID,
        authority=f"https://login.microsoftonline.com/{TENANT_ID}",
        client_credential=CLIENT_SECRET,
    )
    result = app.acquire_token_for_client(
        scopes=["https://graph.microsoft.com/.default"]
    )
    return result["access_token"]

# OneDriveからWordファイルのテキストを取得
def get_word_content(file_id: str, token: str) -> str:
    url = f"https://graph.microsoft.com/v1.0/me/drive/items/{file_id}/content"
    headers = {"Authorization": f"Bearer {token}"}
    # Wordファイルはテキスト変換してダウンロード
    resp = requests.get(
        f"https://graph.microsoft.com/v1.0/me/drive/items/{file_id}",
        headers=headers
    )
    # ファイルの内容を取得(/contentエンドポイント)
    content_resp = requests.get(url, headers=headers, allow_redirects=True)
    return content_resp.text[:8000]  # トークン上限に合わせてトリミング

# Claudeでドキュメントを要約・分析
def analyze_document(content: str, task: str) -> str:
    client = anthropic.Anthropic()
    message = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=2048,
        messages=[
            {
                "role": "user",
                "content": f"以下のWord文書を{task}してください:nn{content}"
            }
        ]
    )
    return message.content[0].text

# 使用例
token = get_graph_token()
content = get_word_content("your-file-id", token)
result = analyze_document(content, "要約・課題抽出")
print(result)

動作環境: Python 3.11+, anthropic>=0.40.0, msal>=1.28.0
前提条件: Microsoft Entra(旧Azure AD)でアプリ登録済み、Files.Read.All権限付与済み

文書自動生成エージェントの実装

レポートや契約書のドラフトを自動生成してOneDriveに保存するエージェントです。AnthropicのAgent Skillsフレームワークと組み合わせると、より複雑なワークフローも構築できます。

# Word文書を自動生成してOneDriveにアップロードするエージェント
# 必要パッケージ: pip install python-docx anthropic requests msal
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

from docx import Document
import io
import anthropic
import requests

def generate_report_with_claude(topic: str, context: str) -> str:
    """Claudeでレポートの本文を生成"""
    client = anthropic.Anthropic()
    msg = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=4096,
        messages=[{
            "role": "user",
            "content": (
                f"以下のトピックについて、ビジネスレポートとして使えるMarkdown形式の文書を作成してください。n"
                f"トピック: {topic}n"
                f"背景情報: {context}nn"
                "構成: エグゼクティブサマリー → 現状分析 → 課題と提言 → 結論"
            )
        }]
    )
    return msg.content[0].text

def create_word_from_markdown(markdown_text: str, title: str) -> bytes:
    """MarkdownテキストをWordファイルに変換"""
    doc = Document()
    doc.add_heading(title, 0)

    for line in markdown_text.split('n'):
        if line.startswith('# '):
            doc.add_heading(line[2:], 1)
        elif line.startswith('## '):
            doc.add_heading(line[3:], 2)
        elif line.startswith('### '):
            doc.add_heading(line[4:], 3)
        elif line.strip():
            doc.add_paragraph(line)

    buffer = io.BytesIO()
    doc.save(buffer)
    return buffer.getvalue()

def upload_to_onedrive(file_bytes: bytes, filename: str, token: str) -> str:
    """OneDriveにWordファイルをアップロード"""
    url = f"https://graph.microsoft.com/v1.0/me/drive/root:/{filename}:/content"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
    }
    resp = requests.put(url, headers=headers, data=file_bytes)
    resp.raise_for_status()
    return resp.json()["webUrl"]  # 生成されたファイルのURL

# エージェント実行
token = get_graph_token()  # 前述の関数を使用
report_content = generate_report_with_claude(
    topic="2026年Q2 AI導入状況レポート",
    context="社内の各部門からのヒアリング結果と、市場調査データ"
)
word_bytes = create_word_from_markdown(report_content, "2026年Q2 AI導入状況レポート")
file_url = upload_to_onedrive(word_bytes, "AI_Report_2026Q2.docx", token)
print(f"レポートを作成しました: {file_url}")

Microsoft 365 Copilot経由での連携(コード不要)

開発者以外のビジネスユーザーには、Microsoft 365 CopilotのResearcherエージェントを使った連携が現実的です。

2026年のCopilotアップデートで、WordのCopilotチャットペインからAnthropicモデル(Claude Opus 4.6 / Sonnet 4.6)を選択して使えるようになりました(Microsoft公式サポート)。ResearcherエージェントではGPT-5系が下書きを生成し、ClaudeがファクトチェックとCitation整合性を確認するデュアルモデルワークフローになっています。

# Python不使用でのドキュメント操作: Graph API REST直接呼び出し(curlで確認)
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。

# OneDrive内のWordファイル一覧を取得(検索)
curl -X GET 
  "https://graph.microsoft.com/v1.0/me/drive/root/search(q='report')" 
  -H "Authorization: Bearer $GRAPH_TOKEN" 
  -H "Accept: application/json"

# 特定フォルダ内のファイル一覧
curl -X GET 
  "https://graph.microsoft.com/v1.0/me/drive/root:/Documents:/children" 
  -H "Authorization: Bearer $GRAPH_TOKEN"

# ファイルの共有リンク生成(レビュー依頼に便利)
curl -X POST 
  "https://graph.microsoft.com/v1.0/me/drive/items/{fileId}/createLink" 
  -H "Authorization: Bearer $GRAPH_TOKEN" 
  -H "Content-Type: application/json" 
  -d '{"type": "view", "scope": "organization"}'

【要注意】よくある失敗パターンと回避策

失敗1: デリゲート権限とアプリ権限を混同する

❌ M365 Connectorのデリゲート権限でバッチ処理しようとする
⭕ バッチ処理・スケジュール実行にはEntra IDでアプリ権限(Files.ReadWrite.All等)を別途取得

なぜ重要か: M365 ConnectorはユーザーのセッションにバインドされたOAuth2デリゲート権限を使います。ユーザーがログアウトすると権限が切れるため、夜間バッチなど無人実行には向きません。

失敗2: Enterpriseでサブプロセッサ設定を忘れる

❌ IT管理者への連絡なしにM365 Connectorを使おうとして403エラー
⭕ Microsoft 365管理センターで「プライバシー → サードパーティアプリのデータ処理」からAnthropicを有効化

なぜ重要か: テナント全体の設定変更が必要です。2026年5月1日以降は設定なしでは使えなくなります。

失敗3: Wordファイルを直接バイナリとして読もうとする

❌ Graph APIの/contentエンドポイントでdocxをそのままテキスト処理する
⭕ python-docxで解析するか、Graph APIのドキュメント変換機能(.htmlや.txtへの変換)を使う

なぜ重要か: docxはZip圧縮されたXMLです。バイナリを直接Claudeに渡してもXMLタグが邪魔してうまく処理できません。

失敗4: 全てのClaudeモデルでAgent Skillsが使えると思い込む

❌ Haiku 3.5でWord Skillを使おうとしてエラー
⭕ Agent SkillsはClaude Opus 4.5+またはSonnet 4.5+から利用可能

セキュリティと権限管理

M365との統合では、セキュリティを最優先に考える必要があります。

  • 最小権限の原則: Graph APIアプリには必要最小限のスコープのみ付与する(Files.ReadWrite.Allは必要なければ付与しない)
  • クライアントシークレットの管理: .envファイルやAzure Key Vaultで管理。コードへのハードコードは絶対にNG
  • 条件付きアクセス: M365側でIPアドレス制限や多要素認証要件を設定し、エージェントアプリのアクセスを制御
  • 監査ログ: Microsoft Purviewの監査ログでClaudeからのアクセスパターンを定期確認

正直に言うと、AnthropicとMicrosoftの統合は2026年4月時点でまだ発展中のエリアです。Agent Skillsの全機能が安定して使えるようになるのはもう少し先かもしれません。エンタープライズ導入の場合は、まずPoC(概念実証)から始めることをおすすめします。

参考・出典

まとめ:今日から始める3つのアクション

  1. 今日やること: Claude.aiの設定画面からM365 Connectorを有効化し、SharePointの既存文書をClaudeに読み込ませて要約させてみる
  2. 今週中: Python + Graph APIで社内レポートの自動生成PoC(概念実証)を構築する
  3. 今月中: IT管理者と連携してEnterpriseテナントでのサブプロセッサ設定を完了し、本番ワークフローへの統合を開始する

あわせて読みたい:


この記事はAIgent Lab編集部がお届けしました。AIエージェントの本格導入を検討中の方は、Uravationのお問い合わせフォームからご相談ください。

Need help moving from reading to rollout?

この記事を読んで導入イメージが固まってきた方へ

Uravationでは、AIエージェントの要件整理、PoC設計、社内導入、研修まで一気通貫で支援しています。

この記事をシェア

X Facebook LINE

※ 本記事の情報は2026年4月時点のものです。サービスの料金・仕様は変更される可能性があります。最新情報は各サービスの公式サイトをご確認ください。

関連記事