UniOne について
UniOne公式のMCPサーバーで、AIアシスタントから公開Web APIを通じてUniOneアカウントを操作できます。ホスト型のOAuth接続とローカルのAPIキー接続に対応し、メール送信やアカウント管理を読み取り専用・送信禁止に制限できます。
主な機能
- 01トランザクションメールの送信
- 02送信ドメインとテンプレートの管理
- 03Webhookと抑制リストの設定
- 04イベント、タグ、プロジェクト、アカウントの確認
- 05読み取り専用または送信禁止への制限
活用シーン
- 01AIアシスタントからトランザクションメールを送信
- 02送信ドメインやテンプレートの確認・更新
- 03配信イベントやアカウントのプロジェクトの確認
- 04連携を読み取り専用操作に限定
MCP 対応
UniOne Web APIの32種類の操作をMCPツールとして公開します。クライアントはOAuthでホスト型HTTPサーバーに接続するか、APIキーを使うローカルstdioサーバーを利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.unione.io/mcpclaude mcp add --transport http io-unione https://mcp.unione.io/mcp{"mcpServers":{"io-unione":{"type":"http","url":"https://mcp.unione.io/mcp"}}}Cursor で開く{"servers":{"io-unione":{"type":"http","url":"https://mcp.unione.io/mcp"}}}VS Code で開く{"mcpServers":{"io-unione":{"type":"http","url":"https://mcp.unione.io/mcp"}}}{"mcpServers":{"io-unione":{"serverUrl":"https://mcp.unione.io/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.unione.io/mcp認証が必要ツール
詳細
unione-mcp
UniOne 用の公式 Model Context Protocol サーバーです (https://docs.unione.io)。AI アシスタント(Claude、ChatGPT、Cursor、Windsurf、VS Code、 Cline、その他すべての MCP クライアント)から UniOne アカウントを操作できます。メールの送信、 送信者ドメイン、テンプレート、Webhook、抑制リスト、イベントダンプ、タグ、プロジェクトの管理に対応しています。32 個のツールがあり、 それぞれ公開されている UniOne Web API を呼び出します。
利用方法は 2 通りあります。
- リモート —
https://mcp.unione.io/mcpにホストされたサーバーです。インストールは不要です。URL を クライアントに追加し、OAuth 経由で UniOne にサインインしてください。 - ローカル — サーバーは stdio を介してお使いのマシン上で実行されます(npx、Docker、またはバイナリ)。
UNIONE_API_KEYに設定した API キーを使って動作します。
リモートサーバー(OAuth)
URL:https://mcp.unione.io/mcp
初回利用時に、クライアントから UniOne のサインインページが開きます。アクセスを承認すると、クライアントが トークンを保持します。UniOne アカウントからいつでも取り消せます。
Claude Code
claude mcp add --transport http unione https://mcp.unione.io/mcp
Claude Desktop / claude.ai — [設定]→[コネクタ]→[カスタムコネクタを追加]を選択し、URL
https://mcp.unione.io/mcp を指定します。
Cursor、Windsurf、Cline、VS Code など、mcpServers 設定に対応するクライアント:
{
"mcpServers": {
"unione": {
"type": "http",
"url": "https://mcp.unione.io/mcp"
}
}
}
OAuth に対応していないクライアントでは、代わりに API キーを送信できます。ヘッダー
Authorization: Bearer <UniOne API key> を追加してください。
ローカルサーバー(API キー)
UniOne アカウントで API キーを取得してください。アカウントキーはアカウント全体にアクセスでき、プロジェクト
キーはそのプロジェクトのみにアクセスできます。サーバーは UNIONE_API_KEY からキーを読み込みます。
npx(Node.js 18 以降。初回実行時にお使いのプラットフォーム用のバイナリをダウンロードします):
{
"mcpServers": {
"unione": {
"command": "npx",
"args": ["-y", "unione-mcp"],
"env": { "UNIONE_API_KEY": "<your API key>" }
}
}
}
Docker:
{
"mcpServers": {
"unione": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "UNIONE_API_KEY", "ghcr.io/unione-repo/unione-mcp", "stdio"],
"env": { "UNIONE_API_KEY": "<your API key>" }
}
}
}
バイナリ — Releases から unione-mcp-<os>-<arch> をダウンロードし、
実行可能にして PATH に配置します(または go install github.com/unione-repo/unione-mcp/cmd/unione-mcp@latest を実行します):
{
"mcpServers": {
"unione": {
"command": "unione-mcp",
"args": ["stdio"],
"env": { "UNIONE_API_KEY": "<your API key>" }
}
}
}
Claude Code では、1 行で設定できます。
claude mcp add unione --env UNIONE_API_KEY=<your API key> -- npx -y unione-mcp
"show my UniOne account" と尋ねて接続を確認してください。アシスタントが
get_account を呼び出します。
ツール
各ツールにはクラスがあり、MCP アノテーションとしてクライアントに送信されます。
- read — 読み取り専用です(
readOnlyHint)。 - write — 何かを作成または変更します。失われるものはありません(
destructiveHint: false)。 - dangerous — 完全に削除または上書きするか、取り消せない操作です(
destructiveHint: true)。 クライアントはこのような呼び出しの前に確認を求めます。
| 領域 | ツール | 内容 | クラス |
|---|---|---|---|
| アカウント | get_account | UniOne アカウントを取得 | read |
| ドメイン | list_domains | 送信者ドメインの一覧を取得 | read |
| ドメイン | get_dns_records | ドメインを追加/DNS レコードを取得 | write |
| ドメイン | validate_domain | ドメインの DNS レコードを確認 | read |
| ドメイン | delete_domain | 送信者ドメインを削除 | dangerous |
| ドメイン | get_sandbox_domain | サンドボックスドメインを取得 | write |
| 確認済みメールアドレス | list_confirmed_emails | 確認済みメールアドレスの一覧を取得 | read |
| 確認済みメールアドレス | add_confirmed_email | 確認済みメールアドレスを追加 | write |
| 確認済みメールアドレス | delete_confirmed_email | 確認済みメールアドレスを削除 | dangerous |
| 送信 | send_email | メールを送信(課金対象) | dangerous |
| テンプレート | list_templates | テンプレートの一覧を取得 | read |
| テンプレート | get_template | テンプレートを取得 | read |
| テンプレート | set_template | テンプレートを作成または上書き | dangerous |
| テンプレート | delete_template | テンプレートを削除 | dangerous |
| Webhook | list_webhooks | Webhook の一覧を取得 | read |
| Webhook | get_webhook | Webhook を取得 | read |
| Webhook | set_webhook | Webhook を作成または上書き | dangerous |
| Webhook | delete_webhook | Webhook を削除 | dangerous |
| 抑制 | get_suppression | アドレスの抑制設定を取得 | read |
| 抑制 | list_suppressions | 抑制設定の一覧を取得 | read |
| 抑制 | set_suppression | アドレスをブロック | dangerous |
| 抑制 | delete_suppression | アドレスのブロックを解除 | dangerous |
| 検証 | validate_email | メールアドレスを検証(課金対象) | write |
| イベントダンプ | request_event_dump | イベントダンプをリクエスト | write |
| イベントダンプ | get_event_dump | イベントダンプを取得 | read |
| イベントダンプ | delete_event_dump | イベントダンプを削除 | dangerous |
| タグ | list_tags | タグの一覧を取得 | read |
| タグ | delete_tag | タグを削除 | dangerous |
| プロジェクト | list_projects | プロジェクトの一覧を取得 | read |
| プロジェクト | create_project | プロジェクトを作成 | write |
| プロジェクト | update_project | プロジェクトを更新 | dangerous |
| プロジェクト | delete_project | プロジェクトを削除 | dangerous |
send_email は実際のメールを送信し、取り消せません。validate_email はアドレスごとに課金されます。アカウントの範囲を超えて動作するツール(send_email と add_confirmed_email はアドレスにメールを送信し、set_webhook は UniOne に URL を指定し、validate_email はメールボックスを照会します)は、openWorldHint: true でその旨を示します。
読み取り専用モードと送信無効モード
ローカルサーバーのツール一覧を絞り込むスイッチが 2 つあります。
| 変数 | 効果 |
|---|---|
MCP_READ_ONLY=1 | read ツールのみが一覧表示されます。アシスタントはアカウントを変更できません |
MCP_DISABLE_SEND=1 | send_email は一覧表示されません。アシスタントはメールを送信できません |
"env": { "UNIONE_API_KEY": "<your API key>", "MCP_READ_ONLY": "1" }
Docker を使う場合、env は docker プロセスにのみ渡されます。スイッチをコンテナに渡すには、イメージ名の前にコンテナ独自の -e を指定してください。
"args": ["run", "-i", "--rm", "-e", "UNIONE_API_KEY", "-e", "MCP_READ_ONLY", "ghcr.io/unione-repo/unione-mcp", "stdio"],
"env": { "UNIONE_API_KEY": "<your API key>", "MCP_READ_ONLY": "1" }
これらの設定が防ぐのはモデルによる誤操作であり、キーの所有者による操作ではありません。同じキーは Web API から直接使用できます。確実に制限するには、プロジェクト API キーを使用してください。
設定
すべて環境変数で設定します。作業ディレクトリ内の .env ファイルも読み込まれます。
.env.example にすべて記載されています。すべての値は起動時に検証されます。
| 変数 | 用途 |
|---|---|
UNIONE_API_KEY | ローカルモード:すべてのツールが使用する API キー |
UNIONE_API_URL | Web API のベース URL。デフォルトは https://api.unione.io/en/transactional/api/v1 です |
MCP_TRANSPORT | http(デフォルト)または stdio。unione-mcp stdio を実行しても設定されます |
MCP_READ_ONLY, MCP_DISABLE_SEND | 上記を参照 |
AUTH_MODE | セルフホストの HTTP モード:api_key(デフォルト)または oauth |
AUTHORIZATION_SERVER_URL, OAUTH_SCOPES, OAUTH_TOKEN_PREFIX, MCP_PUBLIC_URL | セルフホストの OAuth モード。OAUTH_TOKEN_PREFIX のデフォルトは uoat_ です。 |
LISTEN_HOST, PORT | セルフホストの HTTP モードのリスナー(デフォルト:すべてのインターフェイス、3000 から最初に使用可能なポート) |
UPSTREAM_TIMEOUT, UPSTREAM_MAX_BODY_BYTES, MCP_MAX_REQUEST_BYTES | Web API 呼び出しの制限と /mcp のリクエストボディ上限 |
LOG_LEVEL, LOG_FORMAT | debug、info、warn、error;text または json。常に stderr に出力します |
API キー、Authorization ヘッダー、Web API のレスポンスボディがログに記録されることはありません。
ドキュメント
- UniOne API:https://docs.unione.io
- AI エージェントを使ったインストール:llms-install.md
- 脆弱性の報告:SECURITY.md
- イシューとプルリクエスト:CONTRIBUTING.md
開発
go build -o bin/unione-mcp ./cmd/unione-mcp
go test ./internal/... ./cmd/... # unit tests, no network
# acceptance: the real binary over HTTP and stdio against a WireMock stand-in of the API
docker run -d --rm -p 8081:8081 wiremock/wiremock:3.4.1 --local-response-templating --port 8081
E2E_WIREMOCK_URL=http://localhost:8081 go test -tags=integration ./tests/...
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。