mcpField
M
mailchimp-mcp-server

mailchimp-mcp-server

ローカル
github.com/cyanheadsビジネス・マーケティング22 週間前に更新

mailchimp-mcp-server について

mailchimp-mcp-serverは、MCPクライアントからMailchimpのキャンペーン、オーディエンス、購読者を管理するサーバーです。送信確認ゲートと送信後レポートを備えています。

主な機能

  1. 01キャンペーンの下書き、テスト、送信、予約
  2. 02オーディエンスと購読者レコードの管理
  3. 03セグメントとマージフィールドの作成・更新
  4. 04キャンペーンレポートと反応の確認
  5. 05任意のローカル素材・テンプレート利用

活用シーン

  1. 01ニュースレターの送信前準備とテスト
  2. 02購読者のインポートや更新
  3. 03クリック、開封、配信停止の確認
  4. 04ローカルテンプレートでキャンペーンを作成

MCP 対応

MCPツール、リソース、ニュースレター用プロンプトを通じて、Mailchimpのアカウント、オーディエンス、購読者、キャンペーン、テンプレート、レポートを操作できます。STDIOとStreamable HTTPに対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cyanheads-mailchimp": {
"command": "npx",
"args": [
"-y",
"@cyanheads/mailchimp-mcp-server"
],
"env": {
"MAILCHIMP_API_KEY": "<MAILCHIMP_API_KEY>",
"MAILCHIMP_BASE_URL": "<MAILCHIMP_BASE_URL>",
"MAILCHIMP_TIMEOUT_MS": "<MAILCHIMP_TIMEOUT_MS>",
"MAILCHIMP_MAX_RETRIES": "<MAILCHIMP_MAX_RETRIES>",
"MAILCHIMP_CONCURRENCY_LIMIT": "<MAILCHIMP_CONCURRENCY_LIMIT>",
"MAILCHIMP_ASSETS_DIR": "<MAILCHIMP_ASSETS_DIR>",
"MAILCHIMP_TEMPLATES_DIR": "<MAILCHIMP_TEMPLATES_DIR>",
"MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
"MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
"MCP_HTTP_HOST": "<MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<MCP_AUTH_MODE>"
}
}
}
}
起動コマンドnpx -y @cyanheads/mailchimp-mcp-server
設定が必要な環境変数
MAILCHIMP_API_KEYシークレットMailchimp Marketing API key, including the '-dc' data-center suffix (e.g. 'abc...-us22'). Generate at Mailchimp → Account → Extras → API keys.
MAILCHIMP_BASE_URLOverride the API base URL (for mock servers or testing). Defaults to 'https://{dc}.api.mailchimp.com/3.0' derived from the API key suffix.
MAILCHIMP_TIMEOUT_MSPer-request timeout in milliseconds.
MAILCHIMP_MAX_RETRIESMax retry attempts for transient upstream failures (0-10).
MAILCHIMP_CONCURRENCY_LIMITMax in-flight upstream requests across this process (1-10).
MAILCHIMP_ASSETS_DIRAbsolute path to a local assets directory. When set (Node-only — Workers ignored), enables the `mailchimp_assets` tool and auto-uploads `@assets/<path>` references in campaign HTML to Mailchimp File Manager at send time. Cache at <dir>/.mailchimp-cache.json.
MAILCHIMP_TEMPLATES_DIRAbsolute path to a local templates directory. When set (Node-only), enables the `mailchimp_local_templates` tool and support for `content.localTemplate` on campaign tools. Templates are `.eta` files with optional YAML frontmatter; legacy `<name>.meta.yaml` sidecars are read when frontmatter is absent. Canonical write path on free-tier Mailchimp.
MCP_LOG_LEVELMinimum log level for output: debug, info, notice, warning, or error.
MCP_TRANSPORT_TYPESelects the HTTP transport.
MCP_HTTP_HOSTThe hostname for the HTTP server.
MCP_HTTP_PORTThe port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHThe endpoint path for the MCP server.
MCP_AUTH_MODEシークレットAuthentication mode to use: 'none', 'jwt', or 'oauth'.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@cyanheads/mailchimp-mcp-server0.4.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

@cyanheads/mailchimp-mcp-server

MCP クライアントから Mailchimp キャンペーンの下書き作成、テスト、送信を直接行えます。オーディエンス管理、購読者の CRUD、送信後の分析機能を備え、送信はデフォルトで安全なゲートによって制御されます。STDIO または Streamable HTTP に対応しています。

18 個のツール(条件付きでさらに 2 個) • 4 個のリソース • 1 個のプロンプト

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework


概要

Mailchimp のキャンペーン管理。メールキャンペーンの下書き作成、テスト、送信、オーディエンスや購読者の管理、送信後の分析の確認ができます。作成時に使用する画像やテンプレートを格納するローカルディレクトリも、必要に応じて設定できます。

ツール
ツール説明
mailchimp_accountアカウントのプロフィール、プラン、データセンター、Chimp Chatter のアクティビティフィード
mailchimp_audiencesオーディエンス(リスト)の読み取り、作成、更新。オーディエンスごとの分析と登録フォームの設定にも対応
mailchimp_audience_overview1 回の呼び出しでオーディエンスの概要を取得:情報、統計、成長履歴、メールクライアント上位、マージフィールドのスキーマ
mailchimp_subscribers登録者の読み取り、更新、アーカイブ、タグ、メモ、エンゲージメント履歴
mailchimp_upsert_subscriberステータス、マージフィールド、タグ、メモを指定して、1 人の登録者を冪等に追加または更新
mailchimp_find_subscriber1 つのオーディエンス内、またはアカウント全体からメールアドレスで登録者を検索
mailchimp_import_subscribers1 回の呼び出しにつき最大 500 人の登録者を一括追加または更新。デフォルトは pending
mailchimp_segmentsセグメントの CRUD(保存済み、静的、ファジー)、メンバーの一覧表示、一括追加・削除
mailchimp_merge_fields登録者のカスタム属性の読み取り、作成、更新
mailchimp_campaignsキャンペーンの記録、コンテンツ、送信チェックリスト、RSS/再送の制御
mailchimp_send_campaign1 回の呼び出しでキャンペーンを作成し、下書きとして保存、テスト、送信、またはスケジュール設定
mailchimp_replicate_campaign上書き設定を適用してキャンペーンを複製し、下書き、テスト、送信、またはスケジュール設定
mailchimp_reportsキャンペーンレポート:一覧、個別レポート、または 10 種類のレポート指標のいずれか
mailchimp_campaign_report送信後の概要:主要指標、上位リンク、地域、配信停止
mailchimp_templatesMailchimp ホストのテンプレート。無料プランでは読み取り可能、有料プランでは書き込み可能
mailchimp_filesMailchimp の CDN 上でのファイルマネージャーへのアップロード、一覧表示、名前変更、削除
mailchimp_searchアカウント全体からメンバーまたはキャンペーンを検索
mailchimp_assets (条件付き:MAILCHIMP_ASSETS_DIR)キャンペーン HTML 内の @assets/<path> 参照に使うアップロードを確認し、事前にウォームアップ
mailchimp_local_templates (条件付き:MAILCHIMP_TEMPLATES_DIR)ローカルの .eta テンプレートを作成・レンダリング。無料プランでのテンプレート書き込み方法
mailchimp_playbookライブアカウントの状態と統合した手順プレイブック。アドバイスのみ
リソース
リソース説明
mailchimp://accountアカウントのスナップショット:プロフィール、プラン、データセンター、登録者総数
mailchimp://audiences/{audienceId}オーディエンスのスナップショット:名前、連絡先、統計、ダブルオプトインの状態
mailchimp://campaigns/{campaignId}キャンペーンのスナップショット:ステータス、設定、受信者
mailchimp://campaigns/{campaignId}/reportキャンペーンの送信後の主要指標

リソースのデータはすべてツールからも取得できます。オーディエンスとキャンペーンは各ツールの list 操作で一覧表示できます。

プロンプト
プロンプト説明
newsletter_from_sourceURL または概要から編集者向けニュースレターを作成し、下書き、テスト、送信の手順に沿って進めます

デザインの参考資料:docs/email-design-playbook.md。

機能リファレンス

mailchimp_account tool
  • operation: info はプロフィール、プラン、データセンター、登録者総数、業界ベンチマークを返します。operation: activity-feed は count(最大 100、デフォルト 20)と offset でページ分割された Chimp Chatter イベントを返します
  • アクティビティフィードが空の場合、考えられる原因を示す note が含まれます

