Migadu邮件托管控制协议

通过模型上下文协议(MCP)控制Migadu邮件托管服务的完整API功能,包括域名管理、邮箱操作、别名设置等。

  • by Michaelzag
  • Python
  • 本地部署
  • 17 星标
  • 更新于
在 GitHub 查看 Michaelzag/migadu-mcp

使用说明

Migadu MCP服务器

通过模型上下文协议从AI助手控制您的Migadu电子邮件托管。

Migadu是什么?

Migadu 是一款瑞士电子邮件主机,按实际使用量而不是邮箱数量定价,采用标准SMTP/IMAP/POP3,无锁定。

这有什么作用

涵盖作为MCP工具的整个Migadu API表面:

  • 域--创建、更新、激活、DNS记录、诊断、使用
  • 邮箱--CRUD、自动回复、密码重置
  • 别名——转发规则后面没有邮箱
  • 标识--作为邮箱上的地址发送
  • 转发——带有确认流程的外部交付副本
  • 重写——基于模式的路由规则

设置

在获取API密钥 Migadu管理员→ 我的账户→ API密钥.

添加到您的MCP客户端配置中(例如Claude Desktop, ~/.claude.json等等):

{
  "mcpServers": {
    "migadu": {
      "command": "uvx",
      "args": ["migadu-mcp"],
      "env": {
        "MIGADU_EMAIL": "you@example.com",
        "MIGADU_API_KEY": "your-api-key",
        "MIGADU_DOMAIN": "example.com"
      }
    }
  }
}

或者通过Claude Code CLI:

claude mcp add migadu \
  --env MIGADU_EMAIL=you@example.com \
  --env MIGADU_API_KEY=your-api-key \
  --env MIGADU_DOMAIN=example.com \
  -- uvx migadu-mcp

MIGADU_DOMAIN 是可选的。这是以下工具使用的默认域 list_mailboxes 当你没有明确地传递一个时。如果您管理多个域并希望通过,请跳过它 domain 每次通话。

示例用法

配置后,询问您的AI助手以下问题:

  • “加入一个新域名 acme.example --引导我完成DNS设置和激活”
  • “为创建邮箱alice@acme.example和bob@acme.example"
  • “设置 support@acme.example 作为爱丽丝和鲍勃的别名”
  • “在上配置自动应答器 vacation@acme.example 直到1月15日”
  • “删除所有离开的人的邮箱:地址列表…”

脚手架通用工作流中注册了三个内置提示: mailbox_creation_wizard, bulk_operation_planner, domain_onboarding.

工具

领域

list_domains, get_domain, create_domain, update_domain, get_domain_records, get_domain_diagnostics, activate_domain, get_domain_usage

邮箱

list_mailboxes, get_mailbox, create_mailbox, update_mailbox, delete_mailbox, reset_mailbox_password, set_autoresponder

别名

list_aliases, get_alias, create_alias, update_alias, delete_alias

身份

list_identities, get_identity, create_identity, update_identity, delete_identity

转发

list_forwardings, get_forwarding, create_forwarding, update_forwarding, delete_forwarding

重写

list_rewrites, get_rewrite, create_rewrite, update_rewrite, delete_rewrite

所有突变工具(create_*, update_*, delete_*, activate_*, set_autoresponder, reset_mailbox_password)接受a list[dict] 并返回一个包含每个项目成功/失败的批量结果信封。单个项目列表也适用。

资源

可通过URI寻址的只读视图:

  • domains:// --帐户上的所有域
  • domain://{name} --一个域的完整配置
  • domain-records://{name} --安装所需的DNS记录
  • domain-usage://{name} --消息+存储指标
  • mailboxes://{domain} --域的邮箱
  • mailbox://{domain}/{local_part} --一个邮箱
  • identities://{domain}/{mailbox} --邮箱上的标识
  • forwardings://{domain}/{mailbox} --邮箱转发
  • aliases://{domain} --域的别名
  • rewrites://{domain} --重写域规则

备注

  • Migadu的API在成功删除时返回HTTP 500(已知异常)。客户端将200/204/404/500视为删除成功;其他代码提高。
  • 一个长寿 httpx.AsyncClient 每个服务器进程,通过FastMCP生命周期挂钩在关闭时关闭。
  • list_* 当响应超过约2000个令牌时,工具会通过静态摘要器传递响应,返回计数加样本,而不是洪泛上下文。

发展

git clone https://github.com/Michaelzag/migadu-mcp.git
cd migadu-mcp
uv sync --group dev

# Quality gates (same as CI)
uv run ruff format --check .
uv run ruff check migadu_mcp/ tests/
uv run ty check migadu_mcp/
uv run pytest
uv run bandit -r migadu_mcp/

测试使用 respx 嘲笑Migadu API-不需要证书。集成测试(后面 @pytest.mark.integration)点击真正的API,并在默认情况下跳过。

许可证

麻省理工学院——见 许可证.