Skip to main content
Glama
megha2432

Zeotap CDP MCP Server

by megha2432

Zeotap CDP MCPサーバー

ClaudeをZeotapのAudience APIおよびDestination APIに接続するMCP(Model Context Protocol)サーバーです。クライアントは平易な英語で質問するだけで、Claudeが内部的にすべてのAPI呼び出しとID検索を処理します。


機能

  • Zeotapからオーディエンス、配信先、同期ステータスを取得

  • tiktokenを使用してAPIレスポンスを約85%圧縮し、Claudeがより多くのデータを扱えるように最適化

  • オーディエンスと配信先のデータを結合(API呼び出しを通じてSQL結合を再現)

  • 組織名やオーディエンス名を受け付け、クライアントがIDを知る必要を排除


ファイル構成

ファイル

用途

server.py

MCPサーバー — ツール呼び出し、APIリクエスト、レスポンス圧縮を処理

tools.yaml

設定 — 組織ID、ツール定義、LLMフレンドリーな説明

requirements.txt

Python依存関係

Skills.md

API設計図およびツール設計リファレンス

.env

ベアラートークン(コミット不可 — 1時間ごとに更新)


セットアップ

1. 依存関係のインストール

python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

2. ベアラートークンの取得

  1. unity.zeotap.com にログイン

  2. DevTools → Networkタブを開き、いずれかのリクエストをクリック

  3. Authorization: Bearer eyJ... の値(eyJ... の部分のみ)をコピー

3. トークンの設定

echo 'ZEOTAP_TOKEN=your-token-here' > .env

⚠️ トークンは1時間で期限切れになります。401エラーが発生した場合は、手順2〜3を繰り返してください。

4. MCP Inspectorで実行(テスト用)

npx @modelcontextprotocol/inspector .venv/bin/python server.py

ターミナルに表示されたURLを開いてください。


新しい組織の追加

各組織には2つのIDが必要です。Zeotapアプリでその組織を閲覧する際にDevToolsから検索してください:

ID

検索場所

用途

数値ID (例: 1918)

URL: /audiences/orgs/1918/...

オーディエンスAPI

UUID (例: efc1d9ad-...)

Networkタブ: /channelSettings/...?orgId=efc1...

配信先名の検索

tools.yaml を更新します:

audience_org_id: 1918
org_uuid: "efc1d9ad-8bb2-48a2-8c84-46f2e9f2b9b4"
org_name: "Your Org Name"

ツール

ツール

説明

必須パラメータ

get_org_overview

オーディエンス合計、ステータス内訳、サイズ上位5件

なし

search_audiences

名前またはステータスでオーディエンスを検索

オプション: query, status

get_audience_full

特定オーディエンスの詳細、フィルタ、配信先

audience_name または audience_id

get_org_full_report

全オーディエンスと配信先、同期ステータスの結合レポート

なし

list_all_destinations

組織に設定されている全配信先

なし (UUIDが必要)

get_destination_full

特定の配信先の詳細

destination_name または destination_id (UUIDが必要)

list_orgs

既知のクライアント組織とIDの一覧

なし


Claudeクエリの例

Claude Desktopに接続すると、以下のように質問できます:

質問

使用ツール

"オーディエンスの概要を教えて"

get_org_overview

"アクティブなオーディエンスをすべてリストアップして"

search_audiences

"Loyalty Programオーディエンスについて教えて"

get_audience_full

"同期に失敗しているオーディエンスはどれ?"

get_org_full_report

"CDPはどのプラットフォームに同期している?"

get_org_full_report

"どのような配信先がありますか?"

list_all_destinations


Claude Desktopへの接続

claude_desktop_config.json に以下を追加してください:

{
  "mcpServers": {
    "zeotap-cdp": {
      "command": "/Users/megha/Documents/MCP1/.venv/bin/python",
      "args": ["/Users/megha/Documents/MCP1/server.py"],
      "env": {
        "ZEOTAP_TOKEN": "your-token-here"
      }
    }
  }
}

Macの場合、設定ファイルは以下にあります: ~/Library/Application Support/Claude/claude_desktop_config.json

設定を更新した後、Claude Desktopを再起動してください。


オーディエンス ↔ 配信先の結合

get_org_full_report ツールは、以下の2つのAPI呼び出しを通じてSQL結合を再現します:

SELECT fpa.name, fpa.status, csw.status, ip.int_partner_name
FROM public_audience_destinations pad
JOIN public_first_party_audience fpa ON pad.first_party_audience_id = fpa.id
JOIN public_channel_service_workflow csw ON pad.latest_channel_service_workflow_id = csw.id
JOIN public_integration_partner ip ON pad.channel_id = ip.int_id
WHERE fpa.org_id = 1918

SQLフィールド

APIソース

fpa.name, fpa.status

audienceSummaries レスポンス

csw.status, csw.status_detail

destinationsSummary.status + statusDetail.message

ip.int_partner_name

channelSettings → integrationPartnerName (channelId = intId で結合)

channelSegmentId

destinationsSummary.integrationDetail.channelSegmentId


トークン削減効果

ツール

生トークン数

圧縮後

削減率

get_org_overview (100オーディエンス)

約15,000

約800

約95%

search_audiences (20件)

約8,000

約600

約93%

get_audience_full

約3,000

約300

約90%

get_org_full_report

約20,000

約2,000

約90%

Related MCP Connectors