Cloudflare Email MCP Server
Manages Cloudflare KV namespaces and automates email processing from ProtonMail Bridge to structured KV storage with folder mapping.
README
Cloudflare Email MCP Server
A comprehensive Model Context Protocol server for Cloudflare KV operations and automated email processing from ProtonMail Bridge to Cloudflare KV namespaces.
Features
KV Operations
- Key Management: List, count, get, put, delete keys in any KV namespace
- Pagination: Handle large datasets with cursor-based pagination
- Bulk Operations: Retrieve multiple keys efficiently
Email Processing
- Automated Transfer: Move emails from specific IMAP folders to corresponding KV namespaces
- UUID v5 Body IDs: Deterministic body identification with separate storage
- Folder Mapping: Pre-configured mappings for court, government, and legal correspondence
- Status Tracking: Pending/processed status for workflow management
Architecture
Two-Tier Storage
Court KV Namespace:
├── Key: 2026.02.09_casework_ico_org_uk_10-30-45
└── Value: {
"from": "casework@ico.org.uk",
"to": "rose@mobicycle.ee",
"subject": "Your complaint reference IC-...",
"body": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"namespace": "ICO Complaints",
"status": "pending"
}
Body KV Namespace (by year):
├── Key: f47ac10b-58cc-4372-a567-0e02b2c3d479
└── Value: { "text": "Dear Ms Liu..." }
Folder Mappings
Automatically processes emails from:
- Courts: Appeal, Chancery, Admin Court, King's Bench, Supreme, etc.
- Government: GLD, US State Dept, Estonian Government
- Complaints: HMCTS, ICO, PHSO, Bar Standards, Parliament
- Parties: Liu Litigation, HK Law, Lessel Property, etc.
Setup
Prerequisites
- Bun runtime
- ProtonMail Bridge running locally
- Cloudflare account with KV access
- Wrangler CLI configured
Authentication
The server uses Wrangler OAuth tokens automatically:
wrangler auth login
Installation
bun install
bun run build
bun start
Usage
MCP Tools
KV Operations
// Count keys in a namespace
kv_keys_count({
namespace_id: "your-namespace-id",
prefix: "email:"
})
// List keys with pagination
kv_keys_list({
namespace_id: "your-namespace-id",
prefix: "2026.02",
limit: 100,
cursor: "next-page-cursor"
})
// Get/set individual values
kv_key_get({ namespace_id: "...", key: "..." })
kv_key_put({ namespace_id: "...", key: "...", value: "..." })
Email Processing
// Transfer emails from approved folders
email_transfer_folders({
folders: ["INBOX/Courts/Supreme"],
since: "2026-02-01T00:00:00Z",
dry_run: true
})
// Check processing stats
email_folder_stats({
folder_name: "INBOX/Complaints/ICO"
})
// List all folders and their approval status
email_list_folders()
Configuration
Approved Folders
Only pre-configured folders automatically sync to KV:
- Legal correspondence folders
- Court communications
- Government agencies
- Complaint systems
KV Namespaces
- Court namespaces: One per jurisdiction
- Body storage: Separated by year (
email-bodies-2026) - Account mapping: Bridge gRPC account information
Development
Project Structure
src/
├── index.ts # Main MCP server with stdio transport
├── cloudflare-api.ts # KV operations via Cloudflare API
└── email-processor.ts # IMAP to KV sync logic
dist/ # Built JavaScript
README.md # This file
package.json # Dependencies and scripts
Building
bun run build # TypeScript compilation
bun run dev # Watch mode
Testing
# Dry run email processing
email_transfer_folders({ dry_run: true })
# Test KV operations
kv_keys_count({ namespace_id: "test-namespace" })
Integration
Claude Code MCP Configuration
Add to Claude Code MCP settings:
{
"mcpServers": {
"cloudflare-email": {
"command": "bun",
"args": ["start"],
"cwd": "/path/to/this/directory"
}
}
}
Environment Variables
# Optional - detected automatically from wrangler
CLOUDFLARE_API_TOKEN=your-token
CLOUDFLARE_ACCOUNT_ID=your-account-id
Automation
Bridge Integration
Works with ProtonMail Bridge gRPC for account mapping:
- Automatic token capture on Bridge restart
- Account structure pushed to KV
- Prevents email double-counting
Workflow
- Bridge receives emails in configured folders
- MCP server syncs new emails to KV namespaces
- AI triage system processes pending emails
- Status updates track workflow progress
License
Internal MobiCycle OÜ project - Not for public distribution
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.