# gigamail

Hands your agent access to your real mailbox and calendar, with a human signing off on every send. Useful when the agent should read and draft, not fire off messages on its own.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 17
- Author: adecubed
- License: AGPL-3.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/adecubed/gigamail
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/gigamail

## What it does

The server speaks stdio and opens no network port. It handles several accounts at once through Microsoft Graph and IMAP, keeps a local SQLite search index, and remembers how each sender writes and what you last discussed with them. Drafts check your calendar first, so proposed times fall inside office hours and stay free. Indexes, credentials and settings stay on your machine.

Reading needs no approval. Sending and deleting do: the agent receives an inert request id, you approve from the console or the CLI, and the action runs with the arguments you were shown. Writes go into an append-only log. Account setup and login exist only in the CLI, so an instruction hidden in an email cannot add an account or reach your secrets. A masker strips fields like IBANs, phone numbers and tax codes before the model ever sees them.

Install with `pip install "gigamail[all]"`, then run `gigamail login` for Microsoft or `gigamail accounts add-imap` for IMAP. The bundled Azure app has not been publisher-verified yet, so the consent screen carries an “unverified” notice; some corporate tenants block it, and in that case you register your own Azure app and set `client_id` in `src/gigamail/core/ms_config.json`. IMAP skips all of that. There is no built-in LLM — your agent supplies the thinking.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `GIGAMAIL_ROOT` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env GIGAMAIL_ROOT=<GIGAMAIL_ROOT> --transport stdio gigamail -- uvx gigamail
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gigamail <command>

### Codex

**Platform CLI**
```bash
codex mcp add gigamail --env GIGAMAIL_ROOT=<GIGAMAIL_ROOT> -- uvx gigamail
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gigamail <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "gigamail": {
            "command": "uvx",
            "args": [
                "gigamail"
            ],
            "env": {
                "GIGAMAIL_ROOT": "<GIGAMAIL_ROOT>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gigamail <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "gigamail": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "gigamail"
            ],
            "env": {
                "GIGAMAIL_ROOT": "<GIGAMAIL_ROOT>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gigamail <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e GIGAMAIL_ROOT=<GIGAMAIL_ROOT> gigamail uvx gigamail
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from gigamail <command>

## When to use it
- let an agent read work mail without granting it send rights
- search across several mailboxes at once, offline included
- draft a reply that matches the tone and history with one person
- propose meeting times only from free calendar slots
- hide IBANs and phone numbers before the model sees an email

## Example prompts
- Find every message from the supplier this month and list the ones I never answered.
- Draft a reply to the client's latest email, matching the tone of my earlier answers.
- Suggest three times for a call this week inside my office hours.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 392262
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33989
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81163
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119231
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47577
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43902

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
