邮件自动处理服务器

一款基于MCP协议的自动化邮件处理服务器,提供邮件分类、智能回复、材料计算及会议管理功能。

  • by glennart8
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 glennart8/MCP_mail_server

使用说明

MCP邮件服务器 - Bengtsson木材

模型上下文协议 (MCP) 服务器,用于虚构仓库的自动电子邮件管理。

Arkitektur

┌─────────────────────────────────────────────────────────────────────────────┐
│                              MCP-ARKITEKTUR                                 │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│   ┌─────────────────────────┐         ┌─────────────────────────────────┐   │
│   │      MCP-KLIENT         │         │         MCP-SERVER              │   │
│   │     (mcp_client.py)     │         │        (server.py)              │   │
│   │                         │         │                                 │   │
│   │  "Hjärnan" - BESTÄMMER  │  stdio  │  "Händerna" - UTFÖR arbete     │   │
│   │                         │ ◄─────► │                                 │   │
│   │  • AI-klassificering    │   MCP   │  • Hämta mail                   │   │
│   │  • Beslut om åtgärd     │ proto-  │  • Skicka svar                  │   │
│   │  • Anropar rätt tool    │   col   │  • Logga ärenden                │   │
│   │                         │         │  • Beräkna material             │   │
│   └─────────────────────────┘         └─────────────────────────────────┘   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

流程图

┌──────────────────────────────────────────────────────────────────────────────┐
│                           MAIL-HANTERINGSFLÖDE                               │
└──────────────────────────────────────────────────────────────────────────────┘

    KLIENT (AI-beslut)                         SERVER (Tool-exekvering)
    ══════════════════                         ═══════════════════════

    ┌─────────────┐
    │   START     │
    └──────┬──────┘
           │
           ▼
    ┌─────────────┐      get_unread_emails()      ┌─────────────────┐
    │ Hämta mail  │ ─────────────────────────────►│ Returnerar JSON │
    └──────┬──────┘                               │ med alla mail   │
           │◄─────────────────────────────────────└─────────────────┘
           │
           ▼
    ┌─────────────────┐
    │  För varje mail │
    └────────┬────────┘
             │
             ▼
    ┌─────────────────────┐
    │  AI KLASSIFICERAR   │  (Gemini 2.0 Flash)
    │                     │
    │  Kategorier:        │
    │  • support          │
    │  • sales            │
    │  • estimate         │
    │  • meeting          │
    │  • other            │
    │                     │
    │  Prioritet:         │
    │  • high_priority    │
    └─────────┬───────────┘
              │
              ▼
    ┌─────────────────────┐
    │  HÖG PRIORITET?     │
    │         │           │
    │    JA ──┴── NEJ     │
    │    │                │
    │    ▼                │
    │  notify_manager()   │
    │  (mail till chef)   │
    └─────────┬───────────┘
              │
              ▼
    ┌─────────────────────┐
    │ Anropa rätt handler │
    └─────────┬───────────┘
              │
     ┌────────┴────────┬─────────────────┬─────────────────┐
     ▼                 ▼                 ▼                 ▼
┌─────────┐      ┌─────────┐      ┌─────────────┐   ┌─────────┐
│ support │      │  sales  │      │  estimate   │   │ meeting │
└────┬────┘      └────┬────┘      └──────┬──────┘   └────┬────┘
     │                │                  │               │
     ▼                ▼                  ▼               ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                              SERVER TOOLS                                    │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  handle_support_email()    handle_sales_email()    handle_estimate_email()  │
│  ├─ Logga klagomål        ├─ Sök produkter        ├─ AI beräknar material  │
│  ├─ AI genererar svar     ├─ Formatera svar       ├─ Beräkna priser        │
│  └─ Skicka mail           └─ Skicka mail          └─ Skicka mail           │
│                                                                             │
│  handle_meeting_email()                                                     │
│  ├─ Notera önskad tid                                                       │
│  └─ Skicka bekräftelse                                                      │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
              │
              ▼
    ┌─────────────────┐
    │ Nästa mail...   │
    └─────────────────┘

文件结构

MCP-Mail-Server/
├── server.py              # MCP-server med tools och resources
├── mcp_client.py          # Autonom klient med AI-klassificering
├── core/
│   ├── __init__.py
│   ├── agents.py          # AI-agenter (ComplaintAgent, SalesAgent)
│   ├── autoresponder.py   # Gmail API-integration
│   ├── conversations.py   # Konversationshistorik per kund
│   ├── products.py        # Produktkatalog
│   └── test_data.py       # Testmail för demonstration
├── conversations.json     # Kundhistorik (ej i repo, GDPR)
├── credentials.json       # Google OAuth (ej i repo)
├── .env                   # API-nycklar (ej i repo)
└── requirements.txt

