Skip to main content
Glama
abhivishwa2
by abhivishwa2

OneNote-MCP-For-GeminiSpark

Microsoft OneNoteとGemini Sparkを統合するための堅牢なModel Context Protocol (MCP) サーバーです。このリポジトリには、OneNoteコンテンツをGeminiSparkワークフローに同期したり、OneNoteノートをGeminiSpark対応形式にエクスポートしたり、一般的な自動化シナリオをデモンストレーションするためのコード、設定、例が含まれています。

🎯 これが実現すること

OneNoteノートブックをAIがアクセス可能なナレッジベースに変換します:

  • すべてのノートブック、セクション、ページを一覧表示

  • 分析と検索のためにページコンテンツを読み取り

  • 「DevOpsノートを見せて」や「プロジェクト計画に関するページを検索」などの自然言語クエリ

  • Microsoft Graph APIによる安全なOAuth認証

  • 詳細なデバッグ情報付きの堅牢なエラー処理

Related MCP server: OneNote MCP Server

✨ この実装の特長

他のOneNote MCPサーバーとは異なり、この実装は次のような特徴があります:

  • ✅ 実際に動作 - 実際のOneNoteデータで広範囲にテスト済み

  • ✅ 完全な機能 - すべての主要なOneNote操作を実装

  • ✅ 堅牢な認証 - エッジケースを処理する2段階デバイスフロー

  • ✅ 本番環境対応 - 適切なエラー処理とロギング

  • ✅ 簡単なセットアップ - 非技術者向けの詳細な手順

🚀 クイックスタート

前提条件

1. uvのインストール(まだお持ちでない場合)

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# or with Homebrew
brew install uv

2. クローンとセットアップ

git clone https://github.com/yourusername/onenote-mcp-server.git
cd onenote-mcp-server

# Create virtual environment and install dependencies
uv sync

3. Azureアプリの登録

OneNoteにアクセスするにはAzureアプリを作成する必要があります。ご安心ください。無料で5分もかかりません:

  1. Azureポータルにアクセスします(Microsoftアカウントでサインイン)

  2. Azure Active Directory → アプリの登録 → 新規登録に移動します

  3. フォームに入力します:

    • 名前: "OneNote MCP Server"(またはお好みの名前)

    • サポートされるアカウントの種類: "任意の組織ディレクトリ内のアカウントと個人用Microsoftアカウント"

  4. 登録をクリックします

  5. アプリケーション(クライアント)IDをコピーします - 後で必要になります!

4. アクセス許可の追加

引き続きAzureアプリ内で:

  1. APIのアクセス許可 → アクセス許可の追加に移動します

  2. Microsoft Graph → 委任されたアクセス許可を選択します

  3. 次のアクセス許可を追加します:

    • Notes.Read - OneNoteノートブックの読み取り

    • Notes.ReadWrite - OneNoteコンテンツの作成/変更(任意ですが推奨)

    • User.Read - ユーザープロファイルの読み取り

    • Offline.access - 更新トークンアクセスの許可

  4. 管理者の同意を与える をクリックします(上部のボタン)

  5. マニフェストに移動し、signInAudience を AzureADandPersonalMicrosoftAccount に更新し、requestedAccessTokenVersion を 2 に更新して保存します。

5. Azure更新トークンの生成(一度だけの操作)

  • refresh_token.py ファイル内のAzureクライアントIDを更新し、cmdで実行します。

  • ブラウザウィンドウが開きます。Microsoft IDでログインします。

  • ログイン成功後、cmdにトークンが生成されます。

6. MCPサーバーをクラウド/ローカルにデプロイ

  • 例:Google Cloudへのデプロイの場合は、次のコマンドを実行します。

    gcloud run deploy onenote-mcp-server --source . --region us-central1
    --set-env-vars="AZURE_REFRESH_TOKEN=YOUR_AZURE_REFRESH_TOKEN,AZURE_CLIENT_ID=YOUR_ACTUAL_CLIENT_ID"
    --allow-unauthenticated
    
  • デプロイ後にMCPサーバーのURLが生成されます。

