kindlemcp MCP server + CLI

Send any document to your Kindle from an AI assistant or the command line. You give it text, a PDF, or an EPUB — it emails it to your Kindle, and a minute later it is in your library.

This site is just the project home. The hosted endpoint here does not send documents and never handles your credentials — nothing (no password, no document) passes through this server. You run kindlemcp on your own machine, where your Gmail details stay local. Setup is below.

What you get

Before you start (one time, ~5 min)

You need three things from your own accounts. They stay on your machine.

  1. A Gmail App Password. Google Account → Security → 2-Step Verification → App passwords. A 16-character code used only by apps — not your normal Gmail password.
  2. Your Kindle email address. Amazon → Manage Your Content and DevicesPreferencesPersonal Document Settings. It looks like [email protected].
  3. Approve your sender. On that same Amazon page, add your Gmail address to the Approved Personal Document E-mail List. Amazon silently drops documents from any address that is not approved — this is the #1 reason a document does not arrive.

Install & connect (local)

Everything runs on your computer. Nothing goes through this server.

# install (one of)
pipx install kindlemcp
uvx --from kindlemcp kindlemcp        # run without installing

# tell it your creds once (env, or a .env file next to you)
export SMTP_URL="smtp://you%40gmail.com:[email protected]:587"
export KINDLE_ADDR="[email protected]"

# use the CLI directly
kindlemcp-send --title "My Report" report.pdf
echo "# Hello" | kindlemcp-send --title "Quick Note"

Write @ in the Gmail address as %40 inside the SMTP URL (so [email protected]you%40gmail.com). Markdown conversion needs pandoc (brew install pandoc); PDF/EPUB do not.

Connect it to your AI assistant (local MCP)

Register the local kindlemcp command as an MCP server — one line, and your credentials stay on your machine:

# Claude Code
claude mcp add kindlemcp -e SMTP_URL=... -e KINDLE_ADDR=... -- uvx --from kindlemcp kindlemcp

# OpenAI Codex CLI
codex mcp add kindlemcp -- uvx --from kindlemcp kindlemcp

# Gemini CLI
gemini mcp add kindlemcp uvx --from kindlemcp kindlemcp

Or add it by hand to your client config (Claude Desktop claude_desktop_config.json, or a project .mcp.json):

{
  "mcpServers": {
    "kindlemcp": {
      "command": "uvx",
      "args": ["--from", "kindlemcp", "kindlemcp"],
      "env": {
        "SMTP_URL": "smtp://you%40gmail.com:[email protected]:587",
        "KINDLE_ADDR": "[email protected]"
      }
    }
  }
}

Then just say “send this to my Kindle” in your assistant.

Is it safe?

Yes — because your credentials never leave your computer. kindlemcp runs locally: it logs in to Gmail directly from your machine and sends the mail. The public server at this domain is only a landing page and a health check; it does not send documents and does not receive or store anyone's password.

Troubleshooting

SymptomFix
Document never arrives on the KindleYour Gmail is not in Amazon's Approved senders list. Add it (see step 3).
“SMTP_URL / KINDLE_ADDR not set”The env vars (or .env) are missing or misspelled.
“Failed to send email”Wrong Gmail App Password, or you used your normal password. Create a fresh App Password.
Markdown did not convertInstall pandoc (brew install pandoc). Not needed for PDF/EPUB.