Skip to main content
Glama
gmen1057

yandex-direct-mcp

by gmen1057

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
YANDEX_DIRECT_TOKENYesYour Yandex Direct API token
YANDEX_DIRECT_CLIENT_LOGINNoClient login for agency access

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
direct_list_campaignsA

List campaigns with project (from projects.json), state, daily/weekly budget ₽, negatives count, excluded sites count. READ-ONLY.

direct_get_campaignA

Get one campaign by Yandex Id (detail + strategy + excluded sites + negatives sample). READ-ONLY.

direct_get_negativesA

List campaign-level negative keywords. READ-ONLY. Group-level negatives are separate.

direct_list_adgroupsA

List ad groups for campaign_ids or project. Includes RegionIds. READ-ONLY.

direct_list_keywordsB

List keywords for campaign_ids / adgroup_ids / project. READ-ONLY.

direct_list_adsB

List ads for campaign_ids / adgroup_ids / project. READ-ONLY. UNIFIED: ACCEPTED OFF may be pool, not ban.

direct_reportA

Campaign performance (cost, clicks, impressions, CTR, CPC) for date range. Conversions=soft Metrika. READ-ONLY. May poll ~1 min.

direct_project_mapA

Show campaign→project mapping rules (projects.json) + live non-archived list. READ-ONLY.

direct_account_summaryA

Short cabinet summary: counts by project/state + optional last-N-days cost. READ-ONLY.

direct_get_excluded_sitesB

List ExcludedSites for campaign(s). READ-ONLY.

direct_list_bidmodifiersA

List campaign-level bid modifiers (mobile/tablet/desktop/demographics). READ-ONLY.

direct_search_geo_regionsA

Search Yandex Direct GeoRegions dictionary by name substring. READ-ONLY. Use Federation subject IDs for RegionIds excludes (negative).

direct_report_breakdownB

READ: performance report with breakdown dimension (Placement|AdGroupId|Criterion|Device|AdId|Date|…). Soft Conversions. For RSYA junk use Placement. Polls offline report.

direct_get_adA

READ: full ad detail (titles, text, href, image, state). ad_id may be int64 string.

direct_client_infoA

READ: clients.get — login, currency, VAT, shared account flags, restrictions snapshot.

direct_list_campaign_fundsC

READ: campaign funds / shared account spend fields (where available on get).

direct_pingA

READ: health check — token present, units remaining, campaign count by project.

direct_report_search_queriesA

READ: SEARCH_QUERY_PERFORMANCE_REPORT — real user queries (not just Criterion keys). Cost/clicks/CTR/CPC + soft Conversions. Offline report may poll ~1 min. Top by cost.

direct_get_keyword_bidsA

READ: keywordbids.get — SearchBid/ContextBid/AuctionBids for keywords. Pass keyword_ids and/or campaign_ids/project.

direct_get_autotargetingB

READ: ---autotargeting keyword rows + AutotargetingCategories + Bid. project/campaign_ids.

direct_get_strategyA

READ: full BiddingStrategy + PriorityGoals + counters for one campaign (Text/Unified).

direct_list_sitelinksA

READ: sitelinks.get — by sitelink_set_ids, or discover Ids from ads in project/campaign_ids (API requires Ids).

direct_list_adextensionsB

READ: adextensions.get — callouts library (ids + text).

direct_check_changesA

READ: changes.checkCampaigns — which campaigns changed since Timestamp (ISO or API format).

direct_account_balanceB

READ: clients.get financial flags + sample campaign Funds/SharedAccountFunds (cabinet balance snapshot).

direct_list_retargeting_listsC

READ: retargetinglists.get — Metrika audience lists in cabinet.

direct_list_audience_targetsB

READ: audiencetargets.get for campaign/adgroup (retarget conditions on groups).

direct_list_feedsA

READ: feeds.get — API requires ids. Pass feed ids from create/add or UI.

direct_list_advideosA

READ: advideos.get by ids (API requires Ids). Use after upload_advideo.

direct_get_group_negativesA

READ: ad group NegativeKeywords (separate from campaign-level).

direct_get_time_targetingC

READ: campaign TimeTargeting schedule.

direct_product_attributionB

OPTIONAL READ: your product DB via custom SQL (not soft Metrika Conversions). Enable PRODUCT_ATTRIBUTION_ENABLED=true and set PRODUCT_ATTRIBUTION_SQL or use built-in only if you customized it. Default: disabled with setup hints.

direct_list_dictionariesA

READ: dictionaries.get — supply DictionaryNames e.g. SupplySidePlatforms, AudienceCriteriaTypes, Currencies, MetroStations, TimeZones, Interests.

direct_suspend_campaignsA

