コンテンツにスキップ

ADK 向け Mailgun MCP ツール

ADKでサポートPythonTypeScriptGo

Mailgun MCP Server は ADK エージェントをトランザクションメールサービス Mailgun へ接続します。 この連携により、エージェントは自然言語でメール送信、 配信メトリクス追跡、ドメイン/テンプレート管理、メーリングリスト処理を行えます。

ユースケース

  • メール送信と管理: トランザクション/マーケティングメールを作成・送信し、 保存メッセージを取得し、送信済みメッセージを再送できます。

  • 配信パフォーマンス監視: 配信統計の取得、 バウンス分類の分析、送信者評価維持のための suppression リスト確認を行います。

  • メール基盤管理: ドメイン 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-2.5-pro",
    name="mailgun_agent",
    instruction="Help users send emails and manage their Mailgun account",
    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",  # Optional: defaults to "us"
                    }
                ),
                timeout=30,
            ),
        )
    ],
)
import { LlmAgent, MCPToolset } from "@google/adk";

const MAILGUN_API_KEY = "YOUR_MAILGUN_API_KEY";

const rootAgent = new LlmAgent({
    model: "gemini-2.5-pro",
    name: "mailgun_agent",
    instruction: "Help users send emails and manage their Mailgun account",
    tools: [
        new MCPToolset({
            type: "StdioConnectionParams",
            serverParams: {
                command: "npx",
                args: ["-y", "@mailgun/mcp-server"],
                env: {
                    MAILGUN_API_KEY: MAILGUN_API_KEY,
                    // MAILGUN_API_REGION: "eu",  // Optional: defaults to "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("Failed to create the model: %v", err)
    }

    server := exec.CommandContext(ctx, "npx", "-y", "@mailgun/mcp-server")
    // Forward only what npx needs, plus the Mailgun key. The parent environment
    // may hold unrelated secrets, such as the GOOGLE_API_KEY read above.
    server.Env = []string{
        "MAILGUN_API_KEY=" + mailgunAPIKey,
        // "MAILGUN_API_REGION=eu", // Optional: defaults to "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("Failed to create the Mailgun tool set: %v", err)
    }

    rootAgent, err := llmagent.New(llmagent.Config{
        Model:       model,
        Name:        "mailgun_agent",
        Instruction: "Help users send emails and manage their Mailgun account",
        Toolsets:    []tool.Toolset{mailgun},
    })
    if err != nil {
        log.Fatalf("Failed to create the agent: %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("Run failed: %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 ドメイントラッキング設定を更新

Webhooks

ツール 説明
list_webhooks ドメインのイベント Webhook 一覧
create_webhook 新規イベント Webhook 作成
update_webhook 既存 Webhook 更新
delete_webhook Webhook 削除

Routes

ツール 説明
list_routes 受信メールルーティングルール表示
update_route 受信ルーティングルール更新

メーリングリスト

ツール 説明
create_mailing_list 新規メーリングリスト作成
manage_list_members メーリングリストメンバー追加/削除/更新

テンプレート

ツール 説明
create_template 新規メールテンプレート作成
manage_template_versions テンプレートバージョン作成/管理

分析と統計

ツール 説明
query_metrics 期間指定で送信/利用メトリクス照会
get_logs メールイベントログ取得
get_stats ドメイン、タグ、プロバイダー、デバイス、国別の集計統計表示

Suppressions

ツール 説明
get_bounces バウンスメールアドレス表示
get_unsubscribes 配信停止メールアドレス表示
get_complaints 苦情レコード表示
get_allowlist allowlist エントリ表示

IPs

ツール 説明
list_ips IP 割り当て表示
get_ip_pools 専用 IP プール設定表示

バウンス分類

ツール 説明
get_bounce_classification バウンスタイプと配信問題を分析

設定

Variable Required Default Description
MAILGUN_API_KEY Yes — Mailgun API キー
MAILGUN_API_REGION No us API リージョン: us または eu

追加リソース