工具(server.py)

工具 描述 输入
get_unread_emails 从收件箱检索所有未读邮件
handle_support_email 处理投诉:记录,生成AI响应,发送 from_email, subject, body
handle_sales_email 处理产品请求:搜索,格式化,发送 from_email, subject, product_query
handle_estimate_email 处理材料计算:AI计算,定价,发送 from_email, subject, project_description
handle_meeting_email 处理会议请求:记录时间,发送确认 from_email, subject, meeting_time (可选)
notify_manager 在高优先事项上向经理发送升级 from_email, subject, body, email_type

资源(server.py)

资源 描述
products://catalog 产品目录,价格和尺寸

核心模块

代理人.py

类 方法 描述
BaseAgent run_llm() 快速向Gemini运行,返回文本
BaseAgent run_llm_json() 运行 prompt,返回 JSON。
ComplaintAgent write_response_to_complaint() 生成投诉的答案(包括对话历史记录)
SalesAgent estimate_materials_json() 计算建筑项目的材料流量。

对话.py

功能 描述
add_message() 在历史记录中保存一条消息
get_history() 获取客户的对话历史记录。
format_history_for_prompt() 格式化 AI 提示符的历史记录

自动回应器.py

类 方法 描述
AutoResponder _send_email() 通过 Gmail API 发送邮件

产品.py

不变 描述
PRODUCTS 与产品的说明: {namn: (pris, dimension)}

安装

# Klona och installera
cd MCP-Mail-Server
python -m venv venv
venv\Scripts\activate          # Windows
pip install -r requirements.txt

# Konfigurera
cp .env.example .env
# Redigera .env med din GEMINI_API_KEY

配置

环境变量 (.env)

GEMINI_API_KEY=din-api-nyckel
SENDER_EMAIL=din@email.com
USE_GMAIL=false                # true för att läsa från riktig Gmail
SEND_REAL_EMAILS=false         # true för att skicka riktiga mail
MANAGER_EMAIL=chef@foretag.se  # Mail för eskalering av högprioriterade ärenden

Google OAuth(用于 Gmail 发送)

  1. 在 创建项目 谷歌云控制台
  2. Aktivera Gmail API
  3. Skapa OAuth 2.0证书(桌面应用程序)
  4. 下载 credentials.json 到项目文件夹

使用

运行自主客户端

# Kör en gång
python mcp_client.py

# Kör kontinuerligt (var 5:e minut)
python mcp_client.py --loop

# Kör kontinuerligt med eget intervall (var 60:e minut)
python mcp_client.py --loop 60

客户端自动启动 MCP 服务器,获取邮件,对其进行分类和管理。

使用 Claude Desktop

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "bengtssons-travaror": {
      "command": "python",
      "args": ["server.py"],
      "cwd": "c:/Users/henri/source/repos/Python/MCP-Mail-Server",
      "env": {
        "GEMINI_API_KEY": "din-api-nyckel"
      }
    }
  }
}

MCP原理

┌────────────────────────────────────────────────────────────────┐
│                                                                │
│   KLIENT = AI som BESTÄMMER           SERVER = Tools som GÖR   │
│                                                                │
│   • Klassificering sker i klienten    • Inga AI-beslut         │
│   • Väljer vilken tool att anropa     • Utför instruktioner    │
│   • Styr hela arbetsflödet            • Returnerar resultat    │
│                                                                │
└────────────────────────────────────────────────────────────────┘

该架构遵循MCP标准,其中:

  • 服务器n 工具(Tools)和数据(Resources)
  • 客户 包含决策的AI逻辑

优先级和升级

AI将每封邮件分类为一个 high_priority国旗。高优先级任务通过电子邮件自动升级到经理。

什么引发了高优先级?

  • 客户威胁当局,律师,媒体
  • 客户说他们正在改变供应商/竞争对手
  • 反复出现的问题(“再次”,“第三次”)
  • 客户需要经理/经理的回复
  • 极具攻击性的语气,带有威胁或最后通知

什么不是高优先级?

  • 常见的投诉没有威胁
  • 客户有点生气,但不生气。
  • 客户第一次抱怨

高优先级时,将发送邮件至 MANAGER_EMAIL 与案件信息,然后像往常一样处理电子邮件。