WRITE: suspend campaigns (State→SUSPENDED). Requires allow_write=true + project or campaign_ids. Stops spend.

direct_resume_campaignsA

WRITE: resume suspended campaigns. Requires allow_write=true + project/campaign_ids. Do NOT auto-resume killed Chat/Skazki without owner intent.

direct_set_excluded_sitesA

WRITE: set campaign ExcludedSites (RSYA junk packages/DSP). mode=merge (default) or replace. allow_write=true required. Never auto-exclude dsp.yandex.ru unless sites list includes it.

direct_set_region_excludesA

WRITE: add negative RegionIds on all ad groups of campaigns (exclude subjects under Russia 225). Pass positive region ids (e.g. 11010 Дагестан) — tool stores negatives. Preserves existing positives (225 etc). allow_write=true.

direct_set_device_bid_modifiersA

WRITE: campaign device bid mods. ONE field per API call (Mobile/Tablet/Desktop). BidModifier 0=off, 100=default, 50=−50%, 130=+30%. allow_write=true. Desktop may 6000-conflict if Mobile=0.

direct_set_network_weekly_budgetA

WRITE: Network WB_MAXIMUM_CLICKS WeeklySpendLimit (+ optional BidCeiling) for RSYA-style campaigns. Search left as-is. ₽ → micros. allow_write=true. Does not touch DailyBudget in same call.

direct_set_keyword_bidsA

WRITE: set keyword search bids (₽) via keywordbids.set. keyword_ids required. allow_write=true.

direct_set_keyword_statesA

WRITE: suspend or resume keywords by id. allow_write=true + project scope.

direct_set_search_weekly_budgetA

WRITE: Search HIGHEST_POSITION + WeeklySpendLimit ₽, Network SERVING_OFF (JTBD-style). Does not change DailyBudget. allow_write=true. Aborts if live strategy is unexpected unless force=true.

direct_set_daily_budgetA

WRITE: campaign DailyBudget ₽ (Amount micros). Mode STANDARD|DISTRIBUTED. Do NOT send in same update as WeeklySpendLimit (API 4004). allow_write=true.

direct_set_priority_goalsB

WRITE: PriorityGoals SET (no REMOVE in API). goals=[{goal_id, value_rub}]. Weights in ₽. allow_write=true. Prefer payment-heavy; avoid max-conv on form alone.

direct_set_negativesB

WRITE: campaign NegativeKeywords. mode=merge|replace. Phrases as Direct expects (morphology; avoid bare +). allow_write=true.

direct_ads_set_stateA

WRITE: ads suspend | resume | moderate. Pass ad_ids (int64 as number or string ok). project scope via parent campaigns. allow_write=true.

direct_update_ad_hrefA

WRITE: update TextAd Href (landing/UTM) for ads. ad_hrefs=[{ad_id, href}]. allow_write=true. May need moderate after.

direct_add_keywordsA

WRITE: add keywords to ad group. keywords=[{keyword, bid_rub?}]. bid optional (micros). allow_write=true. Does not auto-enable AT.

direct_set_demographics_bid_modifierA

WRITE: campaign demographics bid mod (age and/or gender). BidModifier 0=exclude. Age e.g. AGE_0_17, AGE_18_24, AGE_55. allow_write=true.

direct_update_adgroup_regionsA

WRITE: set absolute RegionIds on specific ad groups (positives + negatives). Example [225,-11010]. allow_write=true.

direct_update_ad_textC

WRITE: ads.update TextAd Title/Title2/Text/Href/DisplayUrlPath/AdImageHash/SitelinkSetId. No ₽·— VPN. optional moderate_after. allow_write=true.

direct_set_max_convB

WRITE: Search WB_MAXIMUM_CONVERSION_RATE + GoalId + WeeklySpendLimit ₽, Network SERVING_OFF (default). Unified/Text auto. allow_write=true. Prefer payment goals over form alone.

direct_set_strategyB

WRITE: set Search strategy preset: highest_position | max_conv | max_clicks_network | serving_off_search. weekly_rub/goal_id/bid_ceiling as needed. allow_write=true.

direct_set_autotargetingA

WRITE: keywords.update AutotargetingCategories for AT rows. categories=[{category,value YES|NO}] e.g. EXACT,ALTERNATIVE,COMPETITOR,BROADER,ACCESSORY. Prefer plain array (API gotcha). Optional bid_rub via keywordbids. allow_write=true.

direct_set_group_negativesC

WRITE: adgroups.update NegativeKeywords. mode=merge|replace. allow_write=true + project.

direct_unarchive_campaignsA

WRITE: campaigns.unarchive. allow_write=true + project scope. Prefer resume if only SUSPENDED.

direct_attach_calloutsA

