Commit Graph
14 Commits
Author SHA1 Message Date
Kacper Kwapisz 2343072c7d Add rate limiting, route filtering, and webhook payload improvements
- Add DropNonMCPRoutes middleware to return empty 404 for non-MCP paths
- Add per-IP sliding window rate limiter with separate GET/POST buckets
- Include account_id and from_address in webhook forwarding payload
- Fix IDLE watcher to always check UNSEEN instead of filtering by EXISTS
- Track seen UIDs to avoid re-forwarding on subsequent IDLE cycles
- Switch to uvicorn.run() with Starlette middleware stack
2026-03-24 15:54:44 +01:00
Kacper Kwapisz fef9157c4a Fix GET /mcp 405 log spam and resolve_account email matching
Add a custom GET /mcp health route so health checks and client polling
return 200 instead of flooding logs with 405. Also allow resolve_account
to match by email address (from_address, imap_username, smtp_username)
in addition to account ID.
2026-03-23 19:33:51 +01:00
Kacper Kwapisz b3a5cd4c5b Switch webhook endpoint to Poke SDK's /inbound/api-message 2026-03-23 16:38:53 +01:00
Kacper Kwapisz 4ca7032e30 Add from_address override per account for custom domain sending
Useful for iCloud SMTP where login is @icloud.com but you send as a
custom domain. Falls back to smtp_username when not set.
2026-03-23 13:47:29 +01:00
Kacper Kwapisz 4a14d33e22 Default allow_send to false — sending must be explicitly enabled 2026-03-23 08:55:17 +01:00
Kacper Kwapisz 518aeda901 Add blocked_recipients per account to prevent sending to specific addresses 2026-03-23 08:52:59 +01:00
Kacper Kwapisz 0323eb1f7f Fix log spam: skip existing unseen on startup, silence httpx logs 2026-03-23 00:21:21 +01:00
Kacper Kwapisz 8a2d6ac8ed Add debug logging for Poke webhook auth to diagnose 401s 2026-03-23 00:20:23 +01:00
Kacper Kwapisz 9c84ea1a91 Add create_draft tool and allow_send toggle per account
- create_draft: saves email as draft in IMAP Drafts folder
- allow_send: global config toggle (default true), overridable per account
- When sending disabled, send_email returns error suggesting create_draft
2026-03-23 00:13:35 +01:00
Kacper Kwapisz 6e9f1ca617 Fix NoneType encode error in search_emails address formatting 2026-03-23 00:00:47 +01:00
Kacper Kwapisz 8a0abba80c Make SMTP config optional, falls back to IMAP host/credentials 2026-03-22 22:06:48 +01:00
Kacper Kwapisz 48b3f3816f Change default port to 3000 2026-03-22 21:55:49 +01:00
Kacper Kwapisz fc9a2bb8f8 Fix lint: remove unused imports, apply ruff formatting 2026-03-22 21:52:37 +01:00
Kacper Kwapisz eb76dbb489 Initial release: IMAP/SMTP email bridge MCP server
- 11 MCP tools: search, read, send, archive, move, mark emails + folder management
- IMAP IDLE watcher with polling fallback, forwards new emails to Poke webhook
- Bearer token auth (MCP_API_KEY) for securing the server
- Multi-account support via config.yml
- Docker + GitHub Actions CI/CD (lint, build, push to GHCR)
2026-03-22 21:46:14 +01:00