📬 MailNet MCP服务器
______________________________________________________________________
🚀 特性
- ✅ 统一的Gmail+Outlook抽象
- ✅ 自动令牌刷新和凭据卫生
- ✅ 提供程序扩展的标准化基类
- ✅ 代理电子邮件设置端点(语气、签名、线程上下文等)
- ✅ 模块化工具集:发送、读取、搜索、标签、存档、回复、删除、草稿
______________________________________________________________________
🛠 安装
1.手动克隆和启动
git clone https://github.com/Astroa7m/MailNet-MCP-Server.git
cd MailNet-MCP-Server安装要求
pip install -r requirements.txt
注意是否要使用 uv 要启动它,您应该首先通过以下方式安装:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
发射
通过以下方式使用紫外线:
uv run -m mcp_launcher.server
或
python -m mcp_launcher.server
获取Azure令牌(个人本地使用)
- 首选
email_client/outlook_helpers.py. - 运行文件(默认情况下运行
acquiring_azure_token_for_personal_use功能。
获得 client_id & client_secret 请检查 Azure授权指南 请确保将它们添加到您的环境变量中,名称如下。
def acquiring_azure_token_for_personal_use():
load_dotenv()
client_id = os.getenv("AZURE_APPLICATION_CLIENT_ID")
client_secret = os.getenv("AZURE_SECRET_VALUE")
OutlookClient(client_id=client_id, client_secret=client_secret,
redirect_uri="http://localhost:3000/callback")它将执行以下操作:
- 启动浏览器并提示您登录您的outlook帐户。
- 成功登录并批准权限后,它会将您重定向到
http://localhost:3000/callback除非您在构造函数中通过指定了不同的urlredirect_uri参数。 - 复制代码后
code=以及之前&client_info在浏览器url中,并将其粘贴到启动文件的终端中。 - 现在完成,您将拥有您的azure令牌
email_client命名azure_token.json默认情况下(可以通过更改token_file_name参数inOutlookClient构造器)。
- 提供该路径
AZURE_PREFERRED_TOKEN_FILE_PATHenv变量,你就可以开始了。
______________________________________________________________________
获取谷歌令牌(个人本地使用)
- 首选
email_client/gmail_helpers.py. - 运行文件(默认情况下运行
acquiring_google_token_for_personal_use功能。
获得 google_credentials_file 请检查 谷歌授权指南 请确保在您的环境变量中添加路径,名称如下。
def acquiring_google_token_for_personal_use():
load_dotenv()
google_credentials_file = os.getenv("GOOGLE_CREDENTIALS_FILE_PATH")
GmailClient(credential_file=google_credentials_file)它将执行以下操作:
- 启动浏览器并提示您登录您的gmail帐户。
- 成功登录并批准权限后,它会将您重定向到一个包含消息的窗口
The authentication flow has completed. You may close this window.这意味着你在这里完了。 - 现在完成,您将在下面拥有您的谷歌令牌
email_client命名google_token.json默认情况下(可以通过更改token_file_name参数inGmailClient构造器)。
- 提供该路径
GOOGLE_CREDENTIALS_FILE_PATHenv变量,你就可以开始了。
______________________________________________________________________
🔒 环境变量
为提供程序凭据设置环境变量:
Gmail
GOOGLE_CREDENTIALS_FILE_PATH=路径/to/google_credentials.json\ GOOGLE_PREFERRED_TOKEN_FILE_PATH=路径/to/google_token.json
Outlook(Azure)
AZURE_APPLICATION_CLIENT_ID=您的客户id\ AZURE_CLIENT_SECRET_VALUE=你的秘密\ AZURE_PREFERRED_TOKEN_FILE_PATH=路径/to/azure \_token.json
其他(对当地使用很重要)
在本地运行或用于Claude Desktop时,设置以下env变量非常重要。值无关紧要,但只要字段存在,您就可以在本地运行它。 引入它是为了使服务器能够灵活地在http/s或stdio上运行,并将服务器路由到在本地文件中查找凭据或通过http/s标头从客户端获取凭据。
is_local=“真”
______________________________________________________________________
🖥 Claude桌面集成
将以下内容添加到您的 claude_desktop_config.json:
{
"mcpservers": {
"email_mcp": {
"command": "uv",
"args": [
"--directory",
"C:\\Path\\To\\mcp-server",
"run",
"-m",
"mcp_launcher.server"
],
"env": {
"AZURE_APPLICATION_CLIENT_ID": "",
"AZURE_CLIENT_SECRET_VALUE": "",
"AZURE_PREFERRED_TOKEN_FILE_PATH": "C:\\Path\\To\\azure_token.json",
"GOOGLE_CREDENTIALS_FILE_PATH": "C:\\Path\\To\\google_credentials.json",
"GOOGLE_PREFERRED_TOKEN_FILE_PATH": "C:\\Path\\To\\google_token.json",
"is_local": "true"
}
}
}
}______________________________________________________________________
🧠 代理电子邮件设置
您可以通过查看设置 load_email_settings 工具或通过更新 update_email_settings 工具。
{
"language": "en",
"tone": "formal",
"writing_style": "clear_and_concise",
"sender_name": "Ahmed Samir",
"organization_name": "Kalima Tech",
"include_signature": true,
"signature": "Best regards,\n{{sender_name}}\n{{organization_name}}",
"preferred_greeting": "Dear {{recipient_name}},",
"auto_adjust_tone": true,
"include_thread_context": true,
"character_limit": 1000,
"prompt_prefix": "You are an AI email assistant for {{organization_name}}. Keep messages professional, polite, and to the point.",
"default_provider": "google"
}______________________________________________________________________
📦 支持的工具
| 工具 | 说明 |
|---|---|
| send_email | 撰写和发送邮件 |
| read_email | 提取和检查邮件 |
| create_draft | 准备消息 |
| send_draft | 完成并发送 |
| search_email | 使用语义过滤器查询收件箱 |
| toggle_label | 修改类别/标签 |
| archive_email | 清理收件箱 |
| reply_email | 在线程上下文中响应 |
| delete_email | 删除邮件 |
| load_email_settings | 查看当前电子邮件设置 |
| update_email_settings | 更新运行时电子邮件设置 |
______________________________________________________________________
🤝 贡献
MailNet服务器是模块化和可扩展的。要添加新的提供者,请将基本客户端子类化并实现预定义的钩子。PR欢迎!
