MCP Servers

模型上下文协议服务器、框架、SDK 和模板的综合目录。

使用163网页自动发送邮箱,主要解决的是大附件的邮件不能自动发送的问题,如果不是大附件的问题,建议写代码调用smtp

创建于 3/19/2026
更新于 about 4 hours ago
Repository documentation and setup instructions

163mail-mcp

一个最小可用的 163 邮箱 MCP 服务,使用 Go + Rod 通过真实浏览器自动化访问 https://mail.163.com

当前实现了 4 个核心工具:

  • login
  • check_login_status
  • send_mail
  • send_mail_with_big_attachment

功能概览

login

打开 163 邮箱登录页,并优先尝试使用环境变量自动登录。

  • 如果配置了环境变量 MAIL163_USERNAMEMAIL163_PASSWORD,会优先自动登录
  • 如果自动登录失败,会回退到手动登录
  • 如果没有配置环境变量,会直接等待用户手动登录

check_login_status

检查当前浏览器页面中是否存在 #dvNavContainer

  • 存在:表示已登录
  • 不存在:表示未登录

send_mail

发送邮件,参数要求:

  • to:收件人,不能为空
  • subject:主题,不能为空
  • content:正文,不能为空
  • 支持多个收件人,多个邮箱用分号 ; 分隔
  • 会校验邮箱格式

发送流程:

  1. 打开 163 邮箱页面
  2. 检查是否已登录
  3. 如果未登录,优先尝试环境变量自动登录
  4. 点击“写信”
  5. 填写收件人、主题、正文
  6. 点击“发送”
  7. 等待 #sucAnimIcon.suc-anim-icon.had-finish-anim
  8. 返回发送成功信息

send_mail_with_big_attachment

发送带本地大附件的邮件,参数要求:

  • to:收件人,不能为空
  • subject:主题,不能为空
  • content:正文,不能为空
  • attachment_paths:本地附件路径数组,不能为空
  • 最多支持 5 个附件
  • 单个附件大小不能超过 500MB

发送流程:

  1. 打开 163 邮箱页面
  2. 检查是否已登录
  3. 如果未登录,优先尝试环境变量自动登录
  4. 点击“写信”
  5. 填写收件人、主题、正文
  6. 向页面中的 input[type="file"] 注入本地附件路径
  7. 持续等待附件上传和扫描完成
  8. 点击“发送”
  9. 返回发送成功信息

说明:

  • attachment_paths 建议传绝对路径
  • 大附件上传和网易侧扫描可能持续较长时间,服务端会在上传阶段持续轮询等待

登录策略

当前登录策略分为两层:

1. 自动登录

如果设置了以下环境变量:

  • MAIL163_USERNAME
  • MAIL163_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 /mcp
  • GET /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:手动登录

  1. 启动服务
  2. login
  3. 在浏览器中手动登录
  4. check_login_status
  5. send_mail

场景 2:自动登录

  1. 设置 MAIL163_USERNAMEMAIL163_PASSWORD
  2. 启动服务
  3. 直接调 send_mail

日志说明

服务端会输出关键步骤日志,便于排查问题,例如:

  • 浏览器路径
  • profile 目录
  • 登录检查
  • 自动登录流程
  • 写信步骤
  • 正文填写方式
  • 登录失败提示

已知限制

  • 163 邮箱页面结构如果变化,定位器可能需要调整
  • 自动登录依赖当前登录页 DOM,如果 163 登录页变更,可能需要重新适配
  • 某些情况下如果出现验证码、风控、滑块校验,仍需要手动登录
  • 正文编辑器位于 iframe 中,当前实现会优先定位 iframe.APP-editor-iframe
  • 当前实现是最小版本,没有附件、抄送、草稿、收件箱查询等能力
快速设置
此服务器的安装指南

安装命令 (包未发布)

git clone https://github.com/jejass/163mail-mcp
手动安装: 请查看 README 获取详细的设置说明和所需的其他依赖项。

Cursor 配置 (mcp.json)

{ "mcpServers": { "jejass-163mail-mcp": { "command": "git", "args": [ "clone", "https://github.com/jejass/163mail-mcp" ] } } }