用于 ADK 的 Mailgun MCP 工具 (Mailgun)¶
Supported in ADKPythonTypeScriptGo
Mailgun MCP 服务器 将你的 ADK 智能体连接到 Mailgun(一种事务性电子邮件服务)。此集成使你的智能体能够使用自然语言发送电子邮件、追踪投递指标、管理域名和模板以及处理邮件列表。
使用场景¶
-
发送和管理电子邮件:通过对话式命令撰写并发送事务性或营销电子邮件、检索存储的邮件以及重新发送邮件。
-
监控送达性能:获取送达统计数据、分析退信分类并查看抑制列表以维持发信人信誉。
-
管理邮件基础设施:验证域名 DNS 配置、配置追踪设置、创建电子邮件模板并设置入站路由规则。
先决条件¶
- 创建一个 Mailgun 帐号
- 从 Mailgun 控制面板 生成 API 密钥
在智能体中使用¶
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 |