Embedding runs through a local Ollama model and storage is your own SQLite and MongoDB, so message bodies do not leave your infrastructure in order to become searchable. The setup bill is real: Ollama, MongoDB and a working Outlook or Graph path all have to be in place before the first email is processed.
A cross-platform server that processes Outlook email into SQLite, embeds it with Ollama, and searches it semantically through a MongoDB vector store.
- Emails processed over a date range you set, across Inbox, Sent Items and optionally Deleted Items (process_emails)
- Contacts extracted from the mail it has processed (extract_contacts)
- Embeddings generated locally with Ollama's nomic-embed-text model, and semantic search across the content
- Multiple mailboxes and multiple accounts
- Three routes into Outlook: COM automation on Windows, AppleScript on macOS, or Microsoft Graph on any platform
- STDIO and Streamable HTTP transports, with typed, validated tool results
Python 3.10 or higher, Ollama running locally with the nomic-embed-text model, and a MongoDB server for the embeddings. Then Outlook installed on Windows or macOS, or an Azure AD app registration with Mail.Read for the Graph route.
One command plus a key — uv pip install -e ., then supply credentials
