项目简介
'ybigta-agent' 仓库包含多个Agent的实现。其中位于 'app/agents/mail_agent/mcp-email-client' 目录下的部分是一个基于 Model Context Protocol (MCP) 的邮件代理服务器实现。它允许大型语言模型 (LLM) 客户端通过标准的 JSON-RPC 接口调用工具来执行邮件相关的操作,如发送邮件、搜索历史邮件等。
主要功能点
此MCP服务器提供以下主要功能,作为LLM可调用的工具暴露:
- 邮件配置管理: 添加、更新、删除和列出用于连接邮件服务器的账号配置。
- 发送邮件: 通过配置好的账号发送电子邮件。
- 读取邮件: 加载收件箱中的最新邮件或指定日期范围内的邮件,并将它们存储在本地数据库中。
- 邮件搜索: 在本地数据库中对已加载的邮件进行全文检索。
- 邮件语义搜索: 利用向量嵌入对邮件内容进行语义相似度搜索。
- 邮件计数: 获取本地数据库中存储的邮件总数。
- 生成嵌入: 为尚未生成嵌入的邮件生成向量嵌入,以便进行语义搜索。
安装步骤
- 克隆仓库:
git clone https://github.com/wognsths/ybigta-agent.git cd ybigta-agent - 设置Python环境: 推荐使用虚拟环境。
python -m venv venv source venv/bin/activate # Windows: 'venv\Scripts\activate' - 安装依赖: 导航到邮件代理目录并安装所需的库。
cd app/agents/mail_agent/mcp-email-client # 可能需要手动安装依赖,例如 mcp 库、sentence-transformers、duckdb 等 # 仓库中未提供 requirements.txt,请根据代码中的导入自行安装 # 例如: pip install mcp sentence-transformers duckdb-python imaplib smtplib pip install mcp sentence-transformers duckdb-python - 准备邮件配置: 服务器需要邮件账号信息。这些信息通过MCP工具 ('add_email_config', 'update_email_config') 进行管理,并存储在服务器端。首次运行前无需手动创建配置文件,通过LLM客户端调用相应的MCP工具即可创建。
服务器配置
MCP客户端连接此服务器时,需要以下配置信息:
{ "name": "EmailClient", "command": "python", "args": [ "app/agents/mail_agent/mcp-email-client/run_mcp_server.py" ], "workingDirectory": "<仓库的根目录路径>", "mimeType": "application/json-rpc", "transports": [ { "protocol": "stdio" } ] }
参数注释:
- 'name': MCP服务器的唯一标识符,在此实现中固定为 "EmailClient"。
- 'command': 用于启动MCP服务器进程的可执行命令,通常是 'python'。
- 'args': 传递给 'command' 的命令行参数列表。这里指定了启动服务器的脚本路径。
- 'workingDirectory': 重要! MCP客户端需要指定执行 'command' 时的当前工作目录,应设置为您克隆的 'ybigta-agent' 仓库的根目录路径,以便正确找到启动脚本。
- 'mimeType': 通信协议的MIME类型。
- 'transports': 支持的传输协议列表。此实现通过标准输入/输出来通信 ('stdio')。
邮件账号配置: 请注意,上述配置仅用于启动MCP服务器进程。实际的邮件账号(如邮箱地址、密码、服务器地址等)需要通过调用MCP服务器暴露的 'add_email_config' 或 'update_email_config' 等工具来添加和管理。这些敏感信息存储在服务器端(通常位于服务器代码目录下的 'config' 子目录)。
基本使用方法
- 启动服务器: 手动或通过配置好的MCP客户端启动 'run_mcp_server.py' 脚本。
服务器将通过标准输入/输出与MCP客户端通信。# 在仓库根目录执行 python app/agents/mail_agent/mcp-email-client/run_mcp_server.py - MCP客户端连接: 使用支持MCP协议的LLM客户端,配置上述服务器信息并建立连接。
- 调用工具: 通过客户端向服务器发送JSON-RPC请求,调用暴露的工具。例如,发送邮件请求可能类似于调用 'send_email' 工具,参数中包含收件人、主题、内容和使用的邮件配置名称。搜索邮件可能调用 'search_emails' 工具,参数包含查询关键词和配置名称。
LLM客户端将根据服务器声明的工具能力,引导用户执行邮件操作。
信息
分类
通信与社交