aapl-ads-mcp
aapl-ads-mcp
MCP-сервер, который подключает Claude (и любой MCP-совместимый клиент) к Apple Search Ads API v5.
Что это такое
MCP (Model Context Protocol) — это открытый стандарт, позволяющий ИИ-ассистентам вызывать внешние инструменты. Этот сервер реализует транспорт MCP stdio и предоставляет 9 инструментов «только для чтения», которые запрашивают данные вашего аккаунта Apple Search Ads: кампании, группы объявлений, ключевые слова и отчеты об эффективности.
Вы устанавливаете его один раз, указываете на него в Claude Desktop, а затем задаете вопросы на обычном языке: «Какие ключевые слова принесли больше всего установок в прошлом месяце?» или «Покажи мне кампании с нулевым количеством показов на этой неделе».
Related MCP server: tiktok-ads-mcp
Зачем это нужно
Официальные панели управления ASA хороши для людей, но не подходят для ситуативного анализа или автоматизированной отчетности. Существующие альтернативы MCP либо являются SaaS-решениями (вы передаете свои ключи), либо не поддерживаются. Это self-hosted решение с открытым исходным кодом, которое вы полностью контролируете.
Функции
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.
Ограничения
Только для чтения. В этом релизе нет операций записи (создание, обновление, приостановка).
Требуется доступ к API управления кампаниями Apple Search Ads. Вам необходимо создать API-пользователя в своем аккаунте ASA и сгенерировать пару ключей ES256.
Агрегированные метрики установок работают без интеграции на стороне приложения. Поля
tapInstalls,viewInstallsи связанные с ними поля в отчетах ASA заполняются непосредственно 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. Создание API-пользователя в Apple Search Ads
Перейдите в ASA → Account Settings → User Management
Нажмите Create User, выберите роль API Account Read Only для доступа только для чтения (рекомендуется для этого сервера). API Campaign Manager также подойдет и добавит права на запись, если вы планируете расширить сервер инструментами записи в будущем.
Перейдите на вкладку API, нажмите Create Client
Загрузите
public-key.pemСкопируйте
client_id,team_idиkey_idс экрана подтвержденияНайдите свой
org_idв Account Settings → Overview
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 дней
Какие ключевые слова принесли установки в моей кампании Brand на прошлой неделе?
Какие поисковые запросы активировали мои объявления в прошлом месяце? Сосредоточься на тех, у которых есть показы, но нет установок.
Сравни еженедельные расходы по всем кампаниям за 1 квартал 2025 года
Покажи группы объявлений в кампании 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 перед подключением.
Pre-commit хуки
Установите хуки lefthook локально после клонирования:
npx lefthook installЭто настраивает:
gitleaks protect --staged— блокирует коммиты, содержащие секретыПроверку линтинга Biome для подготовленных (staged)
.tsфайловПроверку типов TypeScript
Участие в разработке
См. docs/ARCHITECTURE.md для получения технических подробностей: поток аутентификации, дизайн HTTP-клиента, паттерн инструментов, особенности схемы отчетов и уроки, извлеченные из ASA v5 во время разработки.
Отчеты об ошибках и пулл-реквесты приветствуются.
Безопасность
Никогда не коммитьте файлы
.envили*.pem— оба типа файлов добавлены в.gitignoreХраните
private-key.pemвне корня репозиторияТокен доступа хранится только в оперативной памяти и никогда не записывается на диск
Если вы подозреваете, что ключ был скомпрометирован, обновите его в ASA → Account Settings → 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