Skip to main content
Glama
Wulfgardr

work-assistant

by Wulfgardr

Work Assistant

メールは、人またはインテリジェントエージェントが利用できるローカルアーカイブになります。

プロバイダー非依存 · 複数メールボックス · CLI · MCP · 人によるレビュー

デモを始める · エージェントを接続する · セキュリティを理解する · プロジェクトの状態


図解:メールボックスからローカルアーカイブ、ブローカー、エージェントへ

Work Assistantとは

Work Assistantは、インテリジェントなツールを使ってメールを整理し活用するためのローカルシステムです。

このシステムは、1つまたは複数のメールボックスからメッセージを取得し、それらを正規化してローカルなSQLiteアーカイブに保存します。このアーカイブから、連絡先とやり取りのビューを再構築します。人はコマンドラインからシステムを利用できます。CodexやClaudeのようなエージェントは、MCPプロトコルを通じて利用できます。

Work Assistantは、従来のメールクライアントではなく、単純なスキルでもありません。

  • core は、アカウント、アーカイブ、検証、提案されたコンテンツを管理します。

  • CLI は、モデルなしで人がコアを使用できるようにします。

  • MCPサーバー は、エージェントに構造化されたツールを提供します。

  • skill は、エージェントに、許可された範囲内でこれらのツールを使う方法を教えます。

  • adapter は、特定のメールサービスをコアに接続します。

公開コアはメールを送信しません。準備された返信は、別途承認されたアクションが行われるまで、ローカルの候補のままです。

3つのカード:ローカルメモリ、エージェント用サーフェス、人間による管理

機能

意味

ローカルメモリ

正規化されたメッセージはコンピューター上に残り、完全性のハッシュを保持します。

エージェント用サーフェス

MCP は型付けされたコマンドを公開し、ゲートウェイにアーカイブへの直接アクセスを渡しません。

人間による管理

公開コアはローカルコンテンツを準備しますが、送信コマンドを公開しません。

Related MCP server: Mailing Manager MCP

存在する理由

メールボックスには、単なる個々のメッセージ以上のものが含まれています。会話、人、添付ファイル、決定、そして未完了のタスクが含まれています。一般的なクライアントは現在のメールをよく表示しますが、この履歴を実践的な知識として再利用することは困難です。

Work Assistantは、3つのレベルを分離しています。

  1. ローカルアーカイブ:取得したものを保存し、その整合性を検証します。

  2. ナレッジビュー:アーカイブから連絡先と関係性を再構築します。派生的なもので、再生成できます。

  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 .venv

macOSまたはLinuxで環境をアクティベートします:

source .venv/bin/activate

Windows PowerShell の場合:

.venv\Scripts\Activate.ps1

Work 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 verify

verify コマンドは、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-info

2. 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つのモデルが用意されています:

モード

動作

off

変換はありません。 エージェントに見えるコンテンツはモデルプロバイダーに届く可能性があります。

all

構造化された識別子と認識されたテキストを疑似匿名化します。これは設定例の値です。

selective

送信者ごとに順序付けされたルールを適用します。最初に一致したルールが優先されます。

選択的ルールの例:

[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 ライセンスの下で配布されています。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables LLM clients to read and search email via IMAP with tools for listing folders, searching messages, and fetching message content. It supports pagination, snippets, and thread context, and is designed for local AI workflows.
    10
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to query and recall your entire Gmail inbox locally, providing fast summarization and semantic search without relying on Gmail's search API.
    105
    4
    MIT

View all related MCP servers

Related MCP Connectors

  • Authenticated email gateway for AI agents — per-agent inboxes, HITL approval, SPF/DKIM verified.

  • Authenticated email gateway for AI agents — per-agent inboxes, HITL approval, SPF/DKIM verified.

  • Email for AI agents — send, receive as a webhook, manage domains, templates, routing.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Wulfgardr/work-assistant'

If you have feedback or need assistance with the MCP directory API, please join our Discord server