Skip to main content
Glama
megha2432

Zeotap CDP MCP Server

by megha2432

Zeotap CDP MCP 서버

Claude를 Zeotap의 오디언스 및 목적지 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

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시간마다 만료됩니다. 401 오류가 발생하면 2~3단계를 반복하세요.

4. MCP Inspector로 실행 (테스트용)

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

터미널에 출력된 URL을 엽니다.


새 조직 추가

각 조직에는 두 개의 ID가 필요합니다. Zeotap 앱에서 해당 조직을 탐색할 때 개발자 도구에서 찾을 수 있습니다:

ID

찾는 위치

용도

숫자 ID (예: 1918)

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

오디언스 API

UUID (예: efc1d9ad-...)

네트워크 탭: /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 도구는 두 번의 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