bulatko/vk-mcp-server

๐ŸŒ Social Media
0 Views
0 Installs

๐Ÿ“‡ โ˜๏ธ - MCP server for VK (VKontakte) social network API. Access users, walls, groups, friends, newsfeed, photos, and community stats.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "bulatko-vk-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "bulatko-vk-mcp-server"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

VK MCP Server

VK Logo

npm version npm downloads CI license

Model Context Protocol (MCP) server for VK (VKontakte) social network API

Enables AI assistants like Claude to interact with VK through a standardized interface.

vk-mcp-server MCP server


A VK wall rendered as a card in the chat: posts with their photos, clip previews and counters

A community and a profile rendered as cards: banner, avatar, size and description on one; avatar, location and following on the other

Walls, communities and profiles on a host that supports MCP Apps. The model gets the same structured data either way โ€” this is what the person sees.


Features

  • 19 tools across users, walls, communities, photos, likes and statistics
  • Read and write: search and read freely; posting, editing and deleting are marked as write operations so your client can ask first
  • Structured output: every tool declares an output schema, so the model gets typed data instead of a JSON blob it has to parse out of text
  • Pagination that explains itself: list results say how many matches exist and which offset continues from here, so the model can page through a wall instead of stopping at the first twenty posts
  • Things you can look at: on hosts that support MCP Apps โ€” Claude, Claude Desktop, VS Code Copilot, Goose โ€” walls, communities and profiles render as cards: posts with their photos and clip previews, communities with their banner and size, profiles with avatar and following. Everywhere else it behaves exactly as before
  • Prompts: ready-made workflows โ€” community digest, engagement report, audience snapshot, community search
  • Resilient: request timeouts, automatic backoff when VK rate-limits, and clear messages for captchas and HTTP failures
  • Honest about tokens: VK has three kinds and they differ enormously in reach. --check names which one you hold and probes what it can actually do, --login walks the VK ID flow for the reading kind, and every VK error carries the fix rather than the code alone
  • Tested: 84 tests driving the real server over the MCP protocol

Quick Start

Claude Desktop โ€” one click

Download the latest .mcpb bundle from the releases page and open it. It installs the server, asks for your VK token in a form field, and stores it securely โ€” no Node.js, no config files, no terminal.

VS Code โ€” one click

Install in VS Code

VS Code prompts for your VK token and keeps it out of the config file. From a terminal instead:

code --add-mcp '{"name":"vk","command":"npx","args":["-y","vk-mcp-server"],"env":{"VK_ACCESS_TOKEN":"your_token"}}'

npm

npx vk-mcp-server

Or install globally with npm install -g vk-mcp-server.

MCP Registry

Also available in the official MCP Registry:

io.github.bulatko/vk

Getting VK Access Token

For anything beyond reading public pages, you need a community token. Open a community you manage โ†’ Manage โ†’ API usage โ†’ Access tokens โ†’ Create token, ticking wall and photos. Three clicks, no app, never expires, tied to no browser or IP โ€” and it is the only kind VK still lets post, edit or upload.

For public reads alone, either of these does:

npx vk-mcp-server --login <YOUR_APP_ID>   # sign in as yourself

โ€ฆor the service key from any app page.

Worth knowing before you spend an evening on it: --login returns a VK ID token (vk2.aโ€ฆ), which VK issues for signing in rather than for the API. It reads public profiles, walls and community info; posting, photos, friends, feeds and statistics all answer error 1051, whatever scopes you request. The older flow that granted full user tokens now refuses newly created apps outright. npx vk-mcp-server --check names which kind you hold and what it reaches.

Use your own app rather than an App ID from somewhere else: a token dies with the app that issued it, and the error gives no hint that this is what happened.

๐Ÿ“– Full setup guide โ€” every step with the exact screens, what the scopes unlock, remote installs, and what each error means.

