メール処理MCPサーバー
この MCP サーバーは、セマンティック検索のための MongoDB 統合と、効率的な保存と取得のための SQLite を備えた電子メール処理機能を提供します。
特徴
日付範囲フィルタリングを使用して Outlook からのメールを処理する
適切な接続管理を使用してSQLiteデータベースにメールを保存する
Ollamaを使用してベクトル埋め込みを生成する
複数のメールボックスのサポート
受信トレイ、送信済みアイテム、およびオプションで削除済みアイテム フォルダのサポート
Related MCP server: Gmail MCP Server
今後の機能
セマンティック機能を備えたメール検索
LLMを使用した電子メール要約
自動メール分類
カスタマイズ可能なメールレポート
高度なフィルタリングオプション
Outlook でメール返信を下書きする
Outlook ルールの提案
Neo4j と ChromaDB の統合によるデータベース オプションの拡張
前提条件
Python 3.10以上
ローカルで実行される Ollama(埋め込み用)
Microsoft Outlookがインストールされている
Windows OS(Outlook統合用)
MongoDB サーバー (埋め込みの保存用)
インストール
uv をインストールします (まだインストールされていない場合)。
pip install uv仮想環境を作成します。
uv venv .venv仮想環境をアクティブ化します。
ウィンドウズ:
.venv\Scripts\activatemacOS/Linux:
source .venv/bin/activate依存関係をインストールします:
uv pip install -e .fastmcp パッケージをインストールします。
uv pip install fastmcpOllama が必要なモデルを使用してローカルで実行されていることを確認します。
ollama pull nomic-embed-text構成
Claude for Desktop 構成ファイルにサーバーを追加します。
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"outlook-email": {
"command": "C:/Users/username/path/to/mcp-server-outlook-email/.venv/Scripts/python",
"args": [
"C:/Users/username/path/to/mcp-server-outlook-email/src/mcp_server.py"
],
"env": {
"MONGODB_URI": "mongodb://localhost:27017/MCP?authSource=admin",
"SQLITE_DB_PATH": "C:\\Users\\username\\path\\to\\mcp-server-outlook-email\\data\\emails.db",
"EMBEDDING_BASE_URL": "http://localhost:11434",
"EMBEDDING_MODEL": "nomic-embed-text",
"COLLECTION_NAME": "outlook-emails",
"PROCESS_DELETED_ITEMS": "false"
}
}
}
}追跡と監視
サーバーは外部のトレースおよび監視ソリューションをサポートするように設計されています。MCPログ実装は意図的に削除され、より堅牢なトレース手法が別途実装されます。
注: 以前のログシステムを再実装しないでください。将来、新しいトレースソリューションが提供される予定です。
構成フィールドの説明:
command: 仮想環境内の Python 実行ファイルへのフルパスargs: MCP サーバー スクリプトへのフル パスを含む配列env: 設定用の環境変数MONGODB_URI: MongoDB接続文字列SQLITE_DB_PATH: SQLite データベースファイルへの絶対パスEMBEDDING_BASE_URL: OllamaサーバーのURLEMBEDDING_MODEL: 埋め込みに使用するモデルLLM_MODEL: LLM操作に使用するモデルCOLLECTION_NAME: 使用するMongoDBコレクションの名前(必須)PROCESS_DELETED_ITEMS: 削除済みアイテムフォルダからメールを処理するかどうか(オプション、デフォルト: "false")
disabled: サーバーが無効かどうか(falseである必要があります)alwaysAllow: ユーザーの確認を必要としないツールの配列autoApprove: 自動承認できるツールの配列
パスをシステム上の実際のパスに置き換えてください。env envの Windows パスには二重のバックスラッシュを使用する必要があります。
利用可能なツール
1. メール処理
指定した日付範囲のメールを処理します。
{
"start_date": "2024-01-01", # ISO format date (YYYY-MM-DD)
"end_date": "2024-02-15", # ISO format date (YYYY-MM-DD)
"mailboxes": ["All"] # List of mailbox names or ["All"] for all mailboxes
}このツールは次のことを行います。
指定された Outlook メールボックスに接続する
受信トレイと送信済みアイテムフォルダ(有効な場合は削除済みアイテムも)からメールを取得します
SQLiteデータベースにメールを保存する
Ollamaを使用して埋め込みを生成する
セマンティック検索のためにMongoDBに埋め込みを保存する
クロードでの使用例
"Process emails from February 1st to February 17th from all mailboxes"建築
サーバーはハイブリッド検索アプローチを使用します。
SQLite データベース:
プライマリメールストレージ
全文検索機能
処理状況の追跡
効率的なフィルタリング
ディレクトリが存在しない場合は自動的に作成されます
データベースのロックを防ぐために接続が適切に閉じられている
MongoDB の用途:
ベクトル埋め込みストレージ
意味的類似性検索
メタデータフィルタリング
効率的な検索
使用後は接続が適切に閉じられている
エラー処理
サーバーは、一般的な問題に関する詳細なエラー メッセージを提供します。
無効な日付形式
Outlook との接続の問題
MongoDBエラー
再試行ロジックによる生成失敗の埋め込み
SQLite ストレージエラー
自動再試行による Ollama サーバー接続の問題
リソース管理
サーバーは問題を防ぐために適切なリソース管理を実装します。
データベース接続(SQLite および MongoDB)は、サーバーの存続期間中は開いたままになり、「閉じたデータベースでは操作できません」というエラーを防止します。
接続は、サーバーがシャットダウンしたときにのみ、atexitハンドラを使用して閉じられます。
デストラクタとコンテキストマネージャは、オブジェクトがガベージコレクションされるときに接続が閉じられるようにするためのフォールバックとして使用されます。
接続管理は、リソースの使用と運用の信頼性のバランスをとるように設計されています。
Ollama などの外部サービスが一時的な接続の問題を処理するための堅牢な再試行ロジック
セキュリティノート
サーバーは指定されたメールボックスからのメールのみを処理します
すべてのデータはローカル(SQLite)とMongoDBに保存されます
ローカル Ollama サーバー以外の外部 API 呼び出しはできません
メール処理には明示的なユーザー承認が必要
MCPインターフェースを通じて機密メールデータは公開されません
デバッグ
問題が発生した場合:
メールが正常に処理されたことを確認する(process_emails の応答を確認する)
埋め込み生成のためにOllamaサーバーが稼働していることを確認する
SQLiteデータベースにアクセスできることを確認する
MongoDB接続が正常に動作していることを確認する