プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Gmail Tidy MCP

作者:imkathバージョン 0.5.1i★ –iパソコンで動く
レジストリ名io.github.imkath/gmail-tidy-mcp

インストール

概要

作者による説明(英語の原文)

Organize Gmail accounts: threads, attachments, labels, filters, drafts. Never sends or deletes.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: チャット・メール

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • レジストリには、入力が必要なキーは載っていません。

必要なもの

  • npmNode.jsのインストール(npxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "gmail-tidy": {
      "command": "npx",
      "args": [
        "-y",
        "gmail-tidy-mcp"
      ]
    }
  }
}

ターミナルでこれを実行します

claude mcp add gmail-tidy -- npx -y gmail-tidy-mcp

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "gmail-tidy": {
      "command": "npx",
      "args": [
        "-y",
        "gmail-tidy-mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "gmail-tidy": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "gmail-tidy-mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント imkath で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

チャット・メールのほかのサーバーとの比較i

  • このカテゴリのほかの1838件のうち0%よりスターが多い
  • このカテゴリのほかの1838件のうち93%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの1838件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Gmail Tidy MCPは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.5.1)がレジストリに届いたのは昨日です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。

代わりに使えるものは?

同じカテゴリには:Vexa, emailmd, MCP WhatsApp Cloud

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Vexa

作者:Vexa-ai

Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.

クラウドで動く★ 2,949Apache-2.02 か月前更新
インストール

emailmd

作者:anypost

Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.

パソコンでもクラウドでも★ 1,385MIT32 日前更新
インストール

MCP WhatsApp Cloud

作者:codespar

MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API

パソコンで動く★ 277MIT5 か月前更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

gmail-tidy-mcp

An MCP server that lets your AI assistant read and organize several Gmail accounts at once: search, read, label, archive, set up filters and write drafts.

It cannot send or delete email. Not "it asks first": there is no tool for it, and a test fails the build if a send or delete call ever shows up in the code.

Why

Most Gmail MCP servers hand the model full control of your mailbox, including sending, and keep OAuth tokens in plain text on disk. That is a lot of trust to give a model that also reads emails written by strangers.

This one is built around a smaller promise: the assistant can help you get your inbox in order, but it can't send anything or delete anything.

What it can do

AreaTools
Accountslist_accounts, check_accounts, connect_account, finish_connect_account
Readingsearch_emails (Gmail search syntax), search_all_accounts (one search, every account), get_email (lists attachments), get_thread (a whole conversation, oldest first, quoted history trimmed), get_attachment (text, .gz and .zip are read inline, e.g. DMARC reports; anything else, like a PDF, is saved to ~/Downloads/gmail-tidy-mcp), sender_stats (who writes most, by address and domain), newsletters (mailing lists by volume with the unsubscribe link each declares; it never unsubscribes for you)
Labelslist_labels, create_label (nest with Parent/Child), update_label (rename, recolor with the Gmail palette, show or hide in the sidebar)
Organizingorganize_emails: add or remove labels by ID or by search, up to 5,000 messages at a time. Archive = remove INBOX, mark as read = remove UNREAD
Filterslist_filters, create_filter, delete_filter. A filter that skips the inbox needs an explicit skip_inbox: true
Draftscreate_draft, optionally as a reply inside a thread and with local files attached; list_drafts; update_draft edits an existing draft (only the fields you pass change, the thread and current attachments stay). You send it yourself from Gmail
Settingsset_signature: changes only the signature, never how mail goes out
Auditrecent_changes: every change this server made, to review or undo a session

Each account gets a short label, so you can say things like "archive every newsletter older than a month in *work*".

What it will not do

  • Send, reply, forward or delete email, or move it to Trash or Spam.
  • Give the model a way to add those later: the tools are fixed in code and the model cannot call arbitrary Gmail endpoints.

Google has no scope that allows drafts but not sending, so the server asks for gmail.modify (which technically includes sending) plus gmail.settings.basic for filters. The guarantee comes from the code, and test/safety.test.js checks it on every run.

Security

  • Tokens are encrypted with AES-256-GCM in ~/.config/gmail-tidy-mcp/tokens.enc (mode 600). The key lives in the macOS Keychain, the Linux Secret Service (secret-tool), or a DPAPI-protected file on Windows. You can also provide it yourself with GMAIL_TIDY_KEY (64 hex characters).
  • Sign-in uses PKCE and a random `state`, with the redirect on 127.0.0.1 only.
  • The signed-in account is verified. After sign-in, the server asks Gmail which address it got. If it is not the one you asked for, or Google granted different scopes, the token is revoked and nothing is saved.
  • Your own OAuth client. No shared client and no third-party server. Your mail goes from Google to your machine and nowhere else.
  • Email content is fenced off as untrusted. Everything read from Gmail goes inside a block whose markers carry a random value per call, so an email can't close the block early. Control characters in headers are removed, and HTML is reduced to visible text (scripts, styles, and text hidden with display:none, visibility:hidden, font-size:0 or opacity:0 are dropped).
  • Invisible text is removed. Unicode tag characters (used to smuggle instructions that a model reads but you can't see), zero-width characters and text-direction controls are stripped from headers, bodies and attachments. Tag characters are reported, since they have no legitimate use in mail.
  • Security notes come from the server, not the sender. get_email and get_attachment add a short list of findings above the untrusted block: phrasing typical of prompt injection, failed SPF, DKIM or DMARC, a Reply-To that sends answers to a free webmail address when the sender didn't pass DMARC, a display name that pretends to be another address, and links that show one site but lead to another (Gmail and Outlook redirect wrappers are unwrapped first; tracking links in mailing lists are not flagged). They are tuned to stay quiet on normal mail, so a note means something.
  • Lookalike senders are flagged. A sender whose domain is one or two letters away from one of your connected accounts (or uses letters from other scripts that look Latin) gets a note; for Gmail and other webmail the mailbox name is compared instead. Mail between your own accounts is never flagged.
  • Drafts only attach files from your user folders. Attachments must live under Downloads, Desktop or Documents (or the folders in GMAIL_TIDY_ATTACH_DIRS), never in a hidden folder and never this server's own config. Links are resolved before the check, so a shortcut can't point at ~/.ssh. That way a model steered by a malicious email can't slip a private key or token into a draft for you to send.
  • Every change is logged locally. Labels, archiving, filters, drafts, signature changes and saved files are appended to ~/.config/gmail-tidy-mcp/audit.log (mode 600), without message bodies, draft text or the signature itself. recent_changes shows them, so if something odd happened in a session you can see exactly what and undo it.
  • Dangerous attachments are not saved. Executables and scripts, disguised names (factura.pdf.exe, right-to-left override tricks), files whose bytes don't match their extension, and archives that contain any of those are refused unless the call says allow_risky: true. Password-protected archives, macro-enabled Office files and PDFs with JavaScript or auto-run actions are flagged. Saved files never overwrite anything, can't be written outside the downloads folder, and on macOS get the quarantine flag so Gatekeeper checks them before they open.
  • Drafts can't smuggle headers. Line breaks in To, Cc, Subject or the reply headers are rejected, so nobody can sneak in a hidden Bcc.
  • Arguments are validated before anything reaches Gmail, and the tools that change things carry MCP annotations (destructiveHint) so clients can ask you before running them.
  • Big scans respect Gmail's quota. sender_stats, newsletters and searches fetch a few messages at a time and back off when Gmail asks, so a large mailbox slows the scan down instead of breaking it.
  • Two runtime dependencies (@modelcontextprotocol/sdk and googleapis), pinned to exact versions, none with install scripts.
What could still go wrong

No server can make prompt injection impossible, and the security notes are heuristics: they catch common tricks, not every one, and a clean result proves nothing. If a malicious email convinces the model, it could still:

  • relabel or archive mail (you can undo this),
  • create a filter that hides new mail from the inbox (only with skip_inbox: true, and your client can ask you first),
  • delete one of your filters (filters can't be recovered),
  • write a misleading draft. It is never sent unless you send it,
  • rename or recolor a label, change your signature, or rewrite one of your drafts (all reversible: the audit log keeps what changed),
  • save an attachment flagged as dangerous, if it also sets allow_risky: true; opening it is still up to you.

Two more things worth knowing:

  • The token itself can send mail. The "never send" guarantee is in this code, not in the token. If someone steals the token and the key, they get what gmail.modify allows. Keep your machine and keyring locked.
  • On macOS, the Keychain item trusts `/usr/bin/security`, which means any process running as you can read the key without a prompt. That still keeps the key off the disk, but it is not a barrier against malware running under your user.

Setup

Requires Node.js 22 or newer.

1. Create your Google OAuth client (once)
  1. In Google Cloud Console, create a project and enable the Gmail API.
  2. In Google Auth Platform, set up the app as External, add your email as the support and contact address, and publish it (Audience → Publish app). Unverified apps in production keep their refresh tokens. In testing mode they expire after 7 days.
  3. Under Clients, create a client of type Desktop app and download the JSON.
  4. Save it as ~/.config/gmail-tidy-mcp/oauth-client.json and make it private (chmod 600 on macOS and Linux).

When you connect an account, Google warns that the app is unverified. That is expected: the app is yours. Continue through Advanced.

2. Register it with your MCP client

Claude Code:

claude mcp add -s user gmail-tidy -- npx -y gmail-tidy-mcp

Any other MCP client: run npx -y gmail-tidy-mcp over stdio.

Prefer to run it from source? Clone the repo, run npm ci --ignore-scripts, and point your client at node /path/to/gmail-tidy-mcp/bin/gmail-tidy-mcp.js.

On Linux, install libsecret-tools first so the key can go into your keyring.

3. Connect accounts

Ask your assistant to connect an account. It opens Google's sign-in page in your browser. Or do it from the terminal:

npx gmail-tidy-mcp add you@gmail.com personal

npx gmail-tidy-mcp list npx gmail-tidy-mcp remove you@gmail.com

Removing an account deletes its token locally. To revoke access on Google's side too, go to myaccount.google.com/permissions.

Google Workspace accounts may need an admin to allow unverified apps.

Development

npm test

The tests cover the safety guarantee (no send or delete calls, no Trash or Spam, filter actions limited to labels), token encryption and key handling, the sign-in callback (state, errors, timeouts), the post-login checks, draft headers and body decoding. CI runs them on Linux, macOS and Windows, including the real DPAPI path on Windows.

Credits

This started from gx-55/multi-gmail-mcp (MIT) by Rogers Xie. Some of its building blocks remain: the label-or-address account lookup, the message search and header helpers, the reply threading and the token-error detection. The storage, sign-in flow, tool set and safety model were redesigned.

License

MIT. See LICENSE.

PopNxに聞く