Inbox To Action
概要
作者による説明(英語の原文)
Agentic Gmail triage: classify, summarize, extract tasks, draft replies. Never sends.
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio
- カテゴリ: チャット・メール
インストール
使っているAIアプリを選んで、設定をコピーしてください。
チェック 3/3 合格 · あなたのパソコンで動きます
まず:どの AI を使っていますか?
使っているアプリを選ぶと、下に手順が表示されます。
Claude につなげますが、先に準備が必要です
先にパソコンへ Python (uv) を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
パソコン版 Claude アプリの設定ファイルを開く
SettingsDeveloperEdit Config
この設定を貼り付けて保存
{ "mcpServers": { "inbox-to-action": { "command": "uvx", "args": [ "inbox-to-action", "mcp" ] } } }Claude を終了してもう一度開く
試してみる
Inbox To Action を使って、私に何ができるか教えて、1 つやってみせて✓ Claude が Inbox To Action を使っていると言うか、回答に Inbox To Action のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
ChatGPT はまだ Inbox To Action につなげません
Inbox To Action はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません
代わりにできること
A · Inbox To Action につなげるアプリを使う
- 先にパソコンへ Python (uv) を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
- 先にパソコンへ Python (uv) を入れてください(1 回だけ)
- 先にパソコンへ Python (uv) を入れてください(1 回だけ)
- 先にパソコンへ Python (uv) を入れてください(1 回だけ)
B · チャット・メール の中で ChatGPT につなげる別のサーバー
同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました
- Inbox Zero✓ ChatGPT
- Agent-Native Chat✓ ChatGPT
- draw.io✓ ChatGPT
Claude Code につなげますが、先に準備が必要です
先にパソコンへ Python (uv) を入れてください(1 回だけ)
ターミナルを開く
Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く
このコマンドを貼り付けて Enter
claude mcp add inbox-to-action -- uvx inbox-to-action mcpClaude Code で /mcp と入力
Inbox To Action が一覧にあり、接続済みと表示されれば OK です
試してみる
Inbox To Action を使って、私に何ができるか教えて、1 つやってみせて✓ Claude Code が Inbox To Action を使っていると言うか、回答に Inbox To Action のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Cursor につなげますが、先に準備が必要です
先にパソコンへ Python (uv) を入れてください(1 回だけ)
Cursor の AI チャットを Agent モードで開く
試してみる
Inbox To Action を使って、私に何ができるか教えて、1 つやってみせて✓ Cursor が Inbox To Action を使っていると言うか、回答に Inbox To Action のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
VS Code につなげますが、先に準備が必要です
先にパソコンへ Python (uv) を入れてください(1 回だけ)
VS Code の AI チャットを Agent モードで開く
試してみる
Inbox To Action を使って、私に何ができるか教えて、1 つやってみせて✓ VS Code が Inbox To Action を使っていると言うか、回答に Inbox To Action のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
開発者向け:ターミナルのコマンドと JSON 設定
パソコンにインストール
Claude Code
claude mcp add inbox-to-action -- uvx inbox-to-action mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"inbox-to-action": {
"command": "uvx",
"args": [
"inbox-to-action",
"mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"inbox-to-action": {
"command": "uvx",
"args": [
"inbox-to-action",
"mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"inbox-to-action": {
"type": "stdio",
"command": "uvx",
"args": [
"inbox-to-action",
"mcp"
]
}
}
}この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
ひと目でわかる
使えるアプリ
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
パソコン上で動かせるアプリ
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月11日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント tarunlnmiit で確認済みです
- ✓ 合格
今もメンテナンスされている
コードの最終更新:4 か月前
- ✓ 合格
ライセンスがある
MITを使用
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
話し合い
質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。
ユーザーレビュー
まだレビューはありません
チャット・メールのほかのサーバーとの比較i
- このカテゴリのほかの1960件のうち91%よりスターが多い
- このカテゴリのほかの1960件のうち14%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの1960件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Inbox To Actionは安全ですか?
当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は4 か月前、最新バージョン(0.2.11)がレジストリに届いたのは4 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
代わりに使えるものは?
同じカテゴリには:Inbox Zero, Agent-Native Chat, draw.io
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Agent-Native Chat
Minimal chat-first app with durable threads, actions, and the app-agent loop
draw.io
Create draw.io diagrams in chat from Mermaid or XML, shown live and interactive. 10,000+ shapes.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
inbox-to-action
Published on PyPI and listed on the Official MCP Registry (io.github.tarunlnmiit/inbox-to-action), Glama (deployable release, Quality A), and Smithery (MCPB bundle). Registry manifests (server.json, glama.json) ship in the repo.
One command. Your inbox triaged, summarized, drafted, and turned into tasks — in a single agentic pass.
Install
pip install inbox-to-action # or: pipx install inbox-to-action
uvx inbox-to-action run --mock # zero-install trial (uv) pip install 'inbox-to-action[mcp]' # + MCP server for Claude Code docker run --rm ghcr.io/tarunlnmiit/inbox-to-action # MCP server (stdio)
Try it with zero setup: inbox-to-action run --mock (bundled sample inbox).
📖 Full documentation → [docs/](docs/README.md) — install · providers · Gmail OAuth · multi-account · integrations · MCP & Skill · config · troubleshooting · testing checklist. Quick version: SETUP.md.
Why this exists
Most people process their inbox with four separate tools: an email client to read, a task manager to capture to-dos, a calendar to block time, and (increasingly) an AI summarizer to make sense of long threads. Every message gets handled four times.
inbox-to-action collapses all four into one agentic pass. Run one command and get a unified triage report, drafted replies saved to Gmail, and extracted tasks — without ever leaving the terminal, and without ever sending an email automatically.
🔒 Drafts only — never sends
This tool cannot send email. It requests only the Gmail readonly + compose scopes; there is no send scope and no send API call anywhere in the codebase (enforced by a test). Replies are saved as Gmail drafts for you to review and send.
Email bodies flow into the LLM prompt, so a hostile email could try to steer its own classification or a drafted reply (prompt injection). Because every draft is saved for human review and nothing is ever sent automatically, the worst case is a draft you choose not to send. See SECURITY.md.
🌐 What leaves your machine
inbox-to-action reads your email. Where your email content goes for classification depends on the LLM provider you pick — and the default (`openrouter`) is a cloud provider, so an out-of-the-box run sends your subjects + bodies to a third party.
PROVIDER= | Email content goes to | Key |
|---|---|---|
ollama | Nowhere — fully local 🔒 | none |
claude / host | Your existing Claude Code / Anthropic session (keyless) | none |
openrouter (default) · openai · nim · anthropic | Third-party cloud ☁️ | API key |
Want privacy? Use ollama (local) or claude (keyless) so nothing is transmitted to a third party. --telegram / --todoist also push subjects/tasks off-box (opt-in). Full breakdown → [PRIVACY.md](PRIVACY.md).
Note:
triage-report.mdandtasks.mdare written to your working directory and
contain private email content. If you run inside a git repo, add them to
.gitignore.
What it does
- Fetches unread email from Gmail (last 24h by default).
- Classifies each into
action_needed·fyi·newsletter·noise. - Summarizes long threads (>500 words) into two lines.
- Extracts tasks with deadlines → local
tasks.md(optional Todoist via--todoist). - Drafts replies for
action_neededmail → saved as Gmail drafts. - Flags emails that need a calendar block.
Final output: a single `triage-report.md` with a section per category, drafted-reply previews, a tasks summary, and a calendar list.
Architecture — the agent loop
The model's own classification of each email drives which tools fire next — the pipeline is not hardcoded. The same tool functions back the CLI agent and the MCP server.
flowchart TD
CLI[main.py · typer] --> AGENT[agent.py · agentic loop] AGENT -->|model picks tools per email| T1[classify_email] AGENT --> T2[summarize_thread] AGENT --> T3[extract_tasks] AGENT --> T4[draft_reply → Gmail draft] AGENT --> T5[flag_for_calendar] T1 & T2 & T3 & T4 & T5 --> LLM[llm_client.py · pluggable providers] LLM --> P1[OpenRouter / Ollama / NIM / OpenAI OpenAI-compatible HTTP] LLM --> P2[Anthropic · official SDK · keyless via ant auth login] AGENT --> REPORT[report.py → triage-report.md]
fetch → for each email: classify ─┬─ action_needed → extract_tasks + draft_reply + flag_calendar ├─ fyi / newsletter / noise → record only └─ (long thread) → summarize → render triage-report.md
Quick start (2 minutes)
git clone https://github.com/tarunlnmiit/inbox-to-action.git && cd inbox-to-action
python3 -m venv .venv && source .venv/bin/activate pip install -e '.[mcp]' # installs the inbox-to-action command cp .env.example .env
This installs an inbox-to-action console command (and the python -m inbox_to_action.mcp_server entry point used by Claude Code / Glama).
Free-first: run end-to-end on zero spend
Pick whichever keyless/free path you like — all run the full pipeline at no cost:
Option A — `claude` CLI (keyless, fastest; uses your Claude Code login):
PROVIDER=claude inbox-to-action run --mock # no API key; needs `claude` on PATH
Option B — Ollama (truly keyless, fully local):
ollama serve # in another terminal
ollama pull llama3.1 PROVIDER=ollama inbox-to-action run --mock # uses bundled sample inbox
Option C — OpenRouter free model (free signup key):
# put OPENROUTER_API_KEY in .env (free models, $0 spend)
inbox-to-action run --mock # default PROVIDER=openrouter
Option D — inside Claude Code (keyless, Claude Code is the LLM): see below.
--mock uses the bundled sample inbox so you can see a full report with zero Gmail setup. Drop --mock once you've authorized Gmail. Free OpenRouter models are often rate-limited; the client auto-rotates a fallback list and retries with backoff.
Real inbox
# 1. Create OAuth credentials in Google Cloud Console (Desktop app),
download client_secret.json into the project, then:
inbox-to-action auth # one-time consent (read + compose only) inbox-to-action run --since 24h --no-drafts # safe first pass: report only, no writes inbox-to-action run --since 24h # triage the last day (creates Gmail drafts) inbox-to-action run --since 3d --max 40 --todoist
--no-drafts— classify, summarize, extract tasks, write the report, but create no Gmail drafts. Recommended for a first run.--max N— cap emails per account (default 25) to bound cost/volume.- Automated no-reply senders (security alerts, notifications) never get a drafted reply — the report notes them instead.
Telegram summary (--telegram)
Push a concise summary to your phone after each run — counts, action-needed subjects (with draft-ready status), extracted tasks, and a link to your Gmail Drafts.
# 1. In Telegram, message @BotFather → /newbot → copy the bot token.
2. Message your new bot once (say "hi"), then open:
https://api.telegram.org/bot /getUpdates → copy "chat":{"id": ...}.
3. Put both in .env:
TELEGRAM_BOT_TOKEN=... TELEGRAM_CHAT_ID=...
inbox-to-action run --since 24h --telegram
Off by default (opt-in flag). A send failure never breaks the run. Privacy: this sends email subjects + extracted tasks to Telegram's servers (into your own chat). It's notification only — it never sends email.
Multiple accounts (Gmail + Google Workspace)
Declare accounts in config.json — one merged report, each email tagged with its account. Personal Gmail and Workspace both use the Gmail path (Workspace may need your admin to allow the OAuth app).
{
"accounts": [ { "id": "personal", "kind": "gmail", "label": "Personal Gmail" }, { "id": "work", "kind": "gmail", "label": "Workspace" } ] }
inbox-to-action auth --account personal # authorize each account once
inbox-to-action auth --account work inbox-to-action run --since 24h # fetches + triages across all accounts
Multiple personal Gmail accounts can reuse one client_secret.json — each gets its own cached token (~/.config/inbox-to-action/tokens/ .json). With no accounts block, the tool uses a single default Gmail account (backwards compatible).
Use inside Claude Code (keyless)
When run inside Claude Code, Claude Code is the LLM — no provider key needed. Two integration paths ship in this repo:
MCP server
Exposes IO-only tools (fetch_emails, save_gmail_draft, append_tasks, write_report). Claude Code does the classify/summarize/extract/draft reasoning itself and calls these.
# after `pip install -e '.[mcp]'`
claude mcp add inbox-to-action -- python -m inbox_to_action.mcp_server
This is the same stdio server that MCP registries (e.g. Glama) build from the bundled Dockerfile (CMD python -m inbox_to_action.mcp_server).
Skill
Copy skills/inbox-to-action/ into your Claude Code skills directory, then type /inbox-to-action. The skill instructs Claude Code to fetch, reason, draft, and write the report — keyless.
Anthropic (keyless via ant auth login)
The Anthropic provider uses the official SDK with a zero-arg client, so it picks up your ant auth login OAuth profile — no `ANTHROPIC_API_KEY` required:
ant auth login
PROVIDER=anthropic inbox-to-action run --mock # default model: claude-opus-4-8
Configuration
All keys live in .env (.env.example is committed). Switch providers with PROVIDER: openrouter (default) · ollama · nim · openai · anthropic · claude · host.
Configure triage (make it *yours*)
The default buckets are generic — newsletters and job alerts are treated as no-action. Override that with config.json (copy config.example.json). Two layers:
- `rules` — deterministic
field → categoryoverrides applied before the LLM (fast, free, exact). First match wins.field∈sender | subject | body | any. - `triage_instructions` — freeform guidance injected into the classifier prompt for nuance the model interprets.
{
"triage_instruct