mailchimp_audiences tool
  • 操作:list、get、create、update、分析情報の読み取り操作 list-activity、list-growth、list-clients、list-abuse-reports、list-locations、および get-signup-forms/customize-signup-forms(signupFormConfig を受け取ります)。list と create 以外のすべての操作で audienceId が必要です
  • create には name、contact(company、address1、city、state、zip、country)、permissionReminder、campaignDefaults(fromName、fromEmail、language)が必要です

mailchimp_audience_overview ツール
  • audienceId と growthMonths(1~36、デフォルトは12)を指定します。情報、統計、連絡先、キャンペーンのデフォルト設定、成長履歴、利用者数の多いメールクライアント、マージフィールドのスキーマを返します
  • notes[] では、成長データまたはメールクライアントの配列が空の場合に、「まだデータがない」状態とエンゲージメントがゼロの状態を区別して説明します

mailchimp_subscribers ツール
  • すべての呼び出しで audienceId が必要です。list(status でフィルタリング可能)以外のすべての操作では email も必要です。操作は list、get、update、archive、list-tags、set-tags、list-notes / add-note / update-note / delete-note(noteId で指定)、list-activity / list-events / list-goals です
  • アドレスの前後の空白は削除され、ローカル部またはドメイン部が欠けている場合は拒否されます。list の email が空の場合、フィルターは適用されません。購読を再開する際、update で subscribed に変更すると確認が求められます。すでに購読済みのメンバーはそのままです
  • set-tags は宣言的に動作します。tags が有効なタグの完全なセットとなり、preserveTags で指定しない限り、その他のタグはすべて削除されます(静的セグメントへの所属はタグとして保存されます)。tagsAdded、tagsRemoved、tagsActive を返します

mailchimp_upsert_subscriber ツール
  • audienceId、email、status は必須です。mergeFields、tags + preserveTags(set-tags と同じ宣言的な同期)、note、vip、language は任意です。updateExistingStatus: false を指定すると、新規レコードにのみ status が適用されます
  • isNew、処理後の status、tagsAdded / tagsRemoved / tagsFinal、noteAttached、webUrl を返します
  • status: "pending" は Mailchimp のダブルオプトインフローを使用します。新規または再開時の subscribed ステータスは、書き込みを行う前に、文書化された同意の確認を求めます。確認を拒否した場合、何も書き込まれません。すでに購読済みのレコードの更新と updateExistingStatus: false の場合は、確認を求めず既存のステータスを維持します

mailchimp_find_subscriber ツール
  • email には、メールアドレスまたは自由形式の検索フラグメントを指定できます。@ を含まないフラグメントも指定できます。対象は、指定した単一の audienceId、または省略した場合はアカウント内のすべてのオーディエンスです(searchedAcross に反映されます)
  • マージフィールドと統計を含む exactMatches と fuzzyMatches を返します。includeTags(デフォルトは true)を指定すると、各一致のタグも追加で返します(各一致につき呼び出しが1回追加されます)

mailchimp_import_subscribers ツール
  • 1回の呼び出しにつき audienceId と1~500件の subscribers 行が必要です。status のデフォルトは pending(ダブルオプトイン)で、行ごとの status で上書きできます。updateExisting のデフォルトは false のため、既存のレコードはスキップされます
  • subscribed になる行がある場合、バッチ全体を書き込む前に1回確認が必要です。確認を拒否した場合、何も書き込まれません。pending のみのインポートでは確認は不要です
  • totalCreated、totalUpdated、errorCount、および各行の succeeded と failed の項目を返します。不完全なアドレスは invalid_email として失敗し、有効な行がないバッチは上流へのリクエストを行いません

mailchimp_segments ツール
  • すべての呼び出しで audienceId が必要です。list(type で saved、static、fuzzy に絞り込み可能)および create 以外のすべての操作では segmentId が必要です。create / update では name、staticEmails、または保存済みセグメントの options を指定します
  • batch-update-members は静的セグメントに membersToAdd / membersToRemove を適用し、added、removed、メールアドレスごとの errors を返します
  • 無料プランでは静的セグメントと基本的な保存済みセグメントを利用できます。高度な条件には Premium が必要で、利用できない場合は mailchimp_forbidden として失敗します

