1
163mail MCP
by @jejass
使用163网页自动发送邮箱,主要解决的是大附件的邮件不能自动发送的问题,如果不是大附件的问题,建议写代码调用smtp
Created 3/19/2026
Updated about 4 hours ago
README
Repository documentation and setup instructions
163mail-mcp
一个最小可用的 163 邮箱 MCP 服务,使用 Go + Rod 通过真实浏览器自动化访问 https://mail.163.com。
当前实现了 4 个核心工具:
logincheck_login_statussend_mailsend_mail_with_big_attachment
功能概览
login
打开 163 邮箱登录页,并优先尝试使用环境变量自动登录。
- 如果配置了环境变量
MAIL163_USERNAME和MAIL163_PASSWORD,会优先自动登录 - 如果自动登录失败,会回退到手动登录
- 如果没有配置环境变量,会直接等待用户手动登录
check_login_status
检查当前浏览器页面中是否存在 #dvNavContainer:
- 存在:表示已登录
- 不存在:表示未登录
send_mail
发送邮件,参数要求:
to:收件人,不能为空subject:主题,不能为空content:正文,不能为空- 支持多个收件人,多个邮箱用分号
;分隔 - 会校验邮箱格式
发送流程:
- 打开 163 邮箱页面
- 检查是否已登录
- 如果未登录,优先尝试环境变量自动登录
- 点击“写信”
- 填写收件人、主题、正文
- 点击“发送”
- 等待
#sucAnimIcon.suc-anim-icon.had-finish-anim - 返回发送成功信息
send_mail_with_big_attachment
发送带本地大附件的邮件,参数要求:
to:收件人,不能为空subject:主题,不能为空content:正文,不能为空attachment_paths:本地附件路径数组,不能为空- 最多支持 5 个附件
- 单个附件大小不能超过 500MB
发送流程:
- 打开 163 邮箱页面
- 检查是否已登录
- 如果未登录,优先尝试环境变量自动登录
- 点击“写信”
- 填写收件人、主题、正文
- 向页面中的
input[type="file"]注入本地附件路径 - 持续等待附件上传和扫描完成
- 点击“发送”
- 返回发送成功信息
说明:
attachment_paths建议传绝对路径- 大附件上传和网易侧扫描可能持续较长时间,服务端会在上传阶段持续轮询等待
登录策略
当前登录策略分为两层:
1. 自动登录
如果设置了以下环境变量:
MAIL163_USERNAMEMAIL163_PASSWORD
服务会优先尝试自动登录。
其中 MAIL163_USERNAME 支持以下规则:
- 如果值是
xxx@163.com,登录时会自动裁剪成xxx - 如果不是
@163.com结尾,则原样使用
自动登录时会尝试勾选“30天免登录”复选框:
input#un-login[name="un-login"]
2. 手动登录
如果自动登录失败,或者没有配置环境变量,用户可以直接在浏览器中手动登录。
服务会复用固定浏览器 profile,因此手动登录成功后,后续重启 MCP server 时通常仍然可以保留登录状态。
浏览器与 Profile
默认浏览器
在 macOS 下,默认优先使用:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
如果没有找到这个路径,则回退到 Rod 默认浏览器。
固定 Profile
默认浏览器 profile 目录:
~/.163mail-mcp/browser-profile
这意味着:
- 手动登录成功后,登录态通常会被保存在这个目录里
- 重启 MCP server 后,大概率不需要重新登录
你也可以通过参数自定义 profile:
-user-data-dir=/path/to/profile
运行环境
- macOS
- Windows
安装
1. 安装依赖
go mod tidy
2. 启动服务
go run . -addr :18061
常用参数:
-addr :18061-headless=false-browser-bin=/path/to/browser-user-data-dir=/path/to/profile
推荐启动方式
如果你在国内网络环境,建议这样启动:
cd /path/to/163mail-mcp
GOMODCACHE=$(pwd)/.gomodcache \
GOCACHE=$(pwd)/.gocache \
GOPROXY=https://goproxy.cn,direct \
GOSUMDB=off \
/usr/local/go/bin/go run . -addr :18061
自动登录示例
先设置环境变量:
export MAIL163_USERNAME='your_account@163.com'
export MAIL163_PASSWORD='your_password'
再启动服务:
cd /path/to/163mail-mcp
GOMODCACHE=$(pwd)/.gomodcache \
GOCACHE=$(pwd)/.gocache \
GOPROXY=https://goproxy.cn,direct \
GOSUMDB=off \
/usr/local/go/bin/go run . -addr :18061
手动登录示例
如果你不想设置环境变量,也可以直接启动服务:
cd /path/to/163mail-mcp
GOMODCACHE=$(pwd)/.gomodcache \
GOCACHE=$(pwd)/.gocache \
GOPROXY=https://goproxy.cn,direct \
GOSUMDB=off \
/usr/local/go/bin/go run . -addr :18061
然后调用 login,在浏览器中手动完成登录。
HTTP 接口
服务默认提供:
POST /mcpGET /healthz
健康检查
curl http://127.0.0.1:18061/healthz
MCP 调用示例
initialize
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {}
}
tools/list
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}
send_mail_with_big_attachment
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "send_mail_with_big_attachment",
"arguments": {
"to": "foo@example.com;bar@example.com",
"subject": "带附件测试",
"content": "这是正文",
"attachment_paths": [
"/absolute/path/report.pdf",
"/absolute/path/archive.tar"
]
}
}
}
login
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "login",
"arguments": {}
}
}
check_login_status
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "check_login_status",
"arguments": {}
}
}
send_mail
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "send_mail",
"arguments": {
"to": "foo@example.com;bar@example.com",
"subject": "测试主题",
"content": "测试正文"
}
}
}
推荐测试顺序
场景 1:手动登录
- 启动服务
- 调
login - 在浏览器中手动登录
- 调
check_login_status - 调
send_mail
场景 2:自动登录
- 设置
MAIL163_USERNAME和MAIL163_PASSWORD - 启动服务
- 直接调
send_mail
日志说明
服务端会输出关键步骤日志,便于排查问题,例如:
- 浏览器路径
- profile 目录
- 登录检查
- 自动登录流程
- 写信步骤
- 正文填写方式
- 登录失败提示
已知限制
- 163 邮箱页面结构如果变化,定位器可能需要调整
- 自动登录依赖当前登录页 DOM,如果 163 登录页变更,可能需要重新适配
- 某些情况下如果出现验证码、风控、滑块校验,仍需要手动登录
- 正文编辑器位于 iframe 中,当前实现会优先定位
iframe.APP-editor-iframe - 当前实现是最小版本,没有附件、抄送、草稿、收件箱查询等能力
Quick Setup
Installation guide for this server
Installation Command (package not published)
git clone https://github.com/jejass/163mail-mcp
Manual Installation: Please check the README for detailed setup instructions and any additional dependencies required.
Cursor configuration (mcp.json)
{
"mcpServers": {
"jejass-163mail-mcp": {
"command": "git",
"args": [
"clone",
"https://github.com/jejass/163mail-mcp"
]
}
}
}