Skip to content

用于 ADK 的 Mailgun MCP 工具 (Mailgun)

Supported in ADKPythonTypeScriptGo

Mailgun MCP 服务器 将你的 ADK 智能体连接到 Mailgun(一种事务性电子邮件服务)。此集成使你的智能体能够使用自然语言发送电子邮件、追踪投递指标、管理域名和模板以及处理邮件列表。

使用场景

  • 发送和管理电子邮件:通过对话式命令撰写并发送事务性或营销电子邮件、检索存储的邮件以及重新发送邮件。

  • 监控送达性能:获取送达统计数据、分析退信分类并查看抑制列表以维持发信人信誉。

  • 管理邮件基础设施:验证域名 DNS 配置、配置追踪设置、创建电子邮件模板并设置入站路由规则。

先决条件

在智能体中使用

from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters

MAILGUN_API_KEY = "YOUR_MAILGUN_API_KEY"

root_agent = Agent(
    model="gemini-flash-latest",
    name="mailgun_agent",
    instruction="帮助用户发送电子邮件并管理其 Mailgun 帐号",
    tools=[
        McpToolset(
            connection_params=StdioConnectionParams(
                server_params=StdioServerParameters(
                    command="npx",
                    args=[
                        "-y",
                        "@mailgun/mcp-server",
                    ],
                    env={
                        "MAILGUN_API_KEY": MAILGUN_API_KEY,
                        # "MAILGUN_API_REGION": "eu",  # 可选:默认为 "us"
                    }
                ),
                timeout=30,
            ),
        )
    ],
)
import { LlmAgent, MCPToolset } from "@google/adk";

const MAILGUN_API_KEY = "YOUR_MAILGUN_API_KEY";

const rootAgent = new LlmAgent({
    model: "gemini-flash-latest",
    name: "mailgun_agent",
    instruction: "帮助用户发送电子邮件并管理其 Mailgun 帐号",
    tools: [
        new MCPToolset({
            type: "StdioConnectionParams",
            serverParams: {
                command: "npx",
                args: ["-y", "@mailgun/mcp-server"],
                env: {
                    MAILGUN_API_KEY: MAILGUN_API_KEY,
                    // MAILGUN_API_REGION: "eu",  // 可选:默认为 "us"
                },
            },
        }),
    ],
});

export { rootAgent };
package main

import (
    "context"
    "log"
    "os"
    "os/exec"

    "github.com/modelcontextprotocol/go-sdk/mcp"
    "google.golang.org/genai"

    "google.golang.org/adk/v2/agent"
    "google.golang.org/adk/v2/agent/llmagent"
    "google.golang.org/adk/v2/cmd/launcher"
    "google.golang.org/adk/v2/cmd/launcher/full"
    "google.golang.org/adk/v2/model/gemini"
    "google.golang.org/adk/v2/tool"
    "google.golang.org/adk/v2/tool/mcptoolset"
)

const mailgunAPIKey = "YOUR_MAILGUN_API_KEY"

func main() {
    ctx := context.Background()

    model, err := gemini.NewModel(ctx, "gemini-flash-latest", &genai.ClientConfig{
        APIKey: os.Getenv("GOOGLE_API_KEY"),
    })
    if err != nil {
        log.Fatalf("创建模型失败:%v", err)
    }

    server := exec.CommandContext(ctx, "npx", "-y", "@mailgun/mcp-server")
    // 只转发 npx 所需的内容,外加 Mailgun 密钥。父环境可能
    // 包含无关的机密信息,例如上面读取的 GOOGLE_API_KEY。
    server.Env = []string{
        "MAILGUN_API_KEY=" + mailgunAPIKey,
        // "MAILGUN_API_REGION=eu", // 可选:默认为 "us"
    }
    for _, k := range []string{
        "PATH", "HOME", // POSIX
        "APPDATA", "LOCALAPPDATA", "TEMP", "USERPROFILE", // Windows
    } {
        if v, ok := os.LookupEnv(k); ok {
            server.Env = append(server.Env, k+"="+v)
        }
    }

    mailgun, err := mcptoolset.New(mcptoolset.Config{
        Transport: &mcp.CommandTransport{Command: server},
    })
    if err != nil {
        log.Fatalf("创建 Mailgun 工具集失败:%v", err)
    }

    rootAgent, err := llmagent.New(llmagent.Config{
        Model:       model,
        Name:        "mailgun_agent",
        Instruction: "帮助用户发送电子邮件并管理其 Mailgun 帐号",
        Toolsets:    []tool.Toolset{mailgun},
    })
    if err != nil {
        log.Fatalf("创建智能体失败:%v", err)
    }

    l := full.NewLauncher()
    cfg := &launcher.Config{AgentLoader: agent.NewSingleLoader(rootAgent)}
    if err := l.Execute(ctx, cfg, os.Args[1:]); err != nil {
        log.Fatalf("运行失败:%v\n\n%s", err, l.CommandLineSyntax())
    }
}

可用工具

邮件收发

工具 描述
send_email 发送一封电子邮件,支持 HTML 内容和附件
get_stored_message 检索存储的电子邮件
resend_message 重新发送之前发送过的邮件

域名

工具 描述
get_domain 查看特定域名的详情
verify_domain 验证域名的 DNS 配置
get_tracking_settings 查看追踪设置(点击、打开、退订)
update_tracking_settings 更新域名的追踪设置

Webhook

工具 描述
list_webhooks 列出域名的所有事件 Webhook
create_webhook 创建一个新的事件 Webhook
update_webhook 更新现有的 Webhook
delete_webhook 删除一个 Webhook

路由

工具 描述
list_routes 查看入站邮件路由规则
update_route 更新一条入站路由规则

邮件列表

工具 描述
create_mailing_list 创建一个新的邮件列表
manage_list_members 添加、删除或更新邮件列表成员

模板

工具 描述
create_template 创建一个新的电子邮件模板
manage_template_versions 创建和管理模板版本

分析与统计

工具 描述
query_metrics 查询指定日期范围的发信和使用指标
get_logs 检索电子邮件事件日志
get_stats 按域名、标签、提供商、设备或国家查看聚合统计数据

抑制列表

工具 描述
get_bounces 查看退信的电子邮件地址
get_unsubscribes 查看已退订的电子邮件地址
get_complaints 查看投诉记录
get_allowlist 查看白名单条目

IP

工具 描述
list_ips 查看 IP 分配情况
get_ip_pools 查看专用 IP 池配置

退信分类

工具 描述
get_bounce_classification 分析退信类型和投递问题

配置

变量 是否必填 默认值 描述
MAILGUN_API_KEY 是 — 你的 Mailgun API key
MAILGUN_API_REGION 否 us API 区域:us 或 eu

其他资源