mailchimp_merge_fields ツール
  • list、get、create、update を利用できます。create では name、tag(最大10文字)、type が必須です。get / update では mergeId を指定します
  • options にはタイプ固有の設定を指定します。dropdown / radio には choices、date / birthday には date_format、phone には phone_format を指定します
mailchimp_campaigns ツール
  • 操作:list(status、listId、sinceSendTime / beforeSendTime で絞り込み)、get、create(regular / plaintext / rss の type に加え、recipients と settings)、update、replicate、get-content、set-content、get-checklist、cancel-send、create-resend、pause-rss、resume-rss。list と create 以外はすべて campaignId を受け取ります
  • set-content は html、plainText、templateId + templateSections、archiveContent、url、または localTemplate を受け付けます(localTemplate は html および templateId と併用できません)。get-checklist は isReady と型付きの項目を返します
  • get-content は variant: html | plainText | archiveHtml | all を受け付けます(デフォルトは all)。空の本文は省略されます
  • ここでは送信、テスト、スケジュール設定、削除は行いません。配信は mailchimp_send_campaign または mailchimp_replicate_campaign を通じて行います

mailchimp_send_campaign ツール
  • audienceId、subject、fromName、replyTo、および content(html、plainText、templateId、localTemplate のうち少なくとも1つ)が必須です。mode は draft(デフォルト)、test(testEmails が必要、最大50件)、send、または schedule(15分以上先の scheduleTime が必要)です
  • campaignId、実際に適用された mode、status、recipientCount、webUrl、およびブロックを伴わない checklistWarnings を返します。draft 以外では、チェックリストのブロックエラーにより pre_send_checklist_failed がスローされます。また、cleanupOnError(デフォルトは true)は処理途中で失敗した場合に下書きを削除します
  • send と schedule には confirmSend: true が必要です。また、キャンペーン作成前に1回限りの確認プロンプトが表示されます。確認を断ると下書きが残り、cancelledByUser が設定されます。コンテンツが変更された場合や再実行時には、再度確認を求められます。上流で曖昧な失敗が発生した場合、作成は再試行されません

mailchimp_replicate_campaign ツール
  • sourceCampaignId に加えて、subjectOverride、previewTextOverride、fromNameOverride、replyToOverride、titleOverride、audienceOverride、segmentOverride、contentOverride は任意です。mode、testEmails、scheduleTime、cleanupOnError は mailchimp_send_campaign と同様に動作します
  • 新しい campaignId、overridesApplied[]、および同じ status、チェックリスト、cancelledByUser の各フィールドを返します
  • send と schedule では、同様に confirmSend: true と確認プロンプトによるゲートが必要です

mailchimp_reports ツール
  • list(type、sinceSendTime / beforeSendTime で絞り込み)、get、または campaignId と dimension を指定する slice。dimension は abuse-reports、advice、click-details(linkId でURLを1つ指定)、open-details(subscriberHash でメンバーを1人指定)、domain-performance、eepurl、email-activity、locations、sent-to、unsubscribed です
  • slice はディメンションに応じた形式の rows と totalItems を返します。送信履歴のないキャンペーンに対する get は campaign_not_sent をスローします

mailchimp_campaign_report ツール
  • campaignId に加え、各スライスの行数を指定する includeTopN(1~100、デフォルトは10)
  • delivery(配信済み数、種類別のバウンス数、迷惑メール報告)、engagement(開封数、クリック数、配信停止数)、topClickedLinks、topLocations、recentUnsubscribes、および Mailchimp が提供する場合は industryBenchmarks を返します。送信履歴のないキャンペーンでは campaign_not_sent をスローします

mailchimp_templates ツール
  • list(user / base / gallery の type、category、folderId で絞り込み)、get、get-default-content、create、update、delete。update で受け付けるのは name、html、folderId のみです。セクションごとの編集はキャンペーンの templateSections を通じて行います
  • 無料プランでも base と user テンプレートの読み取りは可能です。書き込みと gallery の読み取りには有料プランが必要で、利用できない場合は mailchimp_forbidden が返されます。すべてのプランで、テンプレートの作成には mailchimp_local_templates を使用できます

