vk-mcp-ru
vk-mcp-ru is an MCP server that lets an AI assistant discover, inspect, and call VK API methods (373 total) with safety gates for writes/deletes.
Verify credentials without revealing secret values (
vk_check_auth).Browse the API catalog: list sections, get endpoints per section, search methods in Russian/English, view a capability map, and describe full method records (
vk_list_sections,vk_get_section,vk_search_methods,vk_map,vk_describe_method).Execute read-only catalog methods and auto-paginate results (
vk_call_method,vk_fetch_all).Execute write/update catalog methods with explicit confirmation (
vk_write_method).Execute destructive/delete catalog methods with double confirmation (
vk_delete_method).Call arbitrary raw VK API paths for reads, writes, and deletes with appropriate safety gates (
vk_get_raw,vk_write_raw,vk_delete_raw).Manage local credential cabinets: list, add/update, rotate, switch, and remove cabinets; secrets are local and never echoed (
vk_list_cabinets,vk_add_cabinet,vk_set_key,vk_use_cabinet,vk_remove_cabinet).Covered VK areas include community management, shop products, wall posts, ads/statistics, dialogs, lead forms, orders, photos, videos, documents, wiki pages, users, notifications, app storage, and more.
vk-mcp-ru
VK API для ИИ-ассистентов: товары магазина сообщества, посты, рекламные кампании и статистика, диалоги с клиентами, лид-формы. Каталог из официальной схемы, у каждого метода класс доступа.
Каталог собран из первоисточника (официальная схема VKCOM/vk-api-schema) и лежит в репозитории как
vk_mcp/endpoints.yaml: 373 метода, из них 159 на чтение,
173 на запись и 41 необратимых. Сервер исполняет ровно этот файл,
поэтому таблица ниже не может разойтись с кодом.
Установка
Два пути, выбирайте по тому, есть ли у вас терминал.
Без терминала: файл .mcpb
Скачайте vk-mcp-ru-vX.Y.Z.mcpb со страницы релизов
и откройте двойным щелчком. Claude Desktop поставит сервер сам и спросит ключи
в отдельном окне, в конфиг лезть не придётся. Нужен Python 3.10 или новее:
зависимости сервер доставит себе при первом запуске.
В терминале
uvx vk-mcp-ruClaude Desktop, claude_desktop_config.json:
{
"mcpServers": {
"vk-mcp": {
"command": "uvx",
"args": ["vk-mcp-ru"],
"env": { "VK_TOKEN": "..." }
}
}
}Related MCP server: ozon-mcp-ru
Ключи
dev.vk.com → приложение → сервисный ключ доступа, либо токен сообщества с правами market, messages, ads, stats. Запрашивайте только те права, которые реально нужны.
переменная | секрет | что это |
| да | Сервисный ключ приложения VK или токен сообщества с нужными правами. |
Ключи можно не держать в окружении: сервер умеет кабинеты и кладёт их в
~/.ru-mcp/cabinets.json с правами 600, вне репозитория.
Карта методов
раздел | методов | чтение | запись | необратимое |
Сообщества | 51 | 20 | 25 | 6 |
Диалоги | 48 | 21 | 22 | 5 |
Реклама | 47 | 24 | 16 | 7 |
Товары и магазин | 45 | 16 | 23 | 6 |
Фотографии | 44 | 18 | 22 | 4 |
Видео | 34 | 9 | 20 | 5 |
Записи на стене | 25 | 7 | 16 | 2 |
Обсуждения | 13 | 2 | 9 | 2 |
Документы | 12 | 7 | 4 | 1 |
Вики-страницы | 8 | 4 | 4 | 0 |
Лид-формы | 7 | 3 | 3 | 1 |
Заказы | 7 | 5 | 2 | 0 |
Утилиты | 7 | 6 | 0 | 1 |
Карточки в записях | 6 | 3 | 2 | 1 |
Пользователи | 5 | 4 | 1 | 0 |
VK Donut | 4 | 4 | 0 | 0 |
Статистика | 3 | 2 | 1 | 0 |
Хранилище приложения | 3 | 2 | 1 | 0 |
Уведомления | 3 | 1 | 2 | 0 |
Подкасты | 1 | 1 | 0 | 0 |
всего | 373 | 159 | 173 | 41 |
Как это выглядит в чате
Вы: посты на стене сообщества
vk_search_methods("посты на стене сообщества")
vk_wall_get POST /method/wall.get чтение
vk_wall_search POST /method/wall.search чтение
vk_wall_get_by_id POST /method/wall.getById чтение
vk_describe_method("vk_wall_get")
Returns a list of posts on a user wall or community wall.
POST api.vk.com/method/wall.get
параметры: domain, offset, count, filter, extended, fields
класс доступа: чтение
vk_call_method("vk_wall_get", {"domain": "...", "offset": "..."})Три инструмента вместо 373 функций: агент ищет метод словами, читает его карточку и вызывает. Запись и необратимое спрашивают подтверждение.
Что обычно просят:
Свести заказы и товары магазина сообщества в таблицу.
Посмотреть статистику сообщества и постов за период.
Собрать расходы и показатели рекламных кампаний VK Ads.
Разобрать непрочитанные диалоги и подготовить ответы на согласование.
Безопасность
Сервер работает на машине пользователя, ключи наружу не уходят. У методов три класса доступа: чтение идёт сразу, запись и необратимые действия требуют подтверждения. Заголовок авторизации не покидает домены сервиса даже при вызове произвольного пути.
Проверить установку
uvx vk-mcp-ru doctorПечатает, сколько методов загрузилось, найдены ли ключи и откуда. Секреты не
показывает. С --live делает один дешёвый реальный вызов на чтение.
Родня
Ядро вынесено в schema-mcp-core. Соседние серверы: diadoc-mcp-ru, sbis-mcp-ru, chestny-znak-mcp-ru. Маркетплейсы живут отдельно: marketplaces-mcp-ru.
MIT. Автор Илья Утов.
Все проекты одним списком, разобранные по назначению: ilyautov.github.io.
Privacy Policy
vk-mcp-ru не собирает и не передаёт ваши данные: ключи лежат локально в
~/.ru-mcp/cabinets.json, запросы идут только в API VK, телеметрии нет.
Полный текст: PRIVACY_POLICY.md.
Available Tools
18 toolsvk_add_cabinetAIdempotent
Add or update a cabinet (a named set of API credentials), from chat.
⚠️ This puts the key into the chat transcript — requires i_understand_key_goes_to_chat=true. The terminal-free safe alternative is the installer (install.py / double-click), where the key never enters chat.
Args: credentials: dict with the required fields for this service ({fields}). For Ozon: {{"client_id": "...", "api_key": "..."}}; for WB: {{"token": "..."}}. name: optional label. If omitted, the cabinet is named after the real shop name fetched from the marketplace (falls back to "main"). i_understand_key_goes_to_chat: must be true to proceed. Saved to ~/.marketplace-mcp/cabinets.json (local, chmod 600), never echoed.
Inputs: credentials (required), name, i_understand_key_goes_to_chat. Returns: result
vk_call_methodARead-only
Execute one READ endpoint from the catalog by operation_id.
Target API: https://dev.vk.com/ru/method.
Reads only: nothing here changes data, so it runs without confirmation. To change data use vk_write_method, to delete use vk_delete_method.
Args: operation_id: id from the catalog (see vk_search_methods). path_values: values for {placeholders} in the path. query: query-string parameters. body: JSON request body (a few read endpoints take one). Returns JSON: {"ok": true, "status", "data"} or the error envelope.
Inputs: operation_id (required), body, query, path_values. Returns: result
vk_check_authARead-only
Check whether the required credentials are present in the environment.
Does NOT reveal secret values — only reports which variables are set. Returns JSON: {"ready": bool, "missing": [str], "required": [str]}.
Inputs: no named parameters. Returns: result
vk_delete_methodADestructive
Execute one DESTRUCTIVE endpoint: deletes or irreversibly changes data.
Target API: https://dev.vk.com/ru/method.
Both confirm_write=true and i_understand_this_modifies_data=true are required; nothing is sent without both.
Args: operation_id: id from the catalog (see vk_search_methods). path_values: values for {placeholders} in the path. query: query-string parameters. body: JSON request body. confirm_write: must be true. i_understand_this_modifies_data: must be true. Returns JSON: {"ok": true, "status", "data"} or the error envelope.
Inputs: operation_id (required), body, query, path_values, +2 more. Returns: result
vk_delete_rawADestructive
Delete data at ANY path, including paths not in the catalog.
Target API: https://dev.vk.com/ru/method.
DELETE only. Both confirm_write=true and i_understand_this_modifies_data=true are required.
Args: path: full path beginning with '/'. method: DELETE. host: host override; defaults to the service's default host. query: query-string parameters. body: JSON request body. confirm_write: must be true. i_understand_this_modifies_data: must be true. Returns JSON: {"ok": true, "status", "data"} or the error envelope.
Inputs: path (required), body, host, query, +3 more. Returns: result
vk_describe_methodARead-only
Return the full catalog record for one endpoint: method, host, path, scope, safety level, pagination style, rate limit, params and doc URL.
Inputs: operation_id (required). Returns: result
vk_fetch_allARead-only
Auto-paginate a read endpoint and return every row in one response.
Handles offset, last_id, cursor (Ozon v4/v5), page and WB lastChangeDate styles. The array path is taken from the catalog automatically.
Args: operation_id: a read endpoint from the catalog. query / body / path_values: base parameters (cursor fields are managed). items_path: override the array path (default: the endpoint's own). limit: page size to request. max_items: hard cap to protect context (default 10000). Returns JSON: {"ok", "items", "total_fetched", "pages_fetched", "truncated"}.
Inputs: operation_id (required), body, limit, query, +3 more. Returns: result
vk_get_rawARead-only
Read ANY endpoint by path, including ones missing from the catalog.
Target API: https://dev.vk.com/ru/method.
Safe verbs only (GET, HEAD, OPTIONS). To change data use vk_write_raw, to delete use vk_delete_raw.
Args: path: full path beginning with '/', e.g. "/". method: safe verb, GET by default. host: host override; defaults to the service's default host. query: query-string parameters. body: JSON request body (rare on reads; some APIs want one). Returns JSON: {"ok": true, "status", "data"} or the error envelope.
Inputs: path (required), body, host, query, +1 more. Returns: result
vk_get_sectionARead-only
List all endpoints in one section.
Args: section: section name (see vk_list_sections), e.g. "statistics". Returns JSON list of {operation_id, method, path, safety, summary}.
Inputs: section (required). Returns: result
vk_list_cabinetsARead-only
List configured cabinets for this marketplace and which one is active.
Returns JSON: {"active": str|null, "cabinets": [names], "fields_needed": [...]}. Secret values are never returned.
Inputs: no named parameters. Returns: result
vk_list_sectionsARead-only
List API sections and how many catalog endpoints each contains.
Inputs: no named parameters. Returns: result
vk_mapARead-only
The big picture: business entities this API covers and the go-to methods for each. Call with no args to see the whole map ("you are here"); pass entity="reviews" (or stocks/prices/orders/…) to list every method of one entity. Use this before guessing — it orients you fast.
Inputs: entity. Returns: result
vk_remove_cabinetADestructive
Delete a stored cabinet. If it was active, another becomes active.
Args: name: the cabinet to remove.
Inputs: name (required). Returns: result
vk_search_methodsARead-only
Search the endpoint catalog by keyword (works in Russian and English).
Args: query: free text, e.g. "остатки", "stocks", "update price". limit: max results (1-50). Returns JSON list of matching endpoints (best first).
Inputs: query (required), limit. Returns: result
vk_set_keyAIdempotent
Change / rotate the API key from chat (e.g. the old one expired or leaked).
⚠️ The key goes into the chat transcript — requires i_understand_key_goes_to_chat=true. The safe, terminal-free alternative is the installer, where the key never enters chat. Use a scoped key and rotate it in the seller cabinet if it was exposed.
Args: credentials: dict with the required fields ({fields}). cabinet: which cabinet to update. Default: the active one (so "my key expired" just works). If there is none, the cabinet is named from the marketplace's shop name, else "main". i_understand_key_goes_to_chat: must be true to proceed. On success the key is validated against the marketplace and the shop name is reported. Saved locally (chmod 600), never echoed back.
Inputs: credentials (required), cabinet, i_understand_key_goes_to_chat. Returns: result
vk_use_cabinetAIdempotent
Switch the active cabinet. Subsequent API calls use its credentials.
Args: name: the cabinet to activate (see vk_list_cabinets).
Inputs: name (required). Returns: result
vk_write_methodA
Execute one WRITE endpoint from the catalog: create or update data.
Target API: https://dev.vk.com/ru/method.
Requires confirm_write=true; nothing is sent without it. Irreversible operations live in vk_delete_method, reads in vk_call_method.
Args: operation_id: id from the catalog (see vk_search_methods). path_values: values for {placeholders} in the path. query: query-string parameters. body: JSON request body. confirm_write: must be true. Returns JSON: {"ok": true, "status", "data"} or the error envelope.
Inputs: operation_id (required), body, query, path_values, +1 more. Returns: result
vk_write_rawA
Create or update data at ANY path, including paths not in the catalog.
Target API: https://dev.vk.com/ru/method.
POST, PUT and PATCH only; requires confirm_write=true.
Args: method: POST, PUT or PATCH. path: full path beginning with '/'. host: host override; defaults to the service's default host. query: query-string parameters. body: JSON request body. confirm_write: must be true. Returns JSON: {"ok": true, "status", "data"} or the error envelope.
Inputs: path (required), method (required), body, host, +2 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 18 tools
Each tool has a clearly distinct purpose: catalog discovery (describe, list, search, map), safe execution (call, fetch_all), write with confirmation (write_method), destructive with extra confirmation (delete_method), raw equivalents for out-of-catalog paths, and cabinet management (list, add, set, use, remove). No overlapping or ambiguous boundaries.
All tools follow the uniform prefix 'vk_' followed by a verb or verb plus noun, using snake_case throughout. The pattern is predictable and semantic: call/write/delete for cataloged operations, raw variants for uncataloged, and add/set/use/remove for cabinet management. No mixed conventions.
18 tools is well-scoped for a comprehensive API gateway. Each tool serves a necessary role: discovery (5), execution (6 including raw and fetch_all), and credential management (6). No redundancy, and the count is sufficient for the goal of exposing the full VK API surface.
The toolset covers the full lifecycle: discovery (catalog/search), read/write/delete execution for both cataloged and arbitrary endpoints, pagination automation, and credential/cabinet management. There are no obvious missing operations for the stated purpose, and safeguards for destructive actions are well represented.
Maintenance
Related MCP Connectors
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Connect your AI agent to 300+ methods and 100+ live tools
Social media API for AI agents: publish, DMs, comments, Meta ads and leads.
Russian APIs for AI agents: YooKassa, CDEK, Bitrix24 and more. Ready scenarios with code. No key.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with VKontakte through a unified FastMCP interface, supporting messaging, wall posts, user/group management, and real-time event handling.4-
- AlicenseAqualityBmaintenanceOzon Seller API in your AI assistant: products, FBS and FBO orders, prices, stocks, finance and reviews. 441 methods live in a YAML catalog the server executes, the agent searches it in plain language and calls a method through three generic tools, and every method carries an access class so writes and irreversible calls ask for confirmation.2558 PyPI3MIT
- AlicenseAqualityBmaintenanceYandex Market Partner API in your AI assistant: orders and returns, products and cards, prices and tariffs, reports, reviews and chats. 165 methods live in a YAML catalog the server executes, the agent searches it in plain language, and every method carries an access class so writes and irreversible calls ask for confirmation.263MIT
- AlicenseAqualityBmaintenanceAvito business API in your AI assistant: listings and statistics, buyer messenger, orders and Avito Delivery, bulk upload, promotion and reviews. 64 methods live in a YAML catalog the server executes, the agent searches it in plain language, and every method carries an access class so writes and irreversible calls ask for confirmation.3060 PyPI4MIT