Yandex Direct MCP

io.github.stufentlyPublished by GitHub account stufentlyv2.2.1Updated Oct 24, 2026

MCP server for Yandex Direct API v5 — campaigns, ads, keywords, reports

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Local MCP server for Yandex Direct API v5 that lets an assistant read and change campaigns, ad groups, ads, keywords, bids, extensions and reports.

What you can do
  • Read, create, update, delete, archive, suspend and resume campaigns and ad groups
  • Manage ads, including moderation requests
  • Manage keywords and set keyword or automatic bids and bid modifiers
  • Manage sitelinks and vCards
  • Create reports and fetch dictionaries and client lists
When to use it
Use it when an assistant should work directly on a Yandex Direct advertising account: auditing or restructuring campaigns, adjusting keywords and bids, or pulling performance reports. Try it against the sandbox first before pointing it at a live account.
Requirements
Runs as a local Node.js process started from source (clone the repository, install dependencies, run the package entry file); the npm package is published but the README says to run from source. Needs an OAuth token in YANDEX_DIRECT_TOKEN; YANDEX_DIRECT_CLIENT_LOGIN for agency accounts and YANDEX_DIRECT_SANDBOX to route calls to the sandbox. Network access to the Yandex Direct API.
Before you install
It changes live advertising data: campaigns, ads, keywords and bids can be created, updated, deleted or archived, and bids are in micro-units, so a factor-of-1,000,000 error is a real risk. Fourteen irreversible tools require a literal confirm: true, but adds, archives, suspends and moderation are unguarded, and there is no dry-run. Mistakes can spend real money. The OAuth token grants account access and should be kept secret; use the sandbox until the workflow is trusted.

Installation

In SourceWeft

  1. Open Yandex Direct MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

yandex-direct-mcp

MCP server for Yandex Direct API v5 — campaigns, ad groups, ads, keywords, bids, bid modifiers, sitelinks, vCards, and reports. 43 tools.

Write access, no dry-run. Unlike the other servers in this monorepo, this one changes live advertising data: it can create, update, delete and archive campaigns and ads, and set bids (in micro-units — a factor-of-1,000,000 mistake is a real risk). There is no confirmation step and no dry-run mode. Point it at the sandbox (YANDEX_DIRECT_SANDBOX=true) until you trust the workflow.

Installation

This package is published as @stufently/yandex-direct-mcp; unscoped yandex-*-mcp names on the public registry belong to an unrelated publisher (see the note in the root README). Nothing is on the scope yet, so run it from source:

bash
git clone https://github.com/stufently/yandex-mcp.gitcd yandex-mcp && bun installnode packages/yandex-direct-mcp/src/index.mjs

Configuration

VariableRequiredDescription
YANDEX_DIRECT_TOKENyesOAuth token for Direct API v5
YANDEX_DIRECT_CLIENT_LOGINagencies onlyClient login to act on behalf of
YANDEX_DIRECT_SANDBOXnotrue routes calls to the Direct sandbox
json
{  "mcpServers": {    "yandex-direct": {      "command": "node",      "args": ["/path/to/yandex-mcp/packages/yandex-direct-mcp/src/index.mjs"],      "env": { "YANDEX_DIRECT_TOKEN": "your-token" }    }  }}

Tools

AreaTools
Campaignsget_campaigns, add_campaigns, update_campaigns, delete_campaigns, archive_campaigns, unarchive_campaigns, suspend_campaigns, resume_campaigns
Ad groupsget_adgroups, add_adgroups, update_adgroups, delete_adgroups, archive_adgroups, unarchive_adgroups
Adsget_ads, add_ads, update_ads, delete_ads, archive_ads, unarchive_ads, moderate_ads
Keywordsget_keywords, add_keywords, update_keywords, delete_keywords, suspend_keywords, resume_keywords
Bidsget_keyword_bids, set_keyword_bids, set_auto_keyword_bids, get_bid_modifiers, add_bid_modifiers, set_bid_modifiers, delete_bid_modifiers
Extensionsget_sitelinks, add_sitelinks, delete_sitelinks, get_vcards, add_vcards, delete_vcards
Othercreate_report, get_dictionaries, get_clients

Irreversible tools need confirm: true

Fourteen tools cannot be undone through this API, and this is the one server where a mistaken call spends real money. They refuse unless the call carries confirm: true:

FamilyToolsWhy it cannot be undone
Deletesdelete_campaigns, delete_adgroups, delete_ads, delete_keywords, delete_bid_modifiers, delete_sitelinks, delete_vcardsThe entity and the statistics attached to it are gone; add_* creates a new entity with a new ID, not the old one back
Updatesupdate_campaigns, update_adgroups, update_ads, update_keywordsFields are overwritten in place and Direct exposes no revision history, so the previous ad text, budget or strategy cannot be read back
Bidsset_keyword_bids, set_auto_keyword_bids, set_bid_modifiersSame overwrite, with a price tag: these are the numbers that decide what the account pays per click
json
{ "ids": [12345], "confirm": true }

Called without it, the tool returns an error result and sends nothing to the Direct API — no entity touched, no bid moved, no API units spent:

Refused: `delete_campaigns` requires explicit confirmation.
Target — IDs: 12345. Deleting campaigns is irreversible: they and their accumulated statisticsare gone for good, and Yandex Direct offers no way to restore them.
Nothing was sent to the Yandex Direct API — no campaign, ad, keyword or bid was touched, and noAPI units were spent.
To go ahead, call `delete_campaigns` again with the same ids and `confirm: true`.To see the current state first, call `get_campaigns`.

confirm is optional in the JSON schema on purpose: a missing confirmation has to come back as that explanation, not as a schema validation error a model cannot act on. Only a literal true counts — "true", 1 and "yes" are refused, because a guess at the protocol is not a decision to spend money. All fourteen carry destructiveHint: true in their MCP annotations, so clients that surface tool risk can show it before the call.

add_*, archive_*/unarchive_*, suspend_*/resume_* and moderate_ads are deliberately left unguarded. Each has an inverse in this same server (or, for moderate_ads, leaves the entity itself untouched), so they are changes rather than losses. Guarding every write would train callers to pass confirm: true by reflex — which is exactly what would defeat it on the fourteen calls that matter.

Bids are expressed in micros (×10⁶). Set YANDEX_DIRECT_SANDBOX=true while experimenting.

Known limitations

  • The API path is hard-coded to /json/v5, so the unified performance campaigns endpoint (v501) is unreachable.
  • The Units response header (points consumed / remaining) is not surfaced, so a client cannot see how much of its quota a call cost.

License

MIT

Source: packages/yandex-direct-mcp/README.md at commit bdd6c64

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

2
  1. v2.2.1LatestOct 16, 2026
  2. v2.2.0Oct 15, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts