AI黑科技:使用 Trae 和 MCP 实现发邮件

发布于:2025-05-10 ⋅ 阅读:(13) ⋅ 点赞:(0)

在去年年底那会我写了篇关于开源 AI 大模型实现发邮件的文章,大概是这样的:

比如我想让 AI 帮我发个邮件:

AI 你好,请帮我发一封邮箱给:

收件人:xx@xx.com

邮件主题:hi 李雷

邮件内容:I am 韩梅梅

AI 可以聊天,可以生成图片,可以生成视频,那它能发邮件吗?

 

一般来说互联网版本的 AI 可以帮我们拟邮件内容与标题,但不会给我们自动发邮件,毕竟这操作就和病毒一样有点可怕。当然如果是在自己本地的私有化 AI 来说这就是可以实现的功能。

如何给 AI 赋予发邮件的能力?

一、Function Calling

随着 OpenAI 推出的“Function Calling”功能,通过 Function Calling,大模型能够通过结构化输入连接到外部系统,比如通过 API 进行交互,从而实现与外部世界的连接。

通过Function Calling AI 可以与外部工具和服务连接起来,这样 AI 的能力就非常的广阔。这样可以打造更智能、更强大的人工智能。
Function Calling 技术的不断发展,我们相信它将在未来的 AI 应用中发挥越来越重要的作用。

二、MCP

MCP(Model Context Protocol)最早由 Anthropic 提出,它是一种新的通用协议,用来标准化大模型与外部工具之间的调用方式。其核心思想是:通过一组结构化的 JSON 协议,在模型与插件之间传递请求与响应,实现更安全、更通用的交互方式。

MCP 相比 OpenAI 的 function calling 更加「简单」也更「灵活」。它们有相似之处,比如都是通过结构化参数来调用外部函数。但不同的是,function calling 是绑定在 OpenAI 的模型能力和接口中的,用户无法控制底层实现。而 MCP 是完全开源的协议,支持任何语言实现,也不依赖于具体的模型厂商。这就使得个人开发者和企业能更加灵活地接入自己的业务工具。

三、Trae 实现 MCP 发邮件

字节跳动开源的 Trae 项目是 MCP 的一个使用渠道。目前像 Cursor、Trae、Cline、Claude Desktop 等都可以成为MCP Host,而这些工具里创建的智能体就可以成为 MCP Client。

Trae它是一款轻量级的桌面客户端,支持加载 MCP 插件,并通过模型与插件交互。我们可以基于 Trae 开发一个“发邮件”的插件,实现模型调用发送邮件的功能。

 

下面是如何基于 Trae 使用 Python 编写一个“发邮件”的 MCP 插件的过程。

Step1:通过 Trae 生成代码(mcp server)

把自己的需求告诉 Trae,选择一个模型就可以生成发邮件的 mcp server 代码

 

以下是代码

import sys
import json
import smtplib
from email.mime.text import MIMEText
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("email")
@mcp.tool()
def send_email(to, subject, body):
    msg = MIMEText(body, 'plain', 'utf-8')
    msg['From'] = sender_email
    msg['To'] = to
    msg['Subject'] = subject

    try:
        smtp = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465)  # 使用SSL连接
        smtp.login('your_email@example.com', 'your_password')
        smtp.sendmail(sender_email, to, msg.as_string())
        smtp.quit()
        return True
    except Exception as e:
        print(f"发送邮件时出错: {str(e)}", file=sys.stderr)
        return False

def main():
    # 测试数据
    test_data = {
        "arguments": {
            "to": "xx@qq.com",
            "subject": "Test Email",
            "body": "This is a test email"
        }
    }
    
    try:
        success = send_email(
            test_data['arguments']['to'], 
            test_data['arguments']['subject'], 
            test_data['arguments']['body']
        )
        result = {"status": "success" if success else "error"}
    except Exception as e:
        result = {"status": "error", "message": str(e)}
    
    print(json.dumps(result))
    sys.stdout.flush()

# 启动MCP服务器
if __name__ == "__main__":
    mcp.run()

Step2:创建 Trae MCP

 

选择手动配置

 

在这里参考示例进行配置

 

我是在 windows 下的代码,所以配置时路径是 \\ 双斜杠

{
  "mcpServers": {
    "local_mcp_send_email": {
      "command": "python",
      "args": [
        "D:\\code\\local\\python\\email\\local_mcp_send_email.py"
      ]
    }
  }
}

配置好后,如果 显示为绿色的勾说明已经配置成功了

 

如果出现 “重试”,就是有错,这时可以看一下日志

 

日志文件为 MCP-servers-host.log,在 MCP 里 Trae 或 cursor 就是 host

 

Step3:Trae 智能体配置

再创建一个智能体来引用刚才的 MCP 服务

 

Step4:使用 Trae 智能体

 

可以看到已经触发了发送邮件的程序,邮箱也收到了邮件。

当然如果为了方便调试也可以使用inspector 来调试自己的 MCP server 程序。

npx @modelcontextprotocol/inspector python local_mcp_send_email.py

浏览器打开:http://127.0.0.1:6274/

 

 

我是栈江湖,如果你喜欢此文章,不要忘记点赞+关注

 

 


网站公告

今日签到

点亮在社区的每一天
去签到