Skip to content

先上效果

AI 对话 - 完成邮件编辑和发送 (我这里使用的 ChatWise 工具)

img

邮箱 - 收到的邮件

img

什么是 MCP

  1. 🤯 AI 一句话总结: MCP(Model Context Protocol)是一种协议,用于系统与本地运行的MCP服务器之间的通信,以扩展系统的工具和资源能力。
  2. 🔍 在前面一篇文章中有详细说明 什么是 MCP
  3. 🤖 Claude 博客: Introducing the Model Context Protocol

如何快速体验 MCP

  1. 工具: chatwiseClineCursorCherry StudioClaude
  2. MCP 服务:

img

- [https://cline.bot/mcp-marketplace](https://cline.bot/mcp-marketplace)

使用上面的工具 和 MCP 服务提供商就可以愉愉快 🤩 “食”用了

但需要注意一点: 第三方平台的 MCP 服务可能存在一些安全隐私风险,尤其 sse 传输协议的,需要仔细甄别!

如何自己搭建 MCP 服务

了解 MCP 协议

img

技术栈

  • Node.js + TypeScript
  • Express.js
  • Nodemailer
  • MCP SDK (@modelcontextprotocol/sdk)
  • SSE (Server-Sent Events)

核心实现

1. 服务器实例创建

typescript
const email_server = new McpServer({
    name: 'email',
    version: '1.0.0',
    capabilities: {
        resources: {},
        tools: {},
    },
})

2. 邮件发送功能封装

typescript
interface EmailOptions {
    to: string
    subject: string
    text: string
}

async function sendEmail(options: EmailOptions): Promise<boolean> {
    // 邮件发送逻辑实现
}

3. MCP 工具注册

typescript
email_server.tool('send-email', '发送邮件', async (params: EmailOptions) => {
    // 工具实现逻辑
})

4. 服务集成

typescript
app.get('/email/sse', async (req, res) => {
    const transport = new SSEServerTransport('/email/messages', res)
    await email_server.connect(transport)
})

架构特点

  1. 解耦设计
    • 邮件服务作为独立的 MCP 服务运行
    • 通过标准接口与其他服务交互
    • 便于维护和扩展
  2. 实时通信
    • 使用 SSE 实现服务器推送
    • 保持连接状态的实时更新
  3. 类型安全
    • 使用 TypeScript 确保类型安全
    • 接口定义清晰,减少运行时错误
  4. 错误处理
    • 完整的错误捕获和处理机制
    • 友好的错误反馈

最佳实践

  1. 配置管理
    • 使用环境变量存储敏感信息
    • 配置信息集中管理
  2. 安全性考虑
    • SMTP 服务器安全配置
    • 输入验证和清理
  3. 可扩展性
    • 支持添加新的邮件功能
    • 便于集成其他服务

使用示例

typescript
// 发送邮件示例
const response = await emailServer.executeTool('send-email', {
    to: '[email protected]',
    subject: 'Test Email',
    text: 'Hello from MCP Email Service'
});

总结

通过 MCP 构建邮件服务不仅简化了开发流程,还提供了良好的可扩展性和维护性。这种方式特别适合需要集成多个微服务的现代应用程序。

未来展望

  1. 添加邮件模板支持
  2. 实现附件处理
  3. 集成更多邮件服务提供商
  4. 添加邮件队列功能

这个实现展示了如何使用现代技术栈构建一个实用的邮件服务,同时遵循了良好的软件工程实践。通过 MCP 的标准化接口,我们可以轻松地将这个服务集成到更大的系统中。

Released under the MIT License.