Mail MCP Server
An MCP server that provides email sending capabilities via SMTP, featuring tools for sending standard and template-based emails. It utilizes the FastMCP Streamable HTTP transport for flexible client connectivity over HTTP without requiring stdio subprocesses.
README
Mail MCP Server
基于 FastMCP 的邮件发送能力,以 MCP Streamable HTTP 传输启动,供支持该协议的客户端通过 HTTP 连接(无需 stdio 子进程)。
Features
- 传输:
streamable-http(FastMCP 内与http/sse并列的 transport) - MCP 工具:
send_email、send_template_email - 监听:
MCP_HOST/MCP_PORT(默认0.0.0.0:8000) - Docker 镜像非 root 运行,依赖层与代码层分离缓存
Prerequisites
Project Structure
mail-mcp-server
├── src
│ ├── mcp_server.py # MCP 入口(streamable-http)
│ ├── main.py
│ ├── email_service/
│ └── tests/
├── pyproject.toml
├── uv.lock
├── Dockerfile
├── docker-compose.yml
├── .dockerignore
├── .env.example
└── README.md
启动
cd mail-mcp-server
cp .env.example .env
uv sync
uv run python src/mcp_server.py
Streamable HTTP 端点:http://<MCP_HOST>:<MCP_PORT>/mcp(例如 http://127.0.0.1:8000/mcp)。
.env 为何未生效?
见 .env 与 load_env 说明:需在项目根放置 .env,修改后重启 MCP 进程。
环境变量
| 变量 | 说明 | 默认 |
|---|---|---|
MCP_HOST / MCP_PORT |
监听 | 0.0.0.0 / 8000 |
SMTP_* / DEFAULT_SENDER / EMAIL_FROM |
发信 | 见 .env.example |
SMTP_SSL / SMTP_USE_STARTTLS |
465 / 587 | 见 fastmcp_client.py 与 README 163 小节 |
163 Connection unexpectedly closed
| 问题 | 处理 |
|---|---|
| 用户名非完整邮箱 | 使用 user@163.com |
| FROM 写成授权码 | FROM 必须是邮箱;授权码只在 SMTP_PASSWORD |
| 587 被断开 | 使用 SMTP_PORT=465 + SMTP_SSL=true,或依赖自动走 465 |
一次性演示(非 MCP)
uv run python src/main.py
Docker
镜像特点
| 项 | 说明 |
|---|---|
| 分层 | 先 pyproject.toml + uv.lock + uv sync,再 COPY src/,改代码不重建依赖层 |
| 环境 | UV_LINK_MODE=copy、--compile-bytecode,减少告警并略加快启动 |
| 安全 | USER app(uid 1000),非 root |
| 布局 | PYTHONPATH=/app/src,CMD 为 python -m mcp_server |
构建
# 默认 bookworm + Python 3.10
docker build -t mail-mcp-server:latest .
# 加快构建(跳过 apt upgrade)
docker build --build-arg SKIP_APT_UPGRADE=1 -t mail-mcp-server:latest .
# 指定 Python 小版本
docker build --build-arg PYTHON_VERSION=3.11 -t mail-mcp-server:py311 .
运行
docker run --rm -p 8000:8000 --env-file .env mail-mcp-server:latest
Compose
服务名 mail-mcp(原 email-sender 已更名):
docker compose up --build -d
- 端口:宿主机
${MCP_PORT:-8000}→ 容器8000(容器内仍监听 8000,改端口请同时设置环境变量并映射)。 - healthcheck:对容器内
127.0.0.1:8000做 TCP 探测(Streamable HTTP 未必有 GET/)。 - 重启策略:
unless-stopped。
Development
uv sync --group dev
uv run pytest
uv lock
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。