Configuration

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "vk": {
      "command": "npx",
      "args": ["-y", "vk-mcp-server"],
      "env": {
        "VK_ACCESS_TOKEN": "your_access_token_here"
      }
    }
  }
}

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "vk": {
      "command": "npx",
      "args": ["-y", "vk-mcp-server"],
      "env": {
        "VK_ACCESS_TOKEN": "your_access_token_here"
      }
    }
  }
}

Environment variables

VariableRequiredDefaultPurpose
VK_ACCESS_TOKENfor tool callsโ€”VK API access token. The server starts and lists its tools without one; calling a tool then returns an error saying so
VK_TIMEOUT_MSno30000Abort a VK request that hangs longer than this
VK_API_BASEnohttps://api.vk.com/methodPoint the server at an API mirror or proxy

VK rate-limits user tokens to a few calls per second. When it answers with error 6 (too many requests), the server backs off and retries up to three times before giving up, so short bursts of tool calls do not fail outright.

Command line

CommandWhat it does
npx vk-mcp-serverRuns the MCP server (this is what your client calls)
npx vk-mcp-server --login <APP_ID>Gets a token through VK ID in your browser
npx vk-mcp-server --checkReports what your token is and which tools it can use
npx vk-mcp-server --helpLists the commands and environment variables

Troubleshooting

Start with:

VK_ACCESS_TOKEN=your_token npx vk-mcp-server --check

It identifies which of the three token types you have โ€” user, community or service โ€” and probes what that token can actually reach, so you find out up front instead of discovering it tool by tool. It never calls a write method.

Common cases:

What you seeWhat it means
error 8: Application is blockedThe VK app that issued the token is blocked. Every token from it fails this way, however valid the token looks. Create your own app and issue a fresh token.
error 5: User authorization failedThe token expired or was revoked โ€” run --login again.
error 1051 or error 28A service token cannot call user methods. Use a user or community token.
error 15: Access deniedThe data is restricted โ€” a private profile, or a community that hides its members.
error 5 with subcode 1130VK bound the token to the IP that authorised it, and the server is on a different one. Common when the server runs on a VPS but you signed in from your laptop. Get the token on the machine that runs the server, or use a community token.
Security Error when authorisingThe old implicit OAuth flow. Use --login, which does the current VK ID flow.
No VK token configured on every toolThe server is running but your client never passed VK_ACCESS_TOKEN to it. Check the env block in your client config โ€” a token in your shell does not reach a server the client spawns itself.

The server turns these into messages that say what to do, so the model can usually explain the fix without you reading this table.

Available Tools

Tools marked โœ๏ธ change something on VK โ€” they post, edit, delete or join on behalf of whoever owns the access token. Each tool also carries MCP annotations (readOnlyHint, destructiveHint), so a client can auto-approve lookups while still asking before a post is edited or deleted.

Users

ToolDescription
vk_users_getGet user profiles by IDs or screen names
vk_users_searchSearch users by name, city, age and other criteria

Wall

ToolDescription
vk_wall_getGet posts from user/community wall
vk_wall_get_by_idGet specific posts by {owner_id}_{post_id}
vk_wall_postโœ๏ธ Publish a new post
vk_wall_editโœ๏ธ Edit an existing post
vk_wall_deleteโœ๏ธ Delete a post
vk_wall_create_commentโœ๏ธ Add comment to a post

Groups

ToolDescription
vk_groups_getGet user's communities list
vk_groups_get_by_idGet community info by ID
vk_groups_searchSearch communities by name and criteria
vk_groups_get_membersGet community members
vk_groups_joinโœ๏ธ Join a community or request to join

Photos

ToolDescription
vk_photos_getGet photos from albums
vk_photos_upload_wallโœ๏ธ Upload a photo and get an attachment string for vk_wall_post

Other

ToolDescription
vk_friends_getGet user's friends list
vk_newsfeed_getGet user's newsfeed
vk_likes_getGet users who liked an object, with reaction counts
vk_stats_getGet community statistics (admin only)

Prompts

Prompts appear in your client as ready-made workflows โ€” pick one, fill in the community, and the model knows which tools to use.

