邮件过滤管理服务

一个基于Sieve语言的邮件过滤管理服务,提供创建、管理和维护邮件过滤规则的工具,支持通过JSON集成和AI助手接口。

  • by MattyStacks
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mattystacks/seive-email-filtering-mcp-server

使用说明

筛选电子邮件过滤MCP服务器

一个全面的模型上下文协议(MCP)服务器,用于创建、管理和维护Sieve电子邮件过滤器。此服务器提供了以编程方式生成Sieve脚本的工具,使电子邮件过滤器管理更容易、更易于维护。

特性

  • 全面的筛网支撑:创建所有常见的筛选过滤器类型(垃圾邮件、发件人、域、大小等)
  • 预构建模板:适用于常见过滤场景的现成模板
  • 验证:Sieve脚本和规则的内置验证
  • JSON集成:通过JSON序列化与其他工具轻松集成
  • MCP协议:AI助手的标准模型上下文协议接口

安装

  1. 克隆存储库:
git clone https://github.com/MattyStacks/seive-email-filtering-mcp-server.git
cd seive-email-filtering-mcp-server
  1. 安装软件包:
pip install -e .

或者手动安装依赖项:

pip install mcp pydantic click typing-extensions

快速开始

运行MCP服务器

python -m seive_email_filtering_mcp_server.server

示例用法

from seive_email_filtering_mcp_server.utils import SieveFilterBuilder
from seive_email_filtering_mcp_server.generator import SieveGenerator

# Create a spam filter
spam_rule = SieveFilterBuilder.create_spam_filter("Spam", priority=10)

# Create a mailing list filter
list_rule = SieveFilterBuilder.create_mailing_list_filter(
    "python-dev@python.org", 
    "Lists/Python", 
    priority=20
)

# Generate Sieve script
generator = SieveGenerator()
script = SieveScript(
    name="My Email Filters",
    rules=[spam_rule, list_rule],
    requires=["fileinto"]
)

print(generator.generate_script(script))

可用工具

MCP服务器提供以下工具:

过滤器创建工具

  • create_spam_filter -创建垃圾邮件过滤规则
  • create_mailing_list_filter -筛选邮件列表邮件
  • create_sender_filter -按特定发件人电子邮件筛选
  • create_domain_filter -按发件人域筛选
  • create_subject_filter -按主题线图案过滤
  • create_size_filter -按邮件大小筛选
  • create_vacation_response -创建假期自动回复
  • create_blacklist_filter -阻止特定发件人
  • create_whitelist_filter -确保重要信息得到保留

脚本管理工具

  • generate_sieve_script -根据规则生成完整的筛选脚本
  • validate_sieve_script -验证脚本是否有错误
  • get_script_template -获取预构建的脚本模板

文档工具

  • explain_sieve_syntax -获取有关Sieve语法和功能的帮助

脚本模板

预构建模板可用于常见用例:

基本电子邮件组织

  • 垃圾邮件过滤
  • 大消息处理

综合过滤

  • 白名单/黑名单管理
  • 垃圾邮件过滤
  • 邮件列表组织
  • 基于域的过滤
  • 大小限制

智能过滤度假

  • 假期自动回复
  • 跳过自动消息
  • 避免邮件列表回复

MCP客户端配置

Claude桌面配置

要与MCP客户端(如Claude Desktop)一起使用,请在配置中添加:

{
  "mcpServers": {
    "seive-email-filtering": {
      "command": "python",
      "args": ["-m", "seive_email_filtering_mcp_server.server"],
      "env": {},
      "disabled": false
    }
  }
}

GitHub复制集成

虽然GitHub Copilot本身不支持MCP服务器,但您可以将此服务器与您的Sieve电子邮件过滤项目集成:

  1. 添加为电子邮件过滤存储库的子模块
  2. 设置VS代码任务 访问MCP服务器功能
  3. 创建上下文文件 帮助Copilot理解Sieve语法
  4. 使用CLI命令 在您的开发工作流程中

看 COPILOT_INTEGRATION.md 和 examples/copilot_integration_example.md 有关详细的设置说明。

快速设置您的电子邮件过滤项目:

# Add as submodule
git submodule add https://github.com/MattyStacks/seive-email-filtering-mcp-server.git tools/sieve-mcp-server

# Use CLI commands in your workflow
cd tools/sieve-mcp-server
python -m seive_email_filtering_mcp_server.cli template comprehensive_filtering --output my-filters.sieve

筛网过滤器示例

垃圾邮件过滤器

# Rule: Spam Filter
# Move spam messages to spam folder
if anyof (header "X-Spam-Flag" "YES", 
          header :matches "X-Spam-Status" "*Yes*", 
          header :contains "Subject" ["***SPAM***", "[SPAM]", "***UCE***"]) {
  fileinto "Spam";
  stop;
}

邮件列表筛选器

# Rule: Mailing List: python-dev@python.org
# Filter messages from python-dev@python.org mailing list
if anyof (header :matches "List-ID" "*python-dev@python.org*", 
          header :matches "List-Post" "*python-dev@python.org*", 
          header :matches "X-Mailing-List" "*python-dev@python.org*") {
  fileinto "Lists/Python";
}

尺寸过滤器

# Rule: Size Filter: over 10MB
# Filter messages over 10MB in size
if size :over 10485760 {
  fileinto "Large Messages";
}

api参考

核心型号

  • SieveScript -使用规则和元数据完成筛选脚本
  • SieveRule -带有测试和操作的单独过滤规则
  • SieveTest -测试条件(标题、地址、正文、大小等)
  • SieveAction -要采取的行动(归档、丢弃、拒绝等)

公用事业

  • SieveFilterBuilder -常见过滤器类型的出厂方法
  • SieveGenerator -将模型转换为Sieve脚本文本
  • SieveValidator -验证脚本的正确性
  • SieveTemplates -预构建脚本模板

测试

运行测试套件:

python tests/test_sieve_server.py

或者使用pytest(如果已安装):

pip install pytest pytest-asyncio
pytest tests/

例子

请参阅 examples/ 目录以获取更详细的使用示例:

python examples/basic_usage.py

贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

筛分资源

支持

如有疑问或问题:

  1. 检查 GitHub问题
  2. 创建一个新问题,详细说明您的问题
  3. 包括示例代码和预期行为与实际行为