邮件服务服务器

一个无状态的MCP服务器,为AI代理提供通过SMTP/IMAP发送和读取邮件的功能,支持MCP工具和REST API端点,专为Kubernetes部署设计。

  • by speedrun-labs
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 speedrun-labs/mcp-email-server

使用说明

mcp电子邮件服务器

无状态MCP服务器,用于AI代理通过SMTP/IMAP发送和读取电子邮件。公开MCP工具和REST API端点。专为Kubernetes部署而设计。

特性

  • 10个MCP工具 用于电子邮件操作(发送、读取、搜索、管理)
  • REST API 在 /api/v1/* 与MCP一起 /mcp
  • 多账户 具有每个帐户隔离(速率限制、域分配)
  • 邮件合并 (mail_send_bulk)与 {{variable}} JSON/CSV模板
  • 承载令牌身份验证 在MCP和REST端点上
  • 无状态 --无数据库,部署到Kubernetes

快速开始

# Install
uv sync

# Configure
cp .env.example .env
# Edit .env with your SMTP/IMAP credentials

# Run (stdio mode)
uv run mcp-mail

# Run (HTTP mode)
uv run mcp-mail --transport http

MCP工具

工具 说明
mail_list_accounts 列出已配置的帐户(掩码凭据)
mail_send 发送电子邮件至/cc/bcc、HTML、附件、回复线程
mail_send_bulk 邮件合并 {{variable}} 模板
mail_test_connection 测试SMTP/IMAP连接
mail_list 列出带有过滤器和分页的电子邮件元数据
mail_get 按ID获取完整的电子邮件内容(批量)
mail_list_folders 列出包含未读计数的IMAP文件夹
mail_move 在文件夹之间移动电子邮件
mail_mark 将电子邮件标记为已读/未读/已标记
mail_delete 永久删除电子邮件

所有工具都接受可选 account 多账户支持参数。

REST API

方法 端点 描述
得到 /api/v1/accounts 列出帐户
职位 /api/v1/mail/send 发送电子邮件
职位 /api/v1/mail/send-bulk 使用模板批量发送
得到 /api/v1/mail/health 健康检查(未经身份验证,适用于K8s探测器)
得到 /api/v1/mail/test-connection 完整的SMTP/IMAP连接测试
得到 /api/v1/mail/messages 列出电子邮件
得到 /api/v1/mail/messages/{ids} 获取电子邮件内容
得到 /api/v1/mail/folders 列出文件夹
职位 /api/v1/mail/messages/move 移动电子邮件
补丁 /api/v1/mail/messages/mark 标记电子邮件
删除 /api/v1/mail/messages 删除电子邮件

配置

所有这些都是通过环境变量实现的。看 .env.示例 供充分参考。

认证

AUTH_MODE=bearer                    # bearer | none
AUTH_BEARER_TOKEN=your-secret-token # required when AUTH_MODE=bearer

集 AUTH_MODE=none 用于当地发展(不需要代币)。

多账户

默认帐户通过 SMTP_* / IMAP_* env变量。其他帐户通过 ACCOUNTS_JSON:

ACCOUNTS_JSON={"work":{"smtp":{"host":"smtp.office365.com","port":587,"username":"me@company.com","password":"...","start_tls":true,"from_address":"me@company.com"},"imap":{"host":"outlook.office365.com","port":993,"username":"me@company.com","password":"...","use_ssl":true},"from_address":"me@company.com","rate_limit_per_minute":30,"allowed_domains":["company.com"]}}

部署

克劳德桌面(stdio模式)

配置您的 .env 先将文件放入项目目录,然后添加到Claude Desktop配置中:

{
  "mcpServers": {
    "mcp-email-server": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/mcp-email-server", "mcp-mail"]
    }
  }
}

码头工人

docker build -t mcp-email-server .

# HTTP mode
docker run -p 8000:8000 --env-file .env mcp-email-server

# stdio mode
docker run -i --env-file .env mcp-email-server --transport stdio

Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mcp-email-server
spec:
  replicas: 2
  selector:
    matchLabels:
      app: mcp-email-server
  template:
    metadata:
      labels:
        app: mcp-email-server
    spec:
      containers:
      - name: mcp-email-server
        image: mcp-email-server:latest
        args: ["--transport", "http"]
        ports: [{ containerPort: 8000 }]
        envFrom:
        - secretRef: { name: mcp-email-server-accounts }
        - secretRef: { name: mcp-email-server-auth }
        livenessProbe:
          httpGet: { path: /api/v1/mail/health, port: 8000 }
        readinessProbe:
          httpGet: { path: /api/v1/mail/health, port: 8000 }

发展

uv sync --dev
uv run python -m pytest tests/ -v

许可证

麻省理工学院