Overview
Programmable Email is an MCP server designed to connect Claude with Gmail, allowing for seamless interaction between the two platforms using Gmail's local OAuth tokens.
To use Programmable Email, you need to set up Gmail OAuth credentials, build the Docker image, and configure Claude to communicate with the MCP server. Once set up, you can ask Claude to retrieve your recent unread emails.
- Connects Claude with Gmail using OAuth tokens - Allows retrieval of unread emails through Claude - Designed for experimentation and testing purposes
- Integrating AI with email management
- Automating email retrieval and processing tasks
- Testing and experimenting with email functionalities in a controlled environment
Add to your AI client
Use these steps to connect [WIP] Programmable Email in Cursor, Claude, VS Code, and other MCP-compatible apps. The same JSON appears in the Use with menu above for one-click copy.
Cursor
Add this to your .cursor/mcp.json file in your project root, then restart Cursor.
.cursor/mcp.json
{
"mcpServers": {
"programmable-email-juecd": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-programmable-email-juecd"
]
}
}
}Claude Desktop
Add this server entry to the mcpServers object in your Claude Desktop config, then restart the app.
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
"mcpServers": {
"programmable-email-juecd": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-programmable-email-juecd"
]
}
}
}Claude Code
Add this to your project's .mcp.json file. Claude Code will detect it automatically.
.mcp.json (project root)
{
"mcpServers": {
"programmable-email-juecd": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-programmable-email-juecd"
]
}
}
}VS Code (Copilot)
Add this to your .vscode/mcp.json file. Requires the GitHub Copilot extension with MCP support enabled.
.vscode/mcp.json
{
"servers": {
"programmable-email-juecd": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-programmable-email-juecd"
]
}
}
}Windsurf
Add this to your Windsurf MCP config file, then restart Windsurf.
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"programmable-email-juecd": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-programmable-email-juecd"
]
}
}
}Cline
Open Cline settings, navigate to MCP Servers, and add this server configuration.
Cline MCP Settings (via UI)
{
"mcpServers": {
"programmable-email-juecd": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-programmable-email-juecd"
]
}
}
}FAQ
What are the prerequisites for using Programmable Email?
You need Docker and Claude Desktop for Mac to use this project.
Is this project ready for production use?
No, it is currently a work in progress and designed for experimentation.
How do I set up Gmail OAuth credentials?
Follow the guide provided in the documentation to create personal OAuth tokens.7:["$","div",null,{"className":"container mx-auto flex flex-col gap-4","children":["$L26","$L27",["$","$L28",null,{"currentProject":{"id":537,"uuid":"b3133708-711e-4263-a808-3ed45c1c8186","name":"programmable-email","title":"[WIP] Programmable Email","description":"MCP server for Gmail","avatar_url":"https://avatars.githubusercontent.com/u/2819278?v=4","created_at":"2024-12-30T02:55:02.398Z","updated_at":"2025-02-23T07:15:12.062Z","status":"created","author_name":"juecd","author_avatar_url":"https://avatars.githubusercontent.com/u/2819278?v=4","tags":"server,mcp,gmail,claude","category":"developer-tools","is_featured":false,"sort":1,"url":"https://github.com/juecd/programmable-email","target":"_self","content":"$29","summary":"$2a","img_url":null,"type":null,"metadata":null,"user_uuid":null,"tools":null,"sse_url":null,"sse_provider":null,"sse_params":null,"is_official":false,"server_command":null,"server_params":null,"server_config":null,"allow_call":false,"is_innovation":false,"is_dxt":false,"dxt_manifest":null,"dxt_file_url":null,"is_audit":false},"randomProjects":[],"currentServerKey":"$undefined"}]]}]