WRITE: ads.update TextAd CalloutSetting AdExtensionIds. Pass ad_ids + extension_ids (from add_callouts/list). allow_write=true. May re-moderate.

direct_set_bidmodifiersB

WRITE: bidmodifiers.set — [{id, bid_modifier}] where bid_modifier 0–1300 (0=exclude). allow_write=true.

direct_delete_bidmodifiersB

WRITE: bidmodifiers.delete by ids. allow_write=true.

direct_set_retargeting_bid_modifierA

WRITE: bidmodifiers.add RetargetingAdjustment on campaign (RetargetingConditionId + BidModifier 0–1300). allow_write=true. Used e.g. exclude visitors list.

direct_add_audience_targetsC

WRITE: audiencetargets.add — [{adgroup_id, retargeting_list_id, context_bid_rub?}]. allow_write=true.

direct_audience_targets_stateB

WRITE: audiencetargets suspend|resume|delete by ids. allow_write=true.

direct_set_time_targetingA

WRITE: campaigns.update TimeTargeting. schedule_items=7 strings "day,h0,h1..h23" pct 0–100, day 1=Mon…7=Sun. Or weekend_pct for quick 100wd/weekend pattern. allow_write=true.

direct_upload_advideoA

WRITE: advideos.add from file_path or base64. Returns video Id; poll status with list_advideos. allow_write=true.

direct_attach_video_extensionC

WRITE: creatives.add VideoExtensionCreative(video_id) then ads.update TextAd.VideoExtension.CreativeId. Optional moderate. allow_write=true.

direct_add_feedB

WRITE: feeds.add — name + url (HTTP feed) or file_path (upload). business_type RETAIL|… source URL|FILE. allow_write=true.

direct_delete_feedsB

WRITE: feeds.delete by ids. allow_write=true.

direct_update_keywordsA

WRITE: keywords.update user_param / strategy priority. items=[{keyword_id, user_param1?, user_param2?, strategy_priority?}]. For AT use set_autotargeting. allow_write=true.

direct_create_campaignA

WRITE: campaigns.add from zero. channel=search (HP, Network OFF) | rsya (Network max-clicks, Search OFF). Optional daily_rub, weekly_rub, bid_ceiling_rub, negatives, counter_id, utm TrackingParams, timezone. After add use add_adgroups/keywords/ads or direct_launch_pack. allow_write=true.

direct_add_adgroupsA

WRITE: adgroups.add. groups=[{name, region_ids?}]. Default region_ids=[225]. allow_write=true + project scope.

direct_add_adsA

WRITE: ads.add TextAd. ads=[{adgroup_id, title, title2?, text, href, display_url_path?, image_hash?, sitelink_set_id?, mobile?}]. Max 3 ads/group on UNIFIED. Title ≤56, Title2 ≤30, Text ≤81. No ₽·— VPN in copy. allow_write=true.

direct_upload_adimageA

WRITE: adimages.add from local file path (server FS) or raw base64. Returns AdImageHash for TextAd.AdImageHash. allow_write=true.

direct_add_sitelinksA

WRITE: sitelinks.add set. sitelinks=[{title, href, description?}]. Title≤30, Desc≤60. Returns SitelinkSetId for ads. allow_write=true.

direct_add_calloutsC

WRITE: adextensions callouts (≤25 chars each). Attach via UI/EPK may be limited. allow_write=true.

direct_register_project_campaignA

WRITE local: pin campaign_id into projects.json under project key. No Direct API. allow_write=true (or dry_run).

direct_archive_campaignsA

WRITE: archive campaigns (remove from active UI). Prefer suspend for reversible stop. allow_write=true.

direct_launch_packA

WRITE FULL LAUNCH from zero in one call: create campaign → excluded sites → adgroups → keywords (phrase+"[exact]") → optional images → ads → moderate → optional age0-17 ban → optional resume → pin projects.json. channel=search|rsya. groups: [{name, phrases[], ads:[{title,title2?,text,content}], image_path?}]. content used in utm_content. Max 3 ads/group. allow_write=true. Prefer dry_run first.

direct_delete_keywordsA

WRITE: keywords.delete by ids. Irreversible. allow_write=true + project scope.

direct_rpcA

Escape hatch: call any Direct API service.method with params JSON. Prefer typed tools. Methods add/update/delete/suspend/resume/set/moderate require allow_write=true. service e.g. campaigns, keywords, ads, adgroups, bidmodifiers, keywordbids, clients, dictionaries.

direct_report_rawA

READ: raw Reports API — pass full report spec (SelectionCriteria, FieldNames, ReportType…). Advanced; prefer direct_report / direct_report_breakdown.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/gmen1057/yandex-direct-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server