Skip to main content
Glama
megha2432

Zeotap CDP MCP Server

by megha2432

MCP-сервер Zeotap CDP

MCP-сервер (Model Context Protocol), который подключает Claude к API аудиторий и пунктов назначения Zeotap. Клиенты могут задавать вопросы на обычном английском языке — Claude самостоятельно выполняет все вызовы API и поиск ID.


Что он делает

  • Получает данные об аудиториях, пунктах назначения и статусе синхронизации из Zeotap

  • Сжимает ответы API примерно на 85% с помощью tiktoken, чтобы Claude мог обрабатывать больше данных

  • Объединяет данные об аудиториях и пунктах назначения (воспроизводя ваш SQL JOIN через вызовы API)

  • Принимает названия организаций и аудиторий — клиентам не нужно знать ID


Файлы

Файл

Назначение

server.py

MCP-сервер — обрабатывает вызовы инструментов, запросы API, сжатие ответов

tools.yaml

Конфигурация — ID организаций, определения инструментов, описания для LLM

requirements.txt

Зависимости Python

Skills.md

Полная схема API и справочник по проектированию инструментов

.env

Токен Bearer (не коммитится — обновляйте каждый час)


Настройка

1. Установите зависимости

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

2. Получите токен Bearer

  1. Войдите на unity.zeotap.com

  2. Откройте DevTools → вкладка Network → нажмите на любой запрос

  3. Скопируйте значение Authorization: Bearer eyJ... (только часть eyJ...)

3. Установите токен

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

⚠️ Срок действия токенов истекает через 1 час. Повторяйте шаги 2–3 при получении ошибки 401.

4. Запустите с помощью MCP Inspector (для тестирования)

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

Откройте URL, выведенный в терминале.


Добавление новой организации

Для каждой организации нужны два ID. Найдите их в DevTools при просмотре этой организации в приложении Zeotap:

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 клиенты могут спрашивать:

Вопрос

Используемый инструмент

"Give me a summary of our audiences"

get_org_overview

"List all active audiences"

search_audiences

"Tell me about the Loyalty Program audience"

get_audience_full

"Which audiences are failing to sync?"

get_org_full_report

"What platforms is our CDP syncing to?"

get_org_full_report

"What destinations do we have?"

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 воспроизводит этот SQL JOIN через два вызова API:

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