ohmy-seo: MCP servers for Direct, Metrika and Webmaster
ohmy-seo
A monorepo of MCP servers for SEO and performance marketing: Direct's unified campaigns, Metrika and Webmaster, plus Mutagen, XMLStock and Google services
High risk
We rate an entry high when the tool writes to external systems, handles money, production databases or secrets, or runs arbitrary commands. The CLI installs it only with your consent.
Why this level
- Can create, change and pause real Direct campaigns and bids when the write flag is enabled
- Stores OAuth tokens for ad and analytics accounts in a local database
Install
Manual install
git clone https://github.com/vkirill/ohmy-seo.git && cd ohmy-seo && pnpm install && pnpm -r buildBuilds the monorepo from source; requires Node.js 22 and pnpm.
This is third-party code. Review the repository files before installing.
What it does
The flagship mcp-yandex-seo package gives an agent tools for Yandex Direct, Metrika and Webmaster. For Direct, the server works only with unified performance campaigns: it creates and edits campaigns, ad groups, ads with a pool of headlines and texts, bids and adjustments, reads statistics and change history, and supports point edits plus campaign uploads from YAML or Excel. Metrika and Webmaster give access to counters, goals and sites through raw API wrappers. The repository, a larger monorepo, also contains other MCP packages: mcp-mutagen for keyword competition, mcp-xmlstock for live Yandex and Google search results, and servers for Google Search Console, GA4, GTM, Google Ads and a read-only Roistat integration. Tokens are stored AES-256-GCM encrypted in a local SQLite database, and writes to live accounts are gated by separate env flags plus confirmation on every call.
Who it is for. For performance marketers and SEO agencies running both Yandex and Google who want one MCP server set for every channel.
Good fit when
- You need to work with Direct's unified performance campaigns, including the headline and text pool
- You want Direct, Metrika and Webmaster together with Google services in one setup
- You care about protection from accidental spending: writes are off by default and need an explicit flag
Not a fit when
- You need classic Direct ad formats (TextAd, TextImageAd): the server only works with unified performance campaigns
- You want a quick npm install: this requires building the monorepo from source
Example request
Show this week's Direct campaign stats and find ads with a low CTRLimitations
You need Node.js 22 or newer, pnpm and a from-source build of the monorepo; there is no ready npm package. Direct requires an OAuth token via the built-in register_oauth_app flow, and writes to the live account are enabled separately with the OHMY_SEO_ALLOW_LIVE_MUTATIONS and YANDEX_DIRECT_ALLOW_LIVE_MUTATIONS variables. A master encryption key is mandatory: lose it and every saved token becomes unreadable, requiring every account to be reauthorized. Mutagen, XMLStock and Roistat each need their own paid service keys.
How to disable. Remove the mcp-yandex-seo block (or another package) from your MCP client config, for example with claude mcp remove mcp-yandex-seo.
MCP
- Transport
- stdio
- Authentication
- OAuth
| Environment variables | |
|---|---|
| MCP_YANDEX_SEO_MASTER_KEY required, secret | 32-byte hex AES-256-GCM key for encrypting stored tokens |
| OHMY_SEO_ALLOW_LIVE_MUTATIONS | Global kill switch for writes to live accounts |
| YANDEX_DIRECT_ALLOW_LIVE_MUTATIONS | Separate switch for writes to Yandex Direct |
Security check
- Can create, change and pause real Direct campaigns and bids when the write flag is enabled
- Stores OAuth tokens for ad and analytics accounts in a local database
README in short
The README describes a nine-package monorepo: the flagship mcp-yandex-seo for Direct, Metrika and Webmaster, mcp-mutagen and mcp-xmlstock for keyword competition and SERP, servers for Google Search Console, GA4, GTM, Google Ads, a read-only Roistat integration and a shared mcp-core. It details Direct's unified performance campaign tools, a from-source build install, environment variables with a master encryption key, the Yandex OAuth flow, and a warning that the servers reach live ad and analytics accounts. MIT license, author Kirill Vechkasov.
FAQ
Can it spend money in Direct by accident?
No, writes are off by default and enabled via separate environment variables, with every live call requiring confirmation.
Are classic Direct ad formats supported?
No, the server only works with unified performance campaigns and the RESPONSIVE_AD format.
Related
Official DataLens (Yandex) skills for Claude Code, Codex and OpenCode: SDK, HTML reports and RLS resolution
A Yandex Metrika MCP server generated from the API spec: 108 methods, 10 tools declared by default, transparent filters and response metadata
An open MCP server and agent skill set for SEO: keyword research, competitors, backlinks and site audits powered by DataForSEO
A Claude Code plugin for SEO audits: technical SEO, E-E-A-T, schema, local and AI search via parallel subagents