mailchimp_files ツール
  • list(type、folderId、sinceCreatedAt / beforeCreatedAt でフィルタリング)、get、upload(拡張子付きの name と base64 の fileData。data: プレフィックスは不要)、update(名前変更、または folderId を指定して移動。ルートには 0 を指定)、delete、読み取り専用の list-folders / get-folder を利用できます。アップロード上限は画像が 1 MB、その他のファイルが 10 MB で、.webp / .avif は受け付けられません
  • upload と get は、キャンペーン HTML に埋め込む公開 CDN URL の fullSizeUrl を返します。list は totalFileSizeInBytes も返します

mailchimp_search ツール
  • scope(members または campaigns)と query を指定します。audienceId でメンバー検索を絞り込み、includeTopN(1~100、デフォルトは 10)で各結果配列の上限を設定します
  • メンバーは exact と fuzzy として返され、上流の totalExact / totalFuzzy も含まれます。キャンペーンは snippet と totalMatches を含む matches として返されます。結果が空の場合は note が含まれます

mailchimp_assets ツール
  • list、info(relPath を指定。sha256 と、キャッシュ済みのアップロードがあればその情報を返します)、sync(送信前にキャッシュされていないファイルをアップロードし、uploaded、cached、理由付きの skipped を返します)、clear-cache を利用できます
  • mailchimp_send_campaign、mailchimp_replicate_campaign、または mailchimp_campaigns の set-content に渡すコンテンツ内の @assets/<path> 参照は、ファイルマネージャーにアップロードされ、CDN URL に書き換えられます。アップロードは <assetsDir>/.mailchimp-cache.json 内で SHA-256 によってキャッシュされます。サイズ超過のファイルとディレクトリ外のパスは、アップロード前に拒否されます
  • MAILCHIMP_ASSETS_DIR が設定されている場合にのみ一覧に表示されます

mailchimp_local_templates ツール
  • list、get(ソースと解析済みのメタデータ)、render-preview(name と vars を指定。HTML を返し、送信はしません)、seed-from-mailchimp(Mailchimp テンプレートの mailchimpTemplateId を name としてディスクに書き込みます)を利用できます
  • テンプレートは .eta ファイルで、subject、previewText、vars 用の YAML フロントマターを任意で設定できます。宣言済みの変数に値が渡されない場合、レンダリングは失敗します。キャンペーンツールでは content.localTemplate と content.localTemplateVars を使ってテンプレートをレンダリングできます。この方法は html および templateId と併用できません。テンプレートの例
  • MAILCHIMP_TEMPLATES_DIR が設定されている場合にのみ一覧に表示されます

mailchimp_playbook ツール
  • topic:send、post-send-review、deliverability、list-hygiene、onboarding、subscriber-triage、または design-campaign。send / list-hygiene / design-campaign には audienceId、post-send-review には campaignId、subscriber-triage には email を指定します
  • ライブの数値に合わせた Markdown の instructions、liveState スナップショット、入力値が事前入力された nextToolSuggestions を返します。書き込みは行いません

mailchimp://account リソース
  • パラメーターはありません。プロフィール、プラン、データセンター、購読者総数、fetchedAt を含む application/json を返します
  • mailchimp_account の operation: info と同じデータです

mailchimp://audiences/{audienceId} リソース
  • 名前、連絡先、統計、キャンペーンのデフォルト設定、許可に関するリマインダー、ダブルオプトインのステータス、購読 URL を返します
  • audienceId は mailchimp_audiences の operation: list から取得します

mailchimp://campaigns/{campaignId} リソース
  • ステータス、設定、宛先、トラッキング、レポートの概要を返します
  • campaignId は mailchimp_campaigns の operation: list から取得します

mailchimp://campaigns/{campaignId}/report リソース
  • 送信済みメール、バウンス、開封、クリック、配信停止、迷惑メール報告、業界統計を返します
  • キャンペーンが送信されるまでは、検証エラーで失敗します

newsletter_from_source プロンプト
  • 引数:source(URL または自由形式の概要)は必須、audienceId と seasonalContext は任意です
  • mailchimp_playbook(topic: design-campaign)の結果を HTML の下書きにつなげ、その後 mailchimp_send_campaign で下書き、テスト、送信を行う、1 つのユーザーメッセージを返します

機能

@cyanheads/mcp-ts-core を基盤としています。stdio および Streamable HTTP トランスポート、切り替え可能な認証(none / jwt / oauth)、切り替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレースを備えた構造化ログに対応しています。

