Local MCP server that turns AI conversations into polished ebooks and delivers them to Kindle or email
Project description
stewreads
StewReads is a local MCP server that transforms AI conversations into clean, well-formatted ebooks. Everything runs on your machine, with no account and no cloud backend required. Generate EPUB files from your chats and send them directly to Kindle or any email address. Works with Claude Desktop and other MCP-compatible clients.
Current Scope
- Local stdio MCP server (no backend calls)
- EPUB generation from markdown
- Save generated ebooks to a configured local directory
- Send generated EPUB files by email (Claude Gmail connector preferred, SMTP fallback)
- Reuse current StewReads ebook-generation prompt
Not In Scope (Current Iteration)
- PDF generation
Requirements
- Python 3.10+
- uv
macOS install:
brew install uv
Install (Recommended)
Install as a local tool:
uv tool install stewreads-mcp
This includes pandoc via pypandoc-binary, so no separate pandoc install is required.
Install (Repo Development)
uv sync
Configuration
Create ~/.config/stewreads/config.toml:
[paths]
output_dir = "/Users/you/Projects/generated_books"
[email]
from_email = "you@gmail.com"
default_to_email = "kindle-or-reader@example.com"
Optional environment overrides:
STEWREADS_CONFIG_PATH(path to config file)STEWREADS_OUTPUT_DIR(overrides configured output dir)STEWREADS_FROM_EMAIL(overrides sender email)STEWREADS_DEFAULT_TO_EMAIL(overrides default recipient email)
Fallback-only secret for built-in SMTP tool:
STEWREADS_GMAIL_APP_PASSWORD(Gmail App Password)
Run MCP Server (Tool Install)
stewreads-mcp
Run MCP Server (Repo Development)
uv run stewreads-mcp
Claude Desktop (Mac) Example
Add to Claude Desktop MCP config:
{
"mcpServers": {
"stewreads": {
"command": "/Users/you/.local/bin/stewreads-mcp",
"env": {
"STEWREADS_CONFIG_PATH": "/Users/you/.config/stewreads/config.toml"
}
}
}
}
If you want to use email_ebook (SMTP fallback tool), also set:
"STEWREADS_GMAIL_APP_PASSWORD": "your-16-char-app-password"
Exposed MCP Tools
get_stew_prompt()get_stew_config()get_email_status()save_stew_config(output_dir)save_ebook(markdown, title, filename?, original_prompt?)email_ebook(to_email?, ebook_path?, subject?, body?)(SMTP fallback when connector is unavailable)
First-Time Claude Flow
- Call
get_stew_config(). - If
configuredisfalse, ask the user for their preferred output directory and callsave_stew_config(output_dir=...). - Call
save_ebook(...)after config is set. - If Claude Gmail connector is available, ask Claude to send the saved EPUB using that connector.
- If no connector is configured, call
get_email_status()and thenemail_ebook(...).
Dev Shell Safety
When running multi-step shell commands, you may see set -euo pipefail:
-e: stop on command failure.-u: fail on unset variables.-o pipefail: fail if any command in a pipeline fails.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stewreads_mcp-0.1.1.tar.gz.
File metadata
- Download URL: stewreads_mcp-0.1.1.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e43f54a7fd927be4db348cb46057552995b12f284d62ede5858a079fea3a8ca
|
|
| MD5 |
d049d4e0f91ccdb2f572622a9b165c64
|
|
| BLAKE2b-256 |
1e177e9b393b8a592a0d1d15a393a741d3a3e2fbf828691d6640483270d1ae3f
|
File details
Details for the file stewreads_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: stewreads_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff98c37b86d9bfbb7c00e7f75f9b571fd2902329b87830f83824650563daff3a
|
|
| MD5 |
d4acf4d713040a2cab1f3e861dc02f9d
|
|
| BLAKE2b-256 |
4fd5e864c9dcad7336f7864f74c4909089fb89c9f7b8c781a48d9b291623335f
|