VK API MCP Server (FastMCP)
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VK API MCP Server (FastMCP)send message to peer 123 saying Hi"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
VK API MCP Server (FastMCP)
🚀 Инструментальный сервер для VK API на базе FastMCP - единый интерфейс для работы с VKontakte через ИИ-агентов.
📋 Содержание
🚀 Быстрый старт
1. Клонирование и установка
cd C:\Users\nikol\Projects\mcp_vk_api
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt2. Настройка токенов
# Скопируйте и отредактируйте config.ini
copy config.ini.example config.iniЗаполните config.ini:
[vk]
token = vk1.a.your_user_token_here
[google]
speech_api_key = your_google_speech_api_key
gemini_api_key = your_gemini_api_key3. Запуск
# Gemini CLI
mcp run C:\Users\nikol\Projects\mcp_vk_api\main.py
# Или вручную
python -u main.py✨ Возможности
🔧 Основные функции
10 агрегаторов VK API:
users,groups,messages,wall,likes,photos,docs,video,utils,recognitionЕдиный интерфейс: по одной функции на раздел VK API
Long Poll: ожидание событий в реальном времени
Автоматическое распознавание: речи и изображений
Имитация человеческого поведения: задержки, статусы печати
Кэширование: результатов распознавания
Пагинация и retry: надежная работа с API
🎯 Специальные возможности
await_any_event: унифицированное ожидание сообщений/уведомленийАвтоформатирование: сообщения с именами пользователей и эмодзи
Batch операции: массовые вызовы API
Capability discovery: автоматическое обнаружение методов
Универсальный клиент:
vk_client.pyдля тестирования
📦 Установка и настройка
Требования
Python 3.11+
VK User Token с правами:
messages,wall,photos,docs,videoОпционально: Google Speech API и Gemini API ключи
Зависимости
# Основные
fastmcp # MCP сервер
vk_api # VK API клиент
requests # HTTP запросы
# Опционально для распознавания
google-genai # Gemini APIПолучение токенов
VK Token
Перейдите на https://vkhost.github.io/
Выберите "Kate Mobile"
Авторизуйтесь и скопируйте токен
Google API (опционально)
Speech API: https://console.cloud.google.com/apis/library/speech.googleapis.com
Gemini API: https://makersuite.google.com/app/apikey
🎮 Запуск в Gemini CLI
Глобальная установка
# Установите MCP CLI
pip install mcp
# Запустите сервер
mcp run C:\Users\nikol\Projects\mcp_vk_api\main.pyЛокальный запуск
cd C:\Users\nikol\Projects\mcp_vk_api
python -u main.pyПримеры команд в Gemini CLI
# Получить информацию о пользователе
vk-api users get_user_info {"user_ids": "1", "fields": "photo_200"}
# Ожидать сообщения 5 минут
vk-api messages await_any_event {"duration_s": 300}
# Отправить сообщение
vk-api messages send_message {"peer_id": 123, "message": "Привет!"}🖥️ Запуск в Cursor
Настройка MCP в Cursor
Откройте
C:\Users\nikol\.cursor\mcp.jsonДобавьте конфигурацию:
{
"mcpServers": {
"vk-api": {
"command": "mcp",
"args": ["run", "C:\\Users\\nikol\\Projects\\mcp_vk_api\\main.py"],
"cwd": "C:\\Users\\nikol\\Projects\\mcp_vk_api"
}
}
}Перезагрузите серверы: Cursor Settings → MCP → Reload Servers
Использование в Cursor
Откройте Command Palette (
Ctrl+Shift+P)Выберите "MCP: Call Tool"
Выберите
vk-apiи нужный агрегатор
📁 Структура проекта
mcp_vk_api/
├── 📄 main.py # MCP сервер, регистрация агрегаторов
├── 📄 vk_provider.py # Инициализация VK API
├── 📄 config.py # Загрузка конфигурации
├── 📄 vk_client.py # Универсальный тестовый клиент
├── 📄 requirements.txt # Python зависимости
├── 📄 goal.txt # Цель проекта
├── 📄 config.ini # Токены и настройки
│
├── 📁 tools/ # Агрегаторы VK API
│ ├── 📁 users/ # Пользователи VK
│ │ └── 📄 tools.py # get_user_info, search_users, get_friends, etc.
│ │
│ ├── 📁 groups/ # Группы VK
│ │ └── 📄 tools.py # get_group_info, search_groups, get_members
│ │
│ ├── 📁 messages/ # Сообщения и Long Poll
│ │ ├── 📄 tools.py # send_message, get_history, await_any_event
│ │ ├── 📄 formatting.py # Форматирование сообщений
│ │ └── 📄 human_behavior.py # Имитация человеческого поведения
│ │
│ ├── 📁 wall/ # Стена и посты
│ │ └── 📄 tools.py # get_wall_posts, create_comment, post_photo
│ │
│ ├── 📁 likes/ # Лайки
│ │ └── 📄 tools.py # is_liked, add, delete
│ │
│ ├── 📁 photos/ # Фотографии
│ │ └── 📄 tools.py # photos_get, photos_get_albums
│ │
│ ├── 📁 docs/ # Документы
│ │ └── 📄 tools.py # docs_get, docs_search
│ │
│ ├── 📁 video/ # Видео
│ │ └── 📄 tools.py # video_search, video_get, video_get_direct_url
│ │
│ ├── 📁 utils/ # Утилиты
│ │ └── 📄 tools.py # paginate, vk_retry, resolve_screen_name
│ │
│ ├── 📁 recognition/ # Распознавание речи и изображений
│ │ ├── 📄 tools.py # Агрегатор распознавания
│ │ ├── 📄 speech.py # Google Speech API
│ │ ├── 📄 gemini.py # Google Gemini API
│ │ ├── 📄 auto.py # Автоматическое распознавание
│ │ └── 📄 cache.py # Кэширование результатов
│ │
│ └── 📁 smart/ # Умные функции (заготовка)
│
├── 📁 data/ # Данные и кэш
│ ├── 📄 last_notifications.json # Время последних уведомлений
│ ├── 📄 last_ts.json # Время последних сообщений
│ └── 📁 recognition_cache/ # Кэш распознавания
│
├── 📁 logs/ # Логи
│ └── 📁 prompts/ # Логи промптов
│
├── 📁 tests/ # Тесты
│ ├── 📄 mcp_likes_test.py # Тест лайков
│ └── 📄 mcp_longpoll_test.py # Тест Long Poll
│
└── 📁 scripts/ # Скрипты (пусто)🔌 API и методы
Принцип работы
Каждый агрегатор принимает два параметра:
method— строка, имя под-методаparams— объект с параметрами
Список агрегаторов
1. users - Пользователи VK
{
"method": "get_user_info",
"params": {"user_ids": "1,durov", "fields": "photo_200"}
}Доступные методы:
get_user_info- информация о пользователяхsearch_users- поиск пользователейget_friends- друзья пользователяget_followers- подписчикиget_subscriptions- подпискиget_mutual- общие друзьяget_friend_requests- заявки в друзьяadd_friend- добавить в друзьяdelete_friend- удалить из друзей
2. groups - Группы VK
{
"method": "get_group_info",
"params": {"group_ids": "durov", "fields": "description"}
}Доступные методы:
get_group_info- информация о группеsearch_groups- поиск группget_group_members- участники группы
3. messages - Сообщения и Long Poll
{
"method": "send_message",
"params": {"peer_id": 123, "message": "Привет!", "reply_to": 456}
}Доступные методы:
send_message- отправить сообщениеget_conversations- список диалоговget_history- история сообщенийget_unread_messages- непрочитанные сообщенияmark_as_read- отметить как прочитанноеdelete_message- удалить сообщениеedit_message- редактировать сообщениеsend_photo- отправить фотоsearch_messages- поиск сообщенийset_typing_status- статус печатиawait_any_event- ожидание событий (Long Poll)
4. wall - Стена и посты
{
"method": "get_wall_posts",
"params": {"owner_id": "-1", "count": 5}
}Доступные методы:
get_wall_posts- получить постыget_comments- комментарии к постуcreate_comment- создать комментарийpost_photo- пост с фотоpin_post- закрепить постunpin_post- открепить постedit_post- редактировать постdelete_post- удалить постwatch_wall_posts- наблюдение за постами
5. likes - Лайки
{
"method": "is_liked",
"params": {"type": "post", "owner_id": "-1", "item_id": 123}
}Доступные методы:
is_liked- проверить лайкadd- поставить лайкdelete- убрать лайк
6. photos - Фотографии
{
"method": "photos_get",
"params": {"owner_id": "1", "album_id": "profile", "count": 3}
}Доступные методы:
photos_get- получить фотографииphotos_get_albums- альбомы фотографийphotos_get_comments- комментарии к фотоphotos_create_comment- создать комментарий к фото
7. docs - Документы
{
"method": "docs_search",
"params": {"q": "инструкция", "count": 10}
}Доступные методы:
docs_get- получить документыdocs_search- поиск документов
8. video - Видео
{
"method": "video_search",
"params": {"q": "vk", "count": 10}
}Доступные методы:
video_search- поиск видеоvideo_get- получить видеоvideo_get_comments- комментарии к видеоvideo_get_direct_url- прямая ссылка на видео
9. utils - Утилиты
{
"method": "list_capabilities",
"params": {}
}Доступные методы:
list_capabilities- список всех методовdescribe- описание методаpaginate- пагинацияvk_retry- надежный вызов APIresolve_screen_name- разрешение короткого имениresolve_cached- кэшируемое разрешениеexecute_batch- пакетный вызов
10. recognition - Распознавание
{
"method": "transcribe_speech",
"params": {"audio_source": "https://example.com/audio.mp3", "language": "ru-RU"}
}Доступные методы:
transcribe_speech- распознавание речиanalyze_image- анализ изображенияget_supported_languages- поддерживаемые языкиget_available_features- доступные функции
💡 Примеры использования
Базовые операции
Получение информации о пользователе
{
"method": "get_user_info",
"params": {
"user_ids": "1,durov",
"fields": "photo_200,city,verified"
}
}Поиск пользователей
{
"method": "search_users",
"params": {
"q": "Павел Дуров",
"count": 5
}
}Отправка сообщения
{
"method": "send_message",
"params": {
"peer_id": 123456789,
"message": "Привет! Как дела?",
"reply_to": 987654321
}
}Ожидание событий (Long Poll)
{
"method": "await_any_event",
"params": {
"duration_s": 300
}
}Продвинутые операции
Пагинация диалогов
{
"method": "paginate",
"params": {
"api_method": "messages.getConversations",
"params": {},
"max_items": 50,
"page_size": 20
}
}Пакетный вызов API
{
"method": "execute_batch",
"params": {
"calls": [
{"method": "users.get", "params": {"user_ids": "1"}},
{"method": "users.get", "params": {"user_ids": "2"}}
]
}
}Распознавание речи
{
"method": "transcribe_speech",
"params": {
"audio_source": "C:/path/to/voice_message.mp3",
"language": "ru-RU",
"source_type": "file"
}
}Анализ изображения
{
"method": "analyze_image",
"params": {
"image_source": "https://example.com/image.jpg",
"source_type": "url"
}
}🧪 Отладка и тестирование
Универсальный клиент
# Тестирование через vk_client.py
python vk_client.py messages --args '{"method":"await_any_event","params":{"duration_s":60}}'
# Красивый вывод
python vk_client.py users --args '{"method":"get_user_info","params":{"user_ids":"1"}}' --pretty
# Из файла
python vk_client.py messages --args-file test_args.jsonПрямой вызов (без MCP)
# Для отладки
python vk_client.py messages --direct --args '{"method":"get_conversations","params":{"count":5}}'Логирование
# Запуск с подробными логами
python -u main.py 2>&1 | tee vk_api.logПроверка токенов
# Тест VK API
python vk_client.py users --args '{"method":"get_user_info","params":{"user_ids":"1"}}'
# Тест Google API (если настроены)
python vk_client.py recognition --args '{"method":"get_supported_languages","params":{}}'🔧 Troubleshooting
Частые проблемы
1. "VK API not initialized"
Причина: Неверный токен или отсутствует config.ini
Решение:
# Проверьте config.ini
cat config.ini
# Получите новый токен на https://vkhost.github.io/2. "Skipping tool ... missing types"
Причина: Проблема с MCP сервером Решение:
# Перезагрузите MCP servers в Cursor
# Или перезапустите сервер
python -u main.py3. "No prompts or tools found"
Причина: Неправильная конфигурация MCP Решение:
// Проверьте C:\Users\nikol\.cursor\mcp.json
{
"mcpServers": {
"vk-api": {
"command": "mcp",
"args": ["run", "C:\\Users\\nikol\\Projects\\mcp_vk_api\\main.py"],
"cwd": "C:\\Users\\nikol\\Projects\\mcp_vk_api"
}
}
}4. Ошибки распознавания
Причина: Отсутствуют Google API ключи Решение:
# Установите google-genai
pip install google-genai
# Добавьте ключи в config.ini
[google]
speech_api_key = your_speech_api_key
gemini_api_key = your_gemini_api_key5. "await_any_event" ждет только 60 секунд
Причина: Проблема с таймаутом
Решение: Обновлено в коде - теперь корректно работает с указанным duration_s
Отладка Long Poll
# Тест ожидания событий
python vk_client.py messages --args '{"method":"await_any_event","params":{"duration_s":120}}'
# Проверка непрочитанных сообщений
python vk_client.py messages --args '{"method":"get_unread_messages","params":{}}'Проверка прав токена
# Тест основных функций
python vk_client.py users --args '{"method":"get_user_info","params":{"user_ids":"1"}}'
python vk_client.py messages --args '{"method":"get_conversations","params":{"count":1}}'
python vk_client.py wall --args '{"method":"get_wall_posts","params":{"owner_id":"1","count":1}}'🔒 Безопасность
Рекомендации
✅ Не коммитьте
config.iniс токенами✅ Храните токены только локально
✅ Используйте переменные окружения для API ключей
✅ Регулярно обновляйте токены VK
❌ Не передавайте токены третьим лицам
Переменные окружения
# Альтернатива config.ini
export VK_TOKEN="vk1.a.your_token"
export GOOGLE_SPEECH_API_KEY="your_speech_key"
export GOOGLE_GEMINI_API_KEY="your_gemini_key"🚀 Особенности и возможности
Автоматическое распознавание
Голосовые сообщения распознаются автоматически при получении истории
Кэширование результатов для экономии API вызовов
Поддержка множества языков через Google Speech API
Имитация человеческого поведения
Автоматические задержки при печати сообщений
Статусы "печатает" для реалистичности
Настраиваемые интервалы между действиями
Красивое форматирование
Имена пользователей вместо ID
Эмодзи и иконки для разных типов контента
Структурированный вывод для удобства чтения
Универсальные утилиты
Пагинация для больших списков
Retry механизм для надежности
Batch операции для эффективности
Кэширование для оптимизации
📞 Поддержка
Полезные команды
# Список всех методов
python vk_client.py utils --args '{"method":"list_capabilities","params":{}}'
# Описание конкретного метода
python vk_client.py utils --args '{"method":"describe","params":{"aggregator":"messages","method":"await_any_event"}}'
# Статистика распознавания
python vk_client.py messages --args '{"method":"get_recognition_statistics","params":{}}'
# Очистка кэша
python vk_client.py messages --args '{"method":"clear_recognition_cache_data","params":{}}'Логи и отладка
Логи сервера:
python -u main.py 2>&1 | tee vk_api.logТестовые файлы:
tests/mcp_*.pyКэш данных:
data/recognition_cache/
🎯 Цель проекта: Быть проактивным и полезным ассистентом в VK. Проверять новые сообщения и отвечать на них осмысленно.
📝 Лицензия: Проект для личного использования и обучения.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/Nikolay1221/vk_mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server