MCP サーバー
SpacePost は Model Context Protocol に対応しているため、AI アシスタントがユーザーに代わってメールを送信し、ドメイン、API キー、Webhook、オーディエンス、コンタクト、一斉配信、送信停止リスト、テナントを管理できます。
API リファレンスのすべてのエンドポイントが MCP ツールです。 ツールはリファレンスと同じ OpenAPI ドキュメントから生成されるため、API に機能が追加されると、MCP サーバーでも自動的に使えるようになります。別のリストを管理したり、対応を待ったりする必要はありません。
接続方法は 2 つあります。
- ホスト型(推奨):
https://api.spacepost.dev/mcp。Streamable HTTP で、API キーで認証します。インストールは不要です。 - ローカル:
npx -y @spacepost/mcp。お使いのマシンから API を呼び出す stdio サーバーです。ツールの定義はパッケージに同梱されているため、オフラインでも起動します。
ホスト型サーバーに接続する
Section titled “ホスト型サーバーに接続する”API キーを Bearer トークンとして送信します: Authorization: Bearer sp_live_...。
claude mcp add --transport http spacepost https://api.spacepost.dev/mcp \ --header "Authorization: Bearer sp_live_YOUR_API_KEY"claude mcp list で確認できます。
Claude Desktop は claude_desktop_config.json からローカル(stdio)サーバーを起動するため、mcp-remote でホスト型のエンドポイントに中継します
(Settings、Developer、Edit Config):
{ "mcpServers": { "spacepost": { "command": "npx", "args": [ "-y", "mcp-remote", "https://api.spacepost.dev/mcp", "--header", "Authorization:${SPACEPOST_AUTH}" ], "env": { "SPACEPOST_AUTH": "Bearer sp_live_YOUR_API_KEY" } } }}Claude Desktop を再起動してください。代わりにローカルサーバーを使うこともできます。
プロジェクトの .cursor/mcp.json、またはグローバルな ~/.cursor/mcp.json に追加します。
{ "mcpServers": { "spacepost": { "url": "https://api.spacepost.dev/mcp", "headers": { "Authorization": "Bearer sp_live_YOUR_API_KEY" } } }}.vscode/mcp.json に追加します。
{ "inputs": [ { "id": "spacepost-key", "type": "promptString", "description": "SpacePost API key", "password": true } ], "servers": { "spacepost": { "type": "http", "url": "https://api.spacepost.dev/mcp", "headers": { "Authorization": "Bearer ${input:spacepost-key}" } } }}VS Code は初回にキーの入力を求め、キーをファイルには残しません。
URL のクエリパラメーターでツールを絞り込めます。例: https://api.spacepost.dev/mcp?read_only=true&toolsets=emails,domains
ホスト型サーバーはステートレスです。各リクエストは独立しているため、/mcp への GET と DELETE は 405 を返し、再開するセッションはありません。
ローカルでサーバーを実行する
Section titled “ローカルでサーバーを実行する”| 変数 | 必須 | 説明 |
|---|---|---|
SPACEPOST_API_KEY |
はい | API キー |
SPACEPOST_BASE_URL |
いいえ | 別の API の URL。既定値は https://api.spacepost.dev |
SPACEPOST_DEFAULT_FROM |
いいえ | アシスタントが from なしで send_email を呼び出したときに使う送信者。例: Acme <hello@acme.com> |
SPACEPOST_READ_ONLY |
いいえ | true は --read-only と同じです |
SPACEPOST_TOOLSETS |
いいえ | --toolsets と同じです。例: emails,domains |
SPACEPOST_PERMISSION |
いいえ | --permission と同じです。キーが送信専用の場合は sending_access を設定します |
claude mcp add spacepost -e SPACEPOST_API_KEY=sp_live_YOUR_API_KEY -- npx -y @spacepost/mcp既定の送信者を設定するには -e SPACEPOST_DEFAULT_FROM="Acme <hello@acme.com>" を追加します。パッケージ名の後にフラグを付けることもできます(例: npx -y @spacepost/mcp --read-only)。
{ "mcpServers": { "spacepost": { "command": "npx", "args": ["-y", "@spacepost/mcp"], "env": { "SPACEPOST_API_KEY": "sp_live_YOUR_API_KEY", "SPACEPOST_DEFAULT_FROM": "Acme <hello@acme.com>" } } }}{ "mcpServers": { "spacepost": { "command": "npx", "args": ["-y", "@spacepost/mcp", "--toolsets", "emails,domains"], "env": { "SPACEPOST_API_KEY": "sp_live_YOUR_API_KEY" } } }}{ "inputs": [ { "id": "spacepost-key", "type": "promptString", "description": "SpacePost API key", "password": true } ], "servers": { "spacepost": { "type": "stdio", "command": "npx", "args": ["-y", "@spacepost/mcp"], "env": { "SPACEPOST_API_KEY": "${input:spacepost-key}" } } }}npx -y @spacepost/mcp --help でオプションを一覧でき、--list-tools でその設定で公開されるツールを表示できます。
| ローカルのフラグ | ホスト型のクエリ | 効果 |
|---|---|---|
--read-only |
read_only=true |
GET エンドポイントのツールのみ(list_*、get_*、get_broadcast_readiness) |
--permission sending_access |
キーから自動判定 | sending_access キーで使えるツールのみ |
--toolsets emails,domains |
toolsets=emails,domains |
指定した API 領域のツールのみ: emails、domains、apikeys、webhooks、audiences、contacts、broadcasts、suppressions、tenants(リファレンスのセクションです。大文字と小文字、スペース、ダッシュは無視されるため、api-keys も使えます) |
両方を組み合わせることもできます。
ツールと API の対応
Section titled “ツールと API の対応”- エンドポイントごとに 1 つのツールがあり、エンドポイントの
operationIdをスネークケースにした名前が付きます。sendEmailはsend_email、getBroadcastReadinessはget_broadcast_readiness、pauseTenantはpause_tenantになります。すべてのフィールドは API リファレンスに記載されています。 - 引数は 1 つのフラットなオブジェクトです。パスパラメーター(スネークケース。例:
id、audience_id、ref)、クエリパラメーター(limit、after、before)、JSON ボディのフィールド(from、to、subjectなど)を含みます。ボディのフィールドがパラメーターと同じ名前の場合は、body_<field>という名前になります。send_batch_emailsの配列のように、オブジェクトではないボディはbodyとして渡します。 send_emailとsend_batch_emailsのidempotency_keyはIdempotency-Keyヘッダーを設定するため、再試行しても二重に送信されません。- 結果は API の JSON レスポンスで、構造化コンテンツとしても返されます。エラーは、
isError: trueと、REST API と同じ{ "statusCode", "name", "message" }のボディに、次に行うべきことのヒントを加えて返されます。 - 注釈は、ツールが何をするかをクライアントに伝えます。読み取りツールは
readOnlyHint、削除、cancel_email、pause_tenantはdestructiveHint、メールを送信するツール(send_email、send_batch_emails、send_broadcast)はopenWorldHintです。クライアントはこれを使って、ツールの実行前に確認を求めるかどうかを判断します。
プロンプトの例
Section titled “プロンプトの例”- 「onboarding@test.spacepost.dev から delivered@test.spacepost.dev に、挨拶のテストメールを送って。」
- 「ドメイン acme.com を追加して、作成すべき DNS レコードを教えて。」
- 「昨日 ada@example.com に送ったメールは配信された?」
- 「ベータ版リスト宛てのスケジュール済みメールをキャンセルして。」
- 「バウンスと苦情を https://acme.com/hooks に送る Webhook を作成して。」
- 「Newsletter オーディエンス宛ての一斉配信を下書きして、到達率の問題がないか確認して。ただし、まだ送信はしないで。」
- 「一時停止中のテナントはどれ? その理由も教えて。」