work-assistant
Work Assistant
メールは、人またはインテリジェントエージェントが利用できるローカルアーカイブになります。
プロバイダー非依存 · 複数メールボックス · CLI · MCP · 人によるレビュー
デモを始める · エージェントを接続する · セキュリティを理解する · プロジェクトの状態
Work Assistantとは
Work Assistantは、インテリジェントなツールを使ってメールを整理し活用するためのローカルシステムです。
このシステムは、1つまたは複数のメールボックスからメッセージを取得し、それらを正規化してローカルなSQLiteアーカイブに保存します。このアーカイブから、連絡先とやり取りのビューを再構築します。人はコマンドラインからシステムを利用できます。CodexやClaudeのようなエージェントは、MCPプロトコルを通じて利用できます。
Work Assistantは、従来のメールクライアントではなく、単純なスキルでもありません。
core は、アカウント、アーカイブ、検証、提案されたコンテンツを管理します。
CLI は、モデルなしで人がコアを使用できるようにします。
MCPサーバー は、エージェントに構造化されたツールを提供します。
skill は、エージェントに、許可された範囲内でこれらのツールを使う方法を教えます。
adapter は、特定のメールサービスをコアに接続します。
公開コアはメールを送信しません。準備された返信は、別途承認されたアクションが行われるまで、ローカルの候補のままです。
機能 | 意味 |
ローカルメモリ | 正規化されたメッセージはコンピューター上に残り、完全性のハッシュを保持します。 |
エージェント用サーフェス | MCP は型付けされたコマンドを公開し、ゲートウェイにアーカイブへの直接アクセスを渡しません。 |
人間による管理 | 公開コアはローカルコンテンツを準備しますが、送信コマンドを公開しません。 |
Related MCP server: mail-index
存在する理由
メールボックスには、単なる個々のメッセージ以上のものが含まれています。会話、人、添付ファイル、決定、そして未完了のタスクが含まれています。一般的なクライアントは現在のメールをよく表示しますが、この履歴を実践的な知識として再利用することは困難です。
Work Assistantは、3つのレベルを分離しています。
ローカルアーカイブ:取得したものを保存し、その整合性を検証します。
ナレッジビュー:アーカイブから連絡先と関係性を再構築します。派生的なもので、再生成できます。
エージェント用サーフェス:モデルが、制御された操作を通じてコンテンツを検索・読み取り・準備できるようにします。
ナレッジビューは元の情報源ではなく、それだけでは検証済みのバックアップにはなりません。真のバックアップには、コピー、保存、検証、復元の確認も必要です。
仕組み
flowchart LR
Persona[Persona] --> Agente[Agente intelligente]
Agente -->|strumenti MCP| Gateway[Gateway MCP]
Gateway -->|IPC locale autenticato| Broker[Broker locale]
Broker --> Archivio[(Archivio locale)]
Broker --> Vista[Vista di conoscenza]
Broker --> Candidati[Candidati di risposta]
Adapter[Adapter del provider] --> Broker
classDef paper fill:#f7f2e7,stroke:#294b37,color:#172019;
classDef sage fill:#dce8d8,stroke:#294b37,color:#172019;
classDef accent fill:#aa593e,stroke:#aa593e,color:#f7f2e7;
class Persona,Archivio,Vista,Candidati paper;
class Gateway,Broker,Adapter sage;
class Agente accent;ブローカーは信頼の境界です。平文データを読み、疑似匿名化ルールを適用し、宣言されたスキーマだけをゲートウェイに返します。プロバイダーの識別子は不透明な参照になります。認識できないメタデータは、この境界を超えません。
デモを試す
このデモは、合成のIDとメッセージのみを使用します。認証情報や実際のメールボックスは必要ありません。
前提条件
Python 3.11以降;
Git;
macOS、Linux、Windows。
1. プロジェクトをインストールする
git clone https://github.com/Wulfgardr/work-assistant.git
cd work-assistant
python3 -m venv .venvmacOSまたはLinuxで環境をアクティベートします:
source .venv/bin/activateWindows PowerShell の場合:
.venv\Scripts\Activate.ps1Work Assistantをインストールする:
python -m pip install .2. 設定を作成する
work-assistant --config work-assistant.toml initこのコマンドは、OS固有のデータフォルダを作成します。アーカイブ、キー、IDレジストリは、リポジトリ内には配置されません。
3. 合成メールボックスを読み込む
work-assistant --config work-assistant.toml sync --account personal
work-assistant --config work-assistant.toml sync --account team
work-assistant --config work-assistant.toml list
work-assistant --config work-assistant.toml knowledge
work-assistant --config work-assistant.toml verifyverify コマンドは、SQLiteの整合性とメッセージのハッシュを検証します。バックアップが復元可能であることを示すものではありません。
Work Assistantをエージェントと一緒に使う
Codex、Claude、その他のMCPクライアントは、同じサーフェスを使用します。モデルはCLIに組み込まれていません。
MCPサポートをインストールする:
python -m pip install '.[mcp]'1. ローカルブローカーを起動する
信頼できるローカルターミナルを開いて、起動します:
work-assistant --config work-assistant.toml brokerブローカーは起動したままである必要があります。利用できない場合、MCPゲートウェイはアーカイブを直接読み取らずに停止します。
別のターミナルで、必要な2つのパスを取得します:
work-assistant --config work-assistant.toml broker-info2. Codex にサーバーを登録する
broker-info の値で2つのプレースホルダーを置き換えます:
codex mcp add work-assistant -- \
"$PWD/.venv/bin/work-assistant" \
mcp \
--broker-address '<BROKER_ADDRESS>' \
--broker-auth-file '<BROKER_AUTH_FILE>'Windowsでは .venv\Scripts\work-assistant.exe を使用します。
リクエストの例:
Work Assistantを利用します。秘匿モードを確認し、
personalメールボックスを同期し、最新のメッセージを表示し、返信候補を準備してください。何も送信しないでください。
任意のスキルは skills/work-assistant にあります。スキルは運用ルールを追加しますが、MCPサーバーには代わりません。
3. Claude Codeにサーバーを登録する
claude mcp add work-assistant -- \
"$PWD/.venv/bin/work-assistant" \
mcp \
--broker-address '<BROKER_ADDRESS>' \
--broker-auth-file '<BROKER_AUTH_FILE>'Claude Desktopの場合は、同等の stdio サーバーを設定します:
{
"mcpServers": {
"work-assistant": {
"command": "/percorso/assoluto/work-assistant/.venv/bin/work-assistant",
"args": [
"mcp",
"--broker-address",
"<BROKER_ADDRESS>",
"--broker-auth-file",
"<BROKER_AUTH_FILE>"
]
}
}
}エージェントなしでCLIを使う
CLIは決定的です。モデルを含まず、自然なリクエストを解釈しません。
work-assistant --config work-assistant.toml list --account personal --limit 10
work-assistant --config work-assistant.toml show --account personal --id p-001ローカルの返信候補を保存するには:
printf 'Grazie. Verifico il documento entro venerdì.\n' > risposta.txt
work-assistant --config work-assistant.toml draft-candidate \
--account personal \
--to sam@example.test \
--subject 'Re: Revisione del progetto' \
--in-reply-to p-001 \
--body-file risposta.txt応答には sent: false が含まれます。プロバイダーには何も書き込まれません。
ターミナルにアクセスできるエージェントはMCPを使用する必要があります。SQLiteを直接読んだり、CLIの平文出力を直接読んではいけません。
複数のメールボックスを設定する
[accounts] セクションの各テーブルが、独立したメールボックスを表します:
schema_version = 1
data_dir = "/percorso/esterno/al/repository"
[privacy]
mode = "all"
default_action = "pseudonymize"
[accounts.personal]
provider = "demo"
source = "./examples/demo-mailbox.jsonl"
address = "alex@example.test"
[accounts.team]
provider = "demo"
source = "./examples/team-mailbox.jsonl"
address = "team@example.test"リポジトリには、デモ用のアダプターのみが含まれています。実際のアダプターは、docs/PROVIDER_ADAPTERS.md に記述された契約を実装する必要があります。
Zimbra と Carbonio
公開バージョンには、HARファイルからZimbraまたはCarbonioのセッションを準備するためのローカルオンボーディングが含まれています。実際に動作するZimbraアダプターは含まれていません。
sequenceDiagram
participant A as Agente
participant P as Persona
participant B as Browser
participant C as CLI locale
A->>P: Spiega i passaggi e controlla lo stato
P->>B: Esegue login e autenticazione a due fattori
P->>C: Importa localmente il file HAR
C-->>P: Conferma solo nomi dei cookie e stato
Note over A,C: Password, OTP, HAR e valori dei cookie non entrano nel modelloローカルコマンドは次のとおりです:
work-assistant --config work-assistant.toml import-zimbra-har \
--account work \
--har /percorso/locale/session.harこのコマンドはHARファイルを削除しません。検証後は、その機密性の高い内容に適した手順でエクスポートを移動または削除してください。
データの保護方法
Work Assistantには、次の3つのモデルが用意されています:
モード | 動作 |
| 変換はありません。 エージェントに見えるコンテンツはモデルプロバイダーに届く可能性があります。 |
| 構造化された識別子と認識されたテキストを疑似匿名化します。これは設定例の値です。 |
| 送信者ごとに順序付けされたルールを適用します。最初に一致したルールが優先されます。 |
選択的ルールの例:
[privacy]
mode = "selective"
default_action = "pseudonymize"
[[privacy.sender_rules]]
pattern = "newsletter@example.test"
action = "allow_raw"
[[privacy.sender_rules]]
pattern = "*@sensitive.example"
action = "pseudonymize"エージェントの応答には、ルールのリテラル値ではなく、不透明なIDのみが含まれます。
任意のIDレジストリは、デフォルトで <data_dir>/privacy/entities.json にあります。POSIXシステムでは、ユーザーが所有し、パーミッション 0600 である必要があります。
疑似匿名化は可逆であり、匿名性を保証するものではありません。まれな事実、文脈、文体、認識できない用語が、人物を特定する可能性があります。
ブローカーが本当の境界となるためには、データフォルダはエージェントが読み取れるワークスペースの外でなければなりません。ブローカーは、管理されたデモのみを対象とした明示的かつ安全でないオーバーライドがない限り、この設定を拒否します。
実際のメッセージを使用する前に SECURITY.md をお読みください。
Daybreak セキュリティレビュー
2026年8月24日、Daybreakレビューは、ブローカー、疑似匿名化、IPC、MCPサーフェスを分析しました。このレビューでは、中程度の重要度が1件、低重要度が6件の、計7件の問題が発見されました。
バージョン 0.3.0 では、次の修正が適用されています。
データとキーをデフォルトでリポジトリの外に配置;
保護されたストアがエージェントのワークスペースにある場合、ブローカーが拒否;
外部IDレジストリとパーミッションの確認;
クローズドリストのMCPスキーマ、不透明な参照、プロバイダーのメタデータを除外;
選択的ルール用の不透明な識別子;
固定ワーカー数とアイドル接続のタイムアウト;
接続、認証、リクエスト、レスポンス全体のタイムアウト。
報告書、証拠、残された制限は、docs/security/DAYBREAK-REVIEW.md にあります。
バックアップと復元
Work Assistantは、正規化されたメッセージとそのハッシュを保持します。これにより、アーカイブを検証可能になりますが、自動的に堅牢なバックアップになるわけではありません。
検証済みバックアップを宣言するには、以下を定義し実証する必要があります。
含めるメッセージと添付ファイル;
暗号化と鍵の管理;
頻度、保持、バージョン管理;
ハッシュの検証;
隔離された環境での復元手順;
期待されるコンテンツと復元されたコンテンツの比較。
verify 関数は、現在のアーカイブを検査します。復元を実行しません。
プロジェクトの状態
Work Assistantは アルファ プロジェクトです。
利用可能:
プロバイダーに依存しないコア;
複数メールボックスの設定;
合成デモアダプター;
ハッシュ付きSQLiteアーカイブ;
連絡先とやり取りのローカルビュー;
CLI;
MCPゲートウェイとローカルブローカー;
可逆的な疑似匿名化;
エージェント用スキル;
ZimbraとCarbonioの準備オンボーディング。
利用不可:
実際のプロバイダー向けの本番アダプター;
メールの送信;
バックアップと復元の完全な証明;
添付ファイルのバイナリコンテンツの疑似匿名化;
匿名性の保証。
開発とコントリビューション
python -m pip install '.[dev,mcp]'
pytest
python scripts/privacy_check.py
work-assistant benchmark-privacy --iterations 50コード、テスト、スクリーンショット、issue、プルリクエストでは、合成データのみを使用してください。プロジェクトのルールは CONTRIBUTING.md を読んでください。
ライセンス
Work Assistant は MIT ライセンスの下で配布されています。
This server cannot be deployed
Maintenance
Related MCP Connectors
Email for AI agents: read, search and send from your Gmail, Outlook, Yahoo, iCloud or IMAP inbox.
Your own AI reads, searches and drafts in your mailbox, on your Windows computer.
- Lettio MCPOAutheu.lettio
Private, EU-hosted email for AI agents over JMAP: read, search, reply, organize, send.
Stateful email for AI agents — read inboxes, reply in-thread, draft with approval.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage multiple email accounts with secure credentials, local full-text search, thread-aware replies, and automation.4 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to query and recall your entire Gmail inbox locally, providing fast summarization and semantic search without relying on Gmail's search API.68 npm4MIT
- AlicenseAqualityBmaintenanceReads and searches local email archives (.mbox or .eml) with full MIME parsing, enabling queries about senders, subjects, dates, and bodies while keeping all data on your machine.3188 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search a local email archive using hybrid keyword and semantic search, and retrieve individual emails with thread context.1MIT