VK Ads MCP server

VK Реклама MCP

An MCP server for VK Ads: campaigns, groups, banners, statistics and balance through chat, with in-chat account connection instead of manual OAuth

MCP server

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

  • Creating, updating and changing campaign status applies immediately in the live account with no sandbox
  • The OAuth token grants access to the ad account's budget and bids
All reasons and checks
Russian stack

askads/mcp-vk-ads

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add mcp/vk-reklama-mcp

Detects the agents on your machine, checks the risk and pins the version.

Other ways to install

This entry is high risk, so there is no one-click install. Review the code and add the config by hand.

Run in a terminal

claude mcp add --transport stdio mcp-vk-ads -- npx -y mcp-vk-ads@1.5.0

Or add to the file .mcp.json, in the project

{
  "mcpServers": {
    "mcp-vk-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file ~/.cursor/mcp.json, for all projects

{
  "mcpServers": {
    "mcp-vk-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key. For a single project, put the same block into .cursor/mcp.json.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Run in a terminal

code --add-mcp '{"name":"mcp-vk-ads","type":"stdio","command":"npx","args":["-y","mcp-vk-ads@1.5.0"]}'

Or add to the file .vscode/mcp.json, in the project

{
  "servers": {
    "mcp-vk-ads": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the servers key.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Run in a terminal

codex mcp add mcp-vk-ads -- npx -y mcp-vk-ads@1.5.0

Or add to the file ~/.codex/config.toml, for all projects

[mcp_servers.mcp-vk-ads]
command = "npx"
args = ["-y", "mcp-vk-ads@1.5.0"]

If the file already exists, append the block to the end.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file ~/.gemini/settings.json, for all projects

{
  "mcpServers": {
    "mcp-vk-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file ~/.config/devin/mcp_config.json, for all projects

{
  "mcpServers": {
    "mcp-vk-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key. Legacy Cascade keeps the MCP config in ~/.codeium/windsurf/mcp_config.json.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Formerly Windsurf.

Add to the file cline_mcp_settings.json, for all projects

{
  "mcpServers": {
    "mcp-vk-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key. Open the settings file in Cline: MCP Servers tab, Configure MCP Servers.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file .roo/mcp.json, in the project

{
  "mcpServers": {
    "mcp-vk-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

A fork of Roo Code, same .roo folders.

Add to the file opencode.json, in the project

{
  "mcp": {
    "mcp-vk-ads": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the mcp key.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file ~/.config/zed/settings.json, for all projects

{
  "context_servers": {
    "mcp-vk-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the context_servers key.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

Add to the file .codeassistant/mcp.json, in the project

{
  "mcpServers": {
    "mcp-vk-ads": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-vk-ads@1.5.0"
      ]
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

VK_ADS_TOKENsecret, optional
Optional ready-made VK Ads OAuth2 access token (Bearer) for CI and unattended installs — full account access, treat it as a secret. Without it the server connects from the chat via start_login/finish_login.
VK_ADS_LANGoptional
Language for API responses (Accept-Language header), e.g. ru, en.
VK_ADS_TIMEOUT_MSoptional
Per-request timeout in milliseconds.
VK_ADS_MAX_RETRIESoptional
Max retries for transient errors (429 rate limit, 5xx on GET, network errors on GET).
VK_ADS_API_BASEoptional
API root without a version segment. Defaults to https://ads.vk.com/api.

Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.

You will need: Node.js

Checked against the repository on Sep 25, 2026, commit db65e23.

Text for your agent

Connect the server via the mcp-vk-ads npm package in your MCP client config, then tell the agent "connect VK Ads" so it walks through getting client_id and client_secret and authorizing.

Other ways from the author
npx -y mcp-vk-ads

Package from npm; account connection then happens in chat with the agent.

This is third-party code. Review the repository files before installing.

What it does

The server gives 22 tools for a VK Ads account: the full hierarchy of campaign (ad_plan), group (ad_group), banner, plus statistics, balance, API limits, regions and a generic API call. Connecting an account is built into the chat: on a phrase like "connect VK Ads" the server explains where to get client_id and client_secret, obtains a token and refreshes it itself afterward. Listing, reporting, balance and status checks are read-only, while creating, updating and status changes apply immediately in the live account; VK Ads has no sandbox.

Who it is for. For media buyers and marketers running ads in VK Ads who want to track campaigns and statistics through an agent.

Good fit when

  • You need to quickly spot which campaigns are spending budget with no results
  • You need to compare groups and banners by stats over a period
  • You need to draft a new campaign or change a bid right from the chat

Not a fit when

  • You cannot let the agent make unchecked live changes: VK Ads has no sandbox, actions apply immediately
  • You have no VK Ads account: the server obtains client_id and client_secret through chat, but the account itself must already exist

Example request

Show my VK Ads account campaigns and last week's spend by ad group

Limitations

VK Ads has no test account: creating, updating and changing the status of campaigns, groups and banners applies immediately in the live account. This is an unofficial community project, not a server from VK itself.

How to disable. Remove the server from your MCP client config.

MCP

Transport
stdio
Authentication
OAuth

Security check

  • Creating, updating and changing campaign status applies immediately in the live account with no sandbox
  • The OAuth token grants access to the ad account's budget and bids

README in short

The Russian README frames the server as a way to ask an agent which campaigns are spending budget with no results, compare groups and banners, and draft a new campaign, and lists the 22 tools by topic: campaigns, groups, banners, statistics, balance, limits, regions, account connection and a generic call. It separately stresses that VK Ads has no sandbox.

FAQ

Do I need to set up OAuth manually?

No, the server explains in chat where to get client_id and client_secret, gets the token itself and refreshes it later without user involvement.

Can I only view campaigns, or also change them?

Both: listings and stats are read-only, while creating, updating and setting status for campaigns, groups and banners apply immediately in the account.

Editors’ pick

A skill that strips AI writing tells from text using Wikipedia's list, without adding invented facts

SkillLow riskNo VPN needed52.7KRepository stars

Marketing Skills for AI agents

Marketing Skills for AI Agents

Editors’ pick

About fifty skills for CRO, copywriting, SEO, analytics, ads and launches, built for coding agents

SkillLow risk51.8KRepository stars
Official

SendPulse's official remote MCP server: statistics, campaigns and user data through an agent chat

MCP serverHigh riskRussian stack1Repository stars
Editors’ pick

An MCP server and CLI covering all 113 Yandex Direct API v5 methods generated from WSDL, exposing 9 read tools by default and writes only on demand

MCP serverHigh riskRussian stackNo VPN needed1Repository stars
Foxx AIVK Ads MCP server

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.