Skip to main content
Glama
jamesol-msft

Agent 365 Email Draft Proxy

by jamesol-msft

Agent 365 Email Draft Plugin for Claude Code

Generate executive-style email drafts using real email context from your Microsoft 365 inbox.

License: MIT

✨ Features

  • 🔍 Natural Language Email Search - Search your inbox using plain English

  • 📧 Executive Style Profiles - Drafts match recipient's communication style

  • 🎯 Context-Aware Responses - Uses full email threads for context

  • 📤 One-Click Publishing - Create drafts directly in Outlook

  • 🚀 One-Time Setup - Configure once, use in any Claude Code conversation

Related MCP server: Office MCP Server

🎭 Executive Profiles

The plugin automatically matches recipients to communication styles:

  • Charles Lamanna - Conversational-professional, strategic, engaging

  • Nirav Shah - Action-oriented, decisive, technical, timeline-focused

  • Robert Bruckner - Direct, data-driven, strategic, analytical

  • James Oleinik - Collaborative, balanced, team-focused, thoughtful

Unknown recipients use a professional default style.

🚀 Quick Start

Prerequisites

  • Python 3.8+

  • Claude Code CLI installed

  • Agent 365 account with email access

  • Microsoft 365 mailbox

Installation (2 commands!)

  1. Clone and install

    git clone https://github.com/jamesol-msft/claude-email-draft-plugin.git
    cd claude-email-draft-plugin
    pip install -r requirements.txt
    python setup.py
  2. Restart Claude Desktop/CLI

That's it! The setup script automatically:

  • ✅ Installs MCP proxy to your home directory

  • ✅ Installs skill to ~/.claude/skills/email-draft/

  • ✅ Configures Claude Desktop MCP server

  • ✅ Provides token setup instructions

Token Setup (Optional - for real email access)

For testing without a real token, the plugin works in mock mode by default. For real email access:

# If you have get_agent365_token.py
python get_agent365_token.py

# Or create a mock token for testing
mkdir -p ~/.agent365
cat > ~/.agent365/auth-token.json << 'EOF'
{
  "access_token": "mock_token_for_testing",
  "token_type": "Bearer",
  "expires_in": 3600,
  "expires_at": 9999999999
}
EOF

Verify Setup

python verify_setup.py

This checks that everything is configured correctly.

📖 Usage

Interactive Mode

/email-draft

Prompts you for email context.

Search First

/email-draft --search "recent unread from john"

Searches emails, lets you pick one, generates draft.

Reply to Specific Email

/email-draft --reply-to AAMkAGI2TGAA=

Generates reply to email with specific ID.

Example Workflow

  1. Search for an email:

    /email-draft --search "latest from charles lamanna"
  2. Claude searches and displays results

  3. Select an email from the results

  4. Review the generated draft

  5. Optionally publish to Outlook drafts folder

🏗️ Architecture

Claude Code
    ↓ (MCP protocol - JSON-RPC 2.0 over stdio)
agent365_mcp_proxy.py
    ↓ (HTTPS)
Agent 365 Mail Server
    ↓ (Microsoft Graph API)
Microsoft 365 (Outlook)

Key Components:

  • MCP Proxy (~550 lines Python) - Lightweight bridge between Claude Code and Agent 365

  • Skill File (~830 lines Markdown) - Executive profiles and workflow logic

  • Configuration - Simple JSON config for Claude Desktop

🔧 MCP Tools

The proxy exposes 3 tools to Claude Code:

Tool

Purpose

Typical Latency

search_messages

Search emails with natural language

30-90s

get_message

Retrieve full email details by ID

1-3s

create_draft

Create draft in Outlook

1-3s

📚 Documentation

🔒 Security

  • Tokens stored locally (~/.agent365/auth-token.json)

  • Tokens expire after 1 hour (manual refresh required)

  • No credentials in config files

  • All communication over HTTPS

  • MCP proxy runs locally (no external services)

🐛 Troubleshooting

Token expired (401 error)

# Refresh your Agent 365 token
python get_agent365_token.py

Proxy not starting

  • Check Python version: python --version (need 3.8+)

  • Check file path in claude_desktop_config.json

  • Check Claude Code logs: View → Developer → Toggle Developer Tools

Skill not appearing

  • Verify file location: ~/.claude/skills/email-draft/SKILL.md

  • Restart Claude Code

  • Check for syntax errors in SKILL.md

See TROUBLESHOOTING.md for more solutions.

🎯 Performance

Tested with:

  • 15 test cases, 100% pass rate

  • 35 total scenarios validated

  • Production-ready status: ✅

Benchmarks:

  • Proxy startup: <2s

  • Email search: 30-90s (natural language processing)

  • Get message: 1-3s

  • Create draft: 1-3s

🛣️ Roadmap

  • Automatic token refresh

  • Additional executive profiles

  • Calendar integration (meeting prep)

  • Teams integration (chat context)

  • Profile customization UI

🤝 Contributing

Contributions welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Commit your changes

  4. Open a pull request

📄 License

MIT License - see LICENSE file for details

🙏 Acknowledgments

Built with:


Wave 5 of the skillsIQ project Status: ✅ Production Ready Test Pass Rate: 100% (35/35 scenarios)

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Claude to Microsoft 365 Outlook and Google Gmail APIs for email search, invoice detection, attachment handling, folder/label management, and draft creation. Uses Anthropic OAuth for secure authentication.
    24 npm
    ISC