aapl-ads-mcp
aapl-ads-mcp
Claude(및 모든 MCP 호환 클라이언트)를 Apple Search Ads API v5에 연결하는 MCP 서버입니다.
소개
MCP(Model Context Protocol)는 AI 어시스턴트가 외부 도구를 호출할 수 있도록 하는 개방형 표준입니다. 이 서버는 MCP stdio 전송을 구현하며, Apple Search Ads 계정(캠페인, 광고 그룹, 키워드 및 성과 보고서)을 쿼리할 수 있는 9개의 읽기 전용 도구를 제공합니다.
한 번 설치하고 Claude Desktop에 연결하면 다음과 같이 평문 영어로 질문할 수 있습니다: "지난달에 가장 많은 설치를 유도한 키워드는 무엇인가요?" 또는 "이번 주에 노출이 0인 캠페인을 보여줘."
Related MCP server: tiktok-ads-mcp
목적
공식 ASA 대시보드는 사람에게는 유용하지만, 임시 분석이나 자동화된 보고에는 적합하지 않습니다. 기존의 MCP 대안들은 SaaS 방식(키를 넘겨줘야 함)이거나 유지 관리가 되지 않습니다. 이 프로젝트는 사용자가 직접 제어할 수 있는 오픈 소스 자체 호스팅 옵션입니다.
기능
list_orgs — 인증 확인 및 액세스 가능한 조직 목록 조회
list_campaigns — 캠페인 열거, 상태별 필터링 가능
list_ad_groups — 특정 캠페인의 광고 그룹 조회
list_keywords — 입찰가 및 일치 유형을 포함한 타겟팅 키워드 조회
get_campaign_report — 캠페인별 노출, 탭, 설치, 지출, CPI, TTR 조회
get_ad_group_report — 광고 그룹별 동일 지표 분석
get_keyword_report — 주간/일간/월간 단위의 키워드별 성과
get_search_terms_report — 광고를 트리거한 실제 검색어 조회 (발견에 가장 유용)
모든 도구는 기본적으로 지난 30일 데이터를 조회합니다. 보고서는 HOURLY, DAILY, WEEKLY, MONTHLY 단위를 지원합니다.
제한 사항
설계상 읽기 전용. 이번 릴리스에서는 쓰기 작업(생성, 업데이트, 일시 중지)을 지원하지 않습니다.
Apple Search Ads 캠페인 관리 API 액세스 필요. ASA 계정에서 API 사용자를 생성하고 ES256 키 쌍을 생성해야 합니다.
집계된 설치 지표는 앱 측 통합 없이 작동. ASA 보고서의
tapInstalls,viewInstalls및 관련 필드는 Apple Search Ads에서 직접 채워지며 앱 내 SDK가 필요하지 않습니다. AdServices / AdAttributionKit은 앱 내부에서 특정 캠페인으로 설치를 기여시키려는 경우(예: 온보딩 개인화)에만 필요합니다.단일 조직. 조직 ID는 설정에 고정되어 있습니다. 다중 조직 전환은 구현되지 않았습니다.
설정
1. ES256 키 쌍 생성
최신 genpkey 명령을 사용하세요. 이 서버에서 요구하는 PKCS#8 형식을 직접 생성합니다. 이전의 ecparam -genkey는 SEC1 형식을 생성하여 시작 오류를 유발합니다.
# Generate private key (PKCS#8)
openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out private-key.pem
# Derive public key
openssl pkey -in private-key.pem -pubout -out public-key.pem개인 키가 -----BEGIN PRIVATE KEY-----로 시작하는지 확인하세요(-----BEGIN EC PRIVATE KEY-----가 아님). EC 변형으로 시작하는 경우 변환하십시오:
openssl pkcs8 -topk8 -nocrypt -in ec-key.pem -out private-key.pem가능하면 private-key.pem을 저장소 루트 외부(예: ~/.ssh/asa-private-key.pem)에 저장하세요.
2. Apple Search Ads에서 API 사용자 생성
ASA → 계정 설정 → 사용자 관리로 이동
사용자 생성을 클릭하고, 읽기 전용 사용을 위해 API 계정 읽기 전용 역할을 선택합니다(이 서버에 권장). API 캠페인 관리자도 괜찮으며, 나중에 서버에 쓰기 도구를 추가할 계획이라면 쓰기 권한이 포함됩니다.
API 탭으로 이동하여 클라이언트 생성을 클릭
public-key.pem업로드확인 화면에서
client_id,team_id,key_id복사계정 설정 → 개요에서
org_id확인
3. 복제 및 빌드
git clone https://github.com/andrealufino/aapl-ads-mcp.git
cd aapl-ads-mcp
npm install
npm run build4. Claude Desktop 구성
~/Library/Application Support/Claude/claude_desktop_config.json을 편집하세요:
{
"mcpServers": {
"aapl-ads": {
"command": "node",
"args": ["/absolute/path/to/aapl-ads-mcp/dist/index.js"],
"env": {
"ASA_CLIENT_ID": "SEARCHADS.your-client-id-here","ASA_TEAM_ID": "SEARCHADS.your-team-id-here",
"ASA_KEY_ID": "your-key-id-here",
"ASA_ORG_ID": "12345678",
"ASA_PRIVATE_KEY_PATH": "/absolute/path/to/private-key.pem"} }
} }
참고: ASA_PRIVATE_KEY_PATH는 절대 경로여야 합니다. 물결표(~)는 Node.js에서 확장되지 않으므로 전체 경로를 사용하세요.
파일 마운트가 불가능한 컨테이너나 클라우드 배포의 경우, 대신 ASA_PRIVATE_KEY를 인라인 PEM 내용으로 설정하세요(줄 바꿈 유지). 둘 다 설정된 경우 ASA_PRIVATE_KEY가 우선합니다.
Claude Desktop을 다시 시작하세요. "run health check"라고 질문하여 서버가 연결되었는지 확인하세요.
사용 예시
서버가 실행 중일 때 Claude Desktop에서 작동하는 자연어 프롬프트입니다:
List my Apple Ads campaigns
지난 30일간의 캠페인 성과를 보여줘
지난주 내 브랜드 캠페인에서 설치를 유도한 키워드는 무엇인가요?
지난달에 내 광고를 트리거한 검색어는 무엇인가요? 노출은 있지만 설치가 없는 검색어에 집중해줘.
2025년 1분기 동안 모든 캠페인의 주간 지출을 비교해줘
캠페인 1234567890의 광고 그룹과 입찰가를 보여줘
## Development
```bash
npm run build # compile TypeScript
npm test # run test suite (Vitest)
npm run typecheck # type-check without emitting
npm run lint # Biome lint
npm run format # Biome format (write)MCP Inspector
Claude Desktop 없이 대화형으로 도구 호출을 디버깅하려면:
npx @modelcontextprotocol/inspector node dist/index.js연결하기 전에 Inspector UI에서 환경 변수를 설정하세요.
Pre-commit 훅
복제 후 로컬에 lefthook 훅을 설치하세요:
npx lefthook install다음이 설정됩니다:
gitleaks protect --staged— 비밀 정보가 포함된 커밋 차단스테이징된
.ts파일에 대한 Biome 린트 검사TypeScript 타입 검사
기여
기술적 세부 사항(인증 흐름, HTTP 클라이언트 설계, 도구 패턴, 보고서 스키마 특이 사항, 개발 중 배운 ASA v5 교훈)은 docs/ARCHITECTURE.md를 참조하세요.
버그 리포트와 풀 리퀘스트는 언제나 환영합니다.
보안
.env또는*.pem파일을 절대 커밋하지 마세요(둘 다.gitignore에 포함되어 있습니다)private-key.pem을 저장소 루트 외부에 보관하세요액세스 토큰은 메모리에만 보관되며 디스크에 기록되지 않습니다
키가 노출되었다고 의심되면 ASA → 계정 설정 → API에서 키를 교체하세요
라이선스
MIT — LICENSE 참조.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server exposing the full Apple Ads (Search Ads) Campaign Management API v5 — 74 typed tools742010MIT
- AlicenseBqualityDmaintenanceProvides read-only access to TikTok advertising data, including campaigns, ad groups, ads, and performance reports through the TikTok Business API.640MIT
- AlicenseBqualityCmaintenanceRead-only MCP server for Google Ads, enabling querying campaigns, ad groups, ads, insights, and keywords without create/update/delete operations.9MIT
- FlicenseNot gradedqualityDmaintenanceEnables programmatic management of NewsBreak advertising campaigns, ad sets, ads, and assets via the NewsBreak Advertising API.1
Related MCP Connectors
Read-only Yandex Metrika MCP. Query visits, sources, geo, devices and more in plain language.
Google Ads, Meta (Facebook) Ads, GA4 and Merchant Center analysis in plain language. Read-only.
Read-only NuMetric.work accounting & ERP data: statements, KPIs, reports, invoices, documents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/andrealufino/aapl-ads-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server