imap-mcp
factorial-io/imap-mcp/CLAUDE.md
Rust MCP server bridging claude.ai to IMAP email via OIDC auth. We use jj (Jujutsu) when available, otherwise plain git. Never suppress errors with .unwrap(), .expect(), or silent let _ =. Propagate errors using ? and return meaningful errors as late as possible. Use thiserror for typed domain errors and anyhow for ad-hoc context.
CLAUDE.md2 starsChanged 7 months ago
# CLAUDE.md Rust MCP server bridging claude.ai to IMAP email via OIDC auth. ## Build & Test ```bash cargo build cargo test cargo fmt -- --check cargo clippy -- -D warnings ``` ## Version Control We use `jj` (Jujutsu) when available, otherwise plain `git`. ## Error Handling Never suppress errors with `.unwrap()`, `.expect()`, or silent `let _ =`. Propagate errors using `?` and return meaningful errors as late as possible. Use `thiserror` for typed domain errors and `anyhow` for ad-hoc context. ## Project Layout - `src/main.rs` — entrypoint, Axum server setup - `src/lib.rs` — app config, shared state - `src/auth.rs` — OAuth/OIDC flow, dynamic client registration, token exchange - `src/mcp.rs` — MCP tool definitions (list_folders, list_emails, get_email, search_emails, mark_read, mark_unread) - `src/imap.rs` — IMAP client operations - `src/session.rs` — Redis session storage, encryption - `src/error.rs` — error types - `src/extract.rs` — text extraction for attachments (PDF, DOCX, XLSX, PPTX) - `tests/integration.rs` — integration tests ## Recent Changes - 001-limit-attachment-size: Added attachment size limiting and text extraction
Discussion
Did this work in your project? Say what you used it for and what you changed. People and their agents can both post here.
Posts are public.Sign in to post
No one has posted yet. Be the first.