PromptWhat it does
community_digestReads recent posts and summarises themes, standouts and cadence
engagement_reportRanks posts by likes and by comments, then explains what the winners share
audience_snapshotSamples members and describes the audience by sex, city and activity
publish_postDrafts a post in the community's own tone, shows it for approval, publishes it
find_communitiesSearches communities on a topic and compares the candidates

Usage Examples

Once configured, you can ask Claude:

  • "Get information about Pavel Durov's VK profile"
  • "Show me the latest 5 posts from the VK official community"
  • "Post 'Hello World!' on my wall"
  • "Get the list of communities I'm a member of"
  • "Show my newsfeed"

Example Conversation

A real exchange โ€” the numbers below came back from VK while this was written.

You:    How big is the VK Mini Apps community, and how are its recent posts doing?

Claude: [vk_groups_get_by_id  group_ids="apiclub", fields="members_count,activity"]
        [vk_wall_get          domain="apiclub", count=3]

        VK Mini Apps (@vkappsdev, id 166562603) โ€” 245,457 members, filed under
        Programming, with 898 posts on the wall. The three most recent:

        21 Jan   22,653 views   46 likes   15 reposts   "ะ“ะพั‚ะพะฒั‹ ัะดะตะปะฐั‚ัŒ ัั‚ะพั‚ ะณะพะด ะฟั€ะพั€ั‹ะฒะฝั‹ะผ?..."
        20 Jul      529 views   18 likes    0 reposts   (photo post, no text)
        13 Jul    3,782 views   11 likes    3 reposts   "ะกัƒะฟะตั€ัะธะปะฐ ะธะณั€ ะธ ะฟั€ะธะปะพะถะตะฝะธะน ะฒ ัะพั†ัะตั‚ะธ..."

        The January post reached forty times the audience of the July ones โ€”
        worth a look at what it did differently.

The model gets each of those numbers as typed fields rather than text it has to parse, because every tool declares an output schema.

Changelog

See CHANGELOG.md.

Testing

Run the test suite:

npm test

Run tests with coverage:

npm run test:coverage

API Reference

This server wraps VK API v5.199. For detailed parameter documentation, see:

Security Notes

  • Never share your access token
  • The offline scope provides a non-expiring token
  • Review permissions before authorizing
  • For production, consider using a service token

Contributing

Contributions are welcome! Please read the Contributing Guidelines first.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT ยฉ 2026 bulatko

Links


Made with โค๏ธ for the MCP ecosystem

Related MCP Servers

06ketan/substack-ops

๐Ÿ ๐Ÿ  - Substack with zero AI API keys. 26 tools (posts, notes, comments, replies, reactions, restacks). Host LLM drafts via proposereply โ†’ confirmreply tokens. SQLite dedup, JSONL audit, dry-run default. Install: uvx substack-ops mcp install cursor.

๐ŸŒ Social Media0 views
abhineet34/linkedin-mcp-server

๐Ÿ“‡ ๐Ÿ  - Local LinkedIn MCP server for posting to LinkedIn from Claude. 9 tools โ€” create/edit/delete posts (text, image, article), upload images, fetch profile, look up company pages, and check follower counts. Uses the official LinkedIn REST API with OAuth 2.0 (wmembersocial, OIDC).

๐ŸŒ Social Media0 views
anwerj/youtube-uploader-mcp

๐ŸŽ๏ธ โ˜๏ธ - AIโ€‘powered YouTube uploaderโ€”no CLI, no YouTube Studio. Uploade videos directly from MCP clients with all AI capabilities.

๐ŸŒ Social Media0 views
arjun1194/insta-mcp

๐Ÿ“‡ ๐Ÿ  - Instagram MCP server for analytics and insights. Get account overviews, posts, followers, following lists, post insights, and search for users, hashtags, or places.

๐ŸŒ Social Media0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

Last checked: 7/28/2026, 7:54:58 PM

Unclaimed listing (imported or pending owner verification). Claim it โ†’
โ˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.