7. Gemini Sparkでカスタム接続アプリをセットアップ

  • 「接続アプリ」をクリック

  • MCPサーバーのURL/sseを入力します(URLの末尾に/sseを追加するのを忘れないでください)

  • 詳細設定で -> AzureクライアントIDを入力

  • 「リダイレクトURIをコピー」をクリックし、Azureポータル --> Azureクライアントアプリ --> 認証 --> リダイレクトURI --> URIの追加 --> Web --> コピーしたリンクを貼り付け --> 他のリダイレクトURIを削除します

  • 接続アプリのダイアログボックスで -> 「次へ」をクリックし、画面に従います。

  • OneNote MCPサーバーが接続アプリ画面に作成されます。

使用方法

接続アプリのセットアップが完了したら、Gemini Sparkで次のタスクを試してください:

List my OneNote notebooks
Show me sections in my Work notebook  
What pages are in my Ideas section?
Read the content of my "Project Plan" page

🛠 トラブルシューティング

Gemini Sparkの接続アプリ画面に「使用できるツールがありません」と表示される

  • 画面からリダイレクトURIをコピーし、Microsoft Azureアプリで正しく更新したことを確認してください。

  • MCPサーバーのクラウドデプロイメントが未認証アクセスを許可しているか確認してください。

  • uvがインストールされているか確認してください:uv --version

認証の問題

  • SafariのOAuth問題: SafariはMicrosoftのOAuthリダイレクトを正しく処理できない場合があります。代わりにFirefoxまたはChromeを使用してください。

  • 「nativeclient」プロンプト: これは通常のMicrosoft OAuthの動作ですが、認証をブロックする場合は別のブラウザを試してください。

  • 推奨ブラウザ: 最良の互換性のためにFirefox(動作確認済み)、Chrome、またはEdge。

「コマンドが見つかりません」エラー

  • uvがPATHに含まれていることを確認してください。

  • 代替案:設定内の"uv"を"python"に置き換え、Pythonインタープリターのフルパスを使用してください。

権限拒否エラー

  • プロジェクトディレクトリのファイル権限を確認してください。

🏗 開発

プロジェクト構造

onenote-mcp-server/
├── onenote_mcp_server.py      # Main server implementation
├── pyproject.toml             # Dependencies and metadata
├── refresh_token.py           # Generate Refresh Token
├── README.md                  # This file
├── LICENSE                    # MIT License
└── .gitignore                 # Git ignore rules

主な機能

  • 完全なGraph API統合: すべてのOneNote操作をサポート

  • 堅牢なエラー処理: 詳細なロギングとグレースフルな障害処理

  • FastMCPフレームワーク: クリーンで保守しやすいコード構造

  • 環境変数による設定: 安全な資格情報の管理

新機能の追加

このサーバーはFastMCPで構築されており、新しいツールを簡単に追加できます:

if method == "tools/list":
                    await custom_send({"type": "http.response.start", "status": 200, "headers": [(b"content-type", b"application/json")]})
                    tools = [
  
    # Your implementation here
    return 

🤝 貢献について

貢献を歓迎します!以下の手順に従ってください:

  1. リポジトリをフォークする

  2. フィーチャーブランチを作成する

  3. 新機能のテストを追加する

  4. プルリクエストを提出する

📄 ライセンス

MITライセンス - 詳細はLICENSEファイルを参照してください。

🙏 謝辞

  • FastMCPフレームワークで構築

  • OneNoteアクセスにMicrosoft Graph APIを使用

  • purpleslurpleの素晴らしい作品に触発されました

⚠️ 重要な注意事項

  • このサーバーは、あなたがすでにアクセス権を持つデータのみを読み書きします。

  • Azureアプリの資格情報はあなたのマシン上に保持されます。

  • すべての認証はあなたとMicrosoftの間で直接行われます。

  • 第三者にデータが送信されることはありません。


Gemini Spark + OneNoteコミュニティのために、❤️を込めて作られました

OneNoteをAIがアクセス可能なナレッジベースに変えましょう!

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A pure-local Microsoft OneNote MCP server for Windows that controls the OneNote desktop app through the local OneNote COM API without needing Azure, Microsoft Graph, API keys, or OAuth.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A secure MCP server for Microsoft OneNote via the Graph API, enabling listing/reading notebooks, sections, and pages, with optional gated write tools. Read-only by default and deployable to Azure Container Apps.
    9 npm
    MIT