Mailchimp 固有の機能:

  • キーの -<dc> サフィックスから API ホストとデータセンターを特定する Marketing API v3 クライアント。再試行、プロセス全体に適用される同時実行数の上限(MAILCHIMP_CONCURRENCY_LIMIT)、429 発生後のクールダウンに対応しています
  • 送信制御:キャンペーンはデフォルトで draft になり、send / schedule には confirmSend: true と確認プロンプトが必要です。また、新規または再開する subscribed サブスクリプションにも確認が必要です。インポートはデフォルトで pending になります
  • 取り消し不能な削除はありません:オーディエンス、マージフィールド、キャンペーンの削除、および購読者の完全削除は Mailchimp UI で行います。購読者の削除方法として最も強い操作は archive です
  • ローカルでの作成:@assets/<path> ファイルは送信時にアップロードしてパスを書き換え、.eta テンプレートはローカルでレンダリングします。これにより、Templates API が読み取り専用の無料プランにも対応します
  • count(最大 1000)と offset によるリスト操作のページネーション

エージェントに使いやすい出力:

  • 空の結果の説明:空のアクティビティフィード、オーディエンスの概要、検索結果に含まれる note / notes[] で、データがないのか、実際に件数がゼロなのかを示します
  • 部分的な失敗:mailchimp_import_subscribers と mailchimp_segments の batch-update-members は、バッチ全体を失敗させるのではなく、行ごとの成功とエラーを返します
  • 判別可能な出力:operation、dimension、mode で、どのフィールドに値が設定されているかを示します。isNew と cancelledByUser は実際に何が起きたかを報告します
  • 型付きエラー:宣言されているすべての理由(campaign_not_sent、pre_send_checklist_failed、mailchimp_forbidden、…)に、呼び出し元が次に取るべき対応を示すヒントが付いています

はじめに

以下を MCP クライアントの設定ファイルに追加します。Mailchimp API キーの生成方法については、docs/api-key.md を参照してください。

{
  "mcpServers": {
    "mailchimp-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/mailchimp-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "MAILCHIMP_API_KEY": "your-key-with-dc-suffix-e.g.-us22"
      }
    }
  }
}

または npx を使用する場合(Bun は不要です):

{
  "mcpServers": {
    "mailchimp-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/mailchimp-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "MAILCHIMP_API_KEY": "your-key-with-dc-suffix-e.g.-us22"
      }
    }
  }
}

または Docker を使用する場合:

{
  "mcpServers": {
    "mailchimp-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "MCP_TRANSPORT_TYPE=stdio",
        "-e", "MAILCHIMP_API_KEY=your-key-with-dc-suffix-e.g.-us22",
        "ghcr.io/cyanheads/mailchimp-mcp-server:latest"
      ]
    }
  }
}

Streamable HTTP を使用する場合は、トランスポートを設定してサーバーを起動します:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 MAILCHIMP_API_KEY=... bun run start:http
# Server listens at http://localhost:3010/mcp
前提条件
  • Bun v1.4.0 以降(または Node.js v24 以降)。
  • Mailchimp Marketing API キー。-dc サフィックス(例:-us22)でデータセンターを識別し、起動時に解析します。
インストール
  1. リポジトリをクローンします:
git clone https://github.com/cyanheads/mailchimp-mcp-server.git
  1. ディレクトリに移動します:
cd mailchimp-mcp-server
  1. 依存関係をインストールします:
bun install
  1. 環境を設定します:
cp .env.example .env
# edit .env and set MAILCHIMP_API_KEY

設定

変数説明デフォルト
MAILCHIMP_API_KEY必須。 -dc サフィックスを含むマーケティング API キー(例:abc…-us22)。なし
MAILCHIMP_BASE_URLモックサーバーやテスト用の API ベース URL の上書き値。https://{dc}.api.mailchimp.com/3.0
MAILCHIMP_TIMEOUT_MSリクエストごとのタイムアウト(ミリ秒)。60000
MAILCHIMP_MAX_RETRIES一時的な上流障害に対する再試行回数(0~10)。3
MAILCHIMP_CONCURRENCY_LIMITプロセス全体で同時に処理する上流リクエストの最大数(1~10)。4
MAILCHIMP_ASSETS_DIRローカルアセットディレクトリの絶対パス。mailchimp_assets と、キャンペーン HTML での @assets/<path> アップロードが有効になります。なし
MAILCHIMP_TEMPLATES_DIRローカルテンプレートディレクトリの絶対パス。mailchimp_local_templates と、キャンペーンツールの content.localTemplate が有効になります。なし
MCP_TRANSPORT_TYPEトランスポート:stdio または http。stdio
MCP_HTTP_PORTHTTP サーバーのポート。3010
MCP_SESSION_MODEセッションモード。確認には stateful が必要です。stateless では HTTP の起動が拒否されます(stdio には影響しません)。stateful
MCP_REQUEST_STATE_KEY任意のシーリングキー。32 バイト以上が必要です。確認は1回限りで、単一のプロセスに紐付けられるため、再起動した場合や別のインスタンスでは再度確認を求められます。なし
MCP_AUTH_MODE認証方式:none、jwt、または oauth。none
MCP_LOG_LEVELログレベル(debug、info、warning、error など)。info
LOGS_DIRログファイルのディレクトリ(Node.js のみ)。<app-root>/logs
OTEL_ENABLEDOpenTelemetry を有効にします。false
OTEL_EXPORTER_OTLP_ENDPOINTトレースとメトリクスのベース URL。なし
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTOTLP ログエンドポイント。これを設定しない限り、ログのエクスポートは無効です。なし
LOG_TOOL_FAILURE_PAYLOADS失敗した呼び出しの引数と結果を記録します。キー名による機密情報のマスキングと、LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES(デフォルトは 16384)によるサイズ制限が適用されます。自由形式の値に含まれるシークレットは表示されたままです。false

オプションの上書き設定の全一覧については、.env.example を参照してください。

サーバーの実行

ローカル開発
  • ウォッチモード(MCP_TRANSPORT_TYPE でトランスポートを指定):

    bun run dev                           # stdio (default)
    MCP_TRANSPORT_TYPE=http bun run dev   # http
    
  • ビルドして実行:

    bun run rebuild
    bun run start:stdio
    # or
    bun run start:http
    
  • チェックとテストを実行:

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    
Docker
docker build -t mailchimp-mcp-server .
docker run --rm -e MAILCHIMP_API_KEY=your-key-us22 -p 3010:3010 mailchimp-mcp-server

Dockerfile のデフォルトは HTTP トランスポート、ステートフルセッションモードで、ログは /var/log/mailchimp-mcp-server に出力されます。OpenTelemetry のピア依存関係はデフォルトでインストールされます。これらを省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。

プロジェクト構成

ディレクトリ用途
src/index.tscreateApp() エントリーポイント。ツール、リソース、プロンプトを登録し、サービスを初期化します。
src/configMAILCHIMP_* 環境変数の解析と、Zod による検証。
src/mcp-server/toolsツール定義(*.tool.ts)と、テンプレートのレンダリング、アセットの書き換え、送信確認の共通ヘルパー。
src/mcp-server/resourcesリソース定義(*.resource.ts)。
src/mcp-server/promptsプロンプト定義(*.prompt.ts)。
src/services/mailchimpMailchimp API クライアント:HTTP、リクエストのペーシング、再試行、レスポンスの正規化。
src/services/assetsローカルアセット:検出、ハッシュ化、アップロードキャッシュ、@assets/ の書き換え。
src/services/templatesローカルテンプレート:Eta によるレンダリング、フロントマターの解析、Mailchimp からのシード。
templates/.eta のサンプルテンプレート。このディレクトリを指定すると試用できます。
docs/API キーのガイドとメールデザインのプレイブック。
tests/設定、サービス、ツール、プロンプトの Vitest テストスイート。

開発ガイド

開発ガイドラインとアーキテクチャのルールについては、CLAUDE.md を参照してください。要点は次のとおりです。

  • ハンドラーで例外をスローし、フレームワークで捕捉します。ツールのロジック内で try/catch は使用しません
  • リクエスト単位のログ記録には ctx.log を使用します
  • 新しいツールとリソースは、src/mcp-server/*/definitions/index.ts のバレル経由で登録します
  • 外部 API 呼び出しをラップします。生データを検証し、ドメイン型に正規化してから、出力スキーマを返します。不足しているフィールドを決して捏造しないでください

コントリビューション

問題の報告を歓迎します。提出前にチェックとテストを実行してください。

bun run devcheck
bun run test

ライセンス

Apache-2.0 — 詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。