MCP Email Service について
MCP Email Serviceは、自然言語の依頼からSMTPメールを送るMCPサーバーとクライアントです。spaCyで依頼を解析し、耐量子暗号とAES-256-GCMでクライアントとサーバー間の通信を保護します。
主な機能
- 01自然言語によるメール依頼の解析
- 02SMTP経由のメール送信
- 03spaCyによる依頼文の処理
- 04耐量子暗号とAES-256-GCMによる通信暗号化
活用シーン
- 01自然言語の入力からメールを作成して送信
- 02依頼文から宛先、件名、本文を指定
- 03暗号化された通信によるメール依頼の送信
MCP 対応
MCPサーバーとクライアントを備え、クライアントがメール依頼をサーバーに送り、サーバーがメール送信機能を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP メールサービス
メール送信に対応した、安全な Model Context Protocol(MCP)サーバーおよびクライアントアプリケーションです。ポスト量子暗号(CRYSTALS-Kyber、Falcon、SPHINCS+)、AES-256-GCM 暗号化、ユーザーリクエスト処理のための spaCy ベースの自然言語処理(NLP)を備えています。Ubuntu Linux 向けに設計されており、量子耐性のある通信と堅牢なメール処理を実現します。
目次
機能
- ポスト量子暗号:鍵交換には CRYSTALS-Kyber、デジタル署名には Falcon、予備の署名アルゴリズムには SPHINCS+ を使用します。
- セキュアな暗号化:メッセージの認証付き暗号化に AES-256-GCM を使用します。
- 自然言語処理:spaCy(
en_core_web_sm)を活用し、メールリクエストを堅牢に解析します。 - 実際のメール送信:SMTP サーバー(Gmail など)と連携して、実際にメールを配信します。
- 非同期通信:効率的なサーバーとクライアント間の通信を実現するため、
asyncioで構築されています。 - Ubuntu Linux のサポート:詳細なセットアップ手順を備え、Ubuntu 22.04 以降に最適化されています。
前提条件
- オペレーティングシステム:Ubuntu Linux 22.04 以降。
- Python:バージョン 3.8 以降。
- インターネット接続:メール送信と依存関係のインストールに必要です。
- Git:リポジトリのクローンに使用します。
- SMTP アカウント:メール送信用の有効なメールアカウント(Gmail のアプリパスワードなど)。
環境のセットアップ
-
システムを更新する:
sudo apt-get update sudo apt-get upgrade -y -
システム依存関係をインストールする:
sudo apt-get install -y python3 python3-pip python3-dev build-essential libssl-dev libffi-dev python3-venv git cmake ninja-build -
リポジトリをクローンする:
git clone https://github.com/<your-username>/mcp-email-service.git cd mcp-email-service
依存関係のインストール
このアプリケーションは Python ライブラリに依存しており、ポスト量子暗号のためにコンパイル済み C ライブラリを任意で使用します。すべての依存関係は、付属の setup.sh スクリプトを使用してインストールします。
Python の依存関係
pqcrypto==0.1.1:ポスト量子暗号(Kyber、Falcon、SPHINCS+)。pyyaml==6.0.1:YAML 設定の解析。spacy==3.7.2:ユーザーリクエストの処理に使用する NLP。cryptography==42.0.5:AES-256-GCM 暗号化。
オプションの C ライブラリ
liboqs:お使いのプラットフォームでpqcryptoのホイールを利用できない場合に必要です。必要に応じて、セットアップスクリプトが自動的にコンパイルします。
インストール手順
-
セットアップスクリプトを実行する:
chmod +x setup.sh ./setup.shこのスクリプトは、次の処理を行います。
- 仮想環境(
venv)を作成します。 requirements.txtから Python の依存関係をインストールします。- spaCy の
en_core_web_smモデルをダウンロードします。 pqcryptoのインストールに失敗した場合、liboqsとliboqs-pythonをコンパイルします。pqcryptoとcryptographyがインストールされていることを確認します。
- 仮想環境(
-
仮想環境を有効にする:
source venv/bin/activate
設定
-
サーバー設定:
server/config.yamlを編集します。server: host: "0.0.0.0" port: 8765 email: server: "smtp.gmail.com" port: 587 user: "[email protected]" password: "your-app-password"- メール設定:
user:メールアドレス。password:アプリパスワード(Gmail の場合は、Google アカウントの設定で「セキュリティ」>「2 段階認証プロセス」>「アプリパスワード」から生成します)。serverとport:SMTP サーバーの詳細(Gmail の場合はsmtp.gmail.com:587など)。
-
クライアント設定:
client/config.yamlを編集します。server: host: "localhost" port: 8765hostとportをサーバーの設定に合わせます。
-
設定ファイルを保護する:
server/config.yamlには機密性の高い認証情報が含まれるため、保護されていることを確認します(例:chmod 600 server/config.yaml)。
インストール
環境と依存関係を設定した後:
-
仮想環境を確認する:
source venv/bin/activate python -c "import pqcrypto, spacy, cryptography; print('All dependencies installed')" -
設定をテストする:
server/config.yamlとclient/config.yamlが正しく設定されていることを確認します。- SMTP サーバーへのネットワークアクセスを確認します。
使用方法
-
アプリケーションを起動する:
chmod +x run.sh ./run.sh- MCP サーバーをバックグラウンドで、クライアントをフォアグラウンドで起動します。
- または、個別に実行します:
source venv/bin/activate python server/mcp_server.py & python client/mcp_client.py
-
クライアントを操作する:
- クライアントは自然言語での入力を求めます。
- 「Send an email to [email protected] with subject Hello and message This is a test.」のようなリクエストを入力します。
quitと入力すると終了します。
-
サーバーログ:
- サーバーは接続メッセージとエラーメッセージをコンソールに出力します。
- 問題のデバッグにはログを確認してください。
使用例
クライアントは spaCy を使って自然言語のリクエストを処理します。以下に入力例とその結果を示します:
-
基本的なメール:
Input: Send an email to [email protected] saying Hello, how are you? Output: Server response: {'status': 'success', 'message': 'Email sent'}[email protected]宛てに、件名「Default Subject」、本文「Hello, how are you?」のメールを送信します。
-
件名付きメール:
Input: Email [email protected] with subject Meeting Tomorrow and message Let's meet at 10 AM. Output: Server response: {'status': 'success', 'message': 'Email sent'}[email protected]宛てに、件名「Meeting Tomorrow」、本文「Let's meet at 10 AM.」のメールを送信します。
-
複雑なリクエスト:
Input: Send a message to [email protected] with title Project Update and content Please review the latest report. Output: Server response: {'status': 'success', 'message': 'Email sent'}[email protected]宛てに、件名「Project Update」、本文「Please review the latest report.」のメールを送信します。
-
無効なメールアドレス:
Input: Send an email to invalid saying Test Output: Server response: {'status': 'success', 'message': 'Email sent'}- 宛先として
[email protected]を使用します。
- 宛先として
セキュリティ
- 耐量子暗号:
- CRYSTALS-Kyber (ML-KEM):量子耐性のある暗号化のための鍵交換を保護します。
- Falcon:認証用の主要なデジタル署名を提供します。
- SPHINCS+:冗長性を確保するための予備署名アルゴリズムです。
- 共通鍵暗号化:
- AES-256-GCM:Kyber から派生した鍵を使用して、メッセージの機密性、完全性、真正性を確保します。
- 設定のセキュリティ:
- メールの認証情報を保護するため、
server/config.yamlを保護してください。
- メールの認証情報を保護するため、
- ネットワークセキュリティ:
- 信頼できるネットワーク上、またはファイアウォールの内側でサーバーを実行してください。
- SMTP 接続では TLS の使用を検討してください(Gmail ではすでに有効になっています)。
トラブルシューティング
- メールの送信に失敗する場合:
server/config.yamlの認証情報と SMTP 設定を確認してください。- メールプロバイダーがアプリパスワードを許可していることを確認してください(Gmail の場合は、2 段階認証を有効にします)。
- SMTP エラーがないかサーバーログを確認してください。
- pqcrypto のインストールに失敗する場合:
setup.shを再実行して、liboqsとliboqs-pythonをコンパイルしてください。cmakeとninja-buildがインストールされていることを確認してください。
- spaCy の問題:
en_core_web_smモデルを確認してください:python -m spacy download en_core_web_sm。- メモリが十分にあることを確認してください(spaCy には約 200MB が必要です)。
- 接続エラー:
- ホストとポートについて、
client/config.yamlがserver/config.yamlと一致していることを確認してください。 - サーバーが実行中か確認してください(
ps aux | grep mcp_server.py)。
- ホストとポートについて、
- 一般的なデバッグ:
- 問題を切り分けるため、サーバーとクライアントを個別に実行してください。
mcp_server.pyまたはmcp_client.pyにprint文を追加して、詳細なログを有効にしてください。
コントリビューション
コントリビューションを歓迎します!以下の手順に従ってください:
- リポジトリをフォークします。
- フィーチャーブランチを作成します(
git checkout -b feature/your-feature)。 - 変更をコミットします(
git commit -m 'Add your feature')。 - ブランチにプッシュします(
git push origin feature/your-feature)。 - プルリクエストを作成します。
コードが PEP 8 に準拠し、該当する場合はテストが含まれていることを確認してください。
ライセンス
このプロジェクトは MIT ライセンスの下で公開されています。詳細については、LICENSE ファイルを参照してください。
MIT License
Copyright (c) 2025 <Your Name>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。