Full VK MCP
The Full VK MCP server allows AI assistants to interact with VKontakte (VK) through a standardized Model Context Protocol (MCP) interface, providing access to 180+ VK API tools auto-generated from the official VK API schema.
Core Capabilities:
Users: Get detailed profiles, followers, subscriptions, and search by name, age, location, education, and more.
Friends: View friends lists, mutual friends, online friends, friend requests/suggestions, recently added friends, and search friends by name.
Groups/Communities: Get group info, members, banned users, settings, join requests; check membership; search communities by keyword, type, or location.
Wall: Read posts and comments, search wall posts, view reposts, and validate copyright links.
Photos: Browse albums and photos, get comments/tags, search by keyword or geolocation, and retrieve upload server URLs for media workflows.
Additional APIs: Messages, videos, market, polls, stories, stats, and ads (depending on configuration).
Key Features:
Access modes to restrict AI actions:
read(read-only),write(non-financial),money(financially sensitive), andall.Predefined profiles (e.g.,
minimal,social,content_publish,messenger,analytics,full) for easy configuration.Multiple transport modes:
stdiofor local clients (Claude Desktop, Cursor, VS Code) andhttp/ssefor remote clients (Grok, ChatGPT).Configurable filtering to include/exclude specific API sections or methods.
Automatically downloads and caches the latest VK API schema on first run.
VK MCP Server
Model Context Protocol (MCP) server for VKontakte (VK) — the largest social network in Russia and CIS countries.
This server allows AI assistants (Claude, Cursor, Windsurf, VS Code, etc.) to interact with VK through a standardized MCP interface.
Features
180+ VK API tools auto-generated from the official schema (full set available with
VK_MCP_MODE=all; safe defaults expose a smaller subset) — users, wall, groups, friends, photos, videos, messages, market, stats, stories, polls, and moreAuto-generated from VK API schema — always up-to-date with the official API
Read/Write/Money mode filtering — restrict AI to read-only, allow non-financial writes, or enable financially sensitive methods
Section filtering — include or exclude specific API sections (e.g., disable
ads,secure).envsupport — load token from environment file for local developmentVK upload API helpers — exposes upload-server and save methods for media workflows
ESM-based — modern Node.js module system
Multiple transports — stdio (for Claude Desktop / Cursor), Streamable HTTP and SSE (for remote MCP clients like Grok)
Prerequisites
Node.js ≥ 18
VK Access Token with required permissions
Installation
Option 1: Run with npx (no install)
npx full-vk-mcpOption 2: Install globally
npm install -g full-vk-mcp
full-vk-mcpOption 3: Clone from GitHub
git clone https://github.com/ssm82/full-vk-mcp.git
cd full-vk-mcp
npm install
node src/index.jsThe VK API schema is downloaded automatically on the first run. No manual steps needed.
Configuration
1. VK Access Token
Create a .env file in the project root:
VK_ACCESS_TOKEN=your_vk_token_hereOr get a token from:
vkhost.github.io — quick token generator
VK Dev — official developer portal
Required permissions depend on your use case:
wall— posting and reading wallphotos— uploading photosgroups— community managementfriends,messages,market,stats— as needed
Security: Never commit your token to git. The
.envfile is already in.gitignore.
2. Choose a Profile (Recommended)
Instead of manually configuring sections and methods, use a built-in profile via VK_MCP_PROFILE:
VK_MCP_PROFILE=minimal npx full-vk-mcpProfile | Mode | Description | Warning |
| read | Essential read methods | Safe |
| read | Users, friends + extras | Safe |
| read | ~25 content viewing methods | Safe |
| all | ~20 content creation methods | Can publish |
| all | Wall, board, groups management | Can modify communities |
| all | Messages + user info | Requires |
| read | Stats, wall, groups insights | Safe |
| money | All financially sensitive methods allowed by money-mode filtering | Financially sensitive |
| money | Ads API + helper methods | Can spend money |
| money | VK Market + upload helpers | Can modify shop |
| money | Market, orders, store, gifts, donut | Financially sensitive |
| read | ~10 search methods | Safe |
| read | All read methods except ads/secure | Safe |
| all | All VK API methods | Development only |
Profiles can be extended with environment variables:
VK_MCP_PROFILE=social VK_MCP_INCLUDE_SECTIONS=wall npx full-vk-mcpEnv extends profile: list variables (sections, methods, excludes) are merged with the profile; scalar
modeis overridden by env.
3. MCP Client Setup
VS Code (with Copilot / Claude / etc.)
Create .vscode/mcp.json:
{
"servers": {
"vk": {
"type": "stdio",
"command": "npx",
"args": ["-y", "full-vk-mcp"],
"env": {
"VK_ACCESS_TOKEN": "${input:vk-token}",
"VK_MCP_PROFILE": "minimal"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "vk-token",
"description": "VK Access Token",
"password": true
}
]
}For local development from a cloned repository, use:
{
"command": "node",
"args": ["/absolute/path/to/full-vk-mcp/src/index.js"]
}Cursor
Create .cursor/mcp.json:
{
"mcpServers": {
"vk": {
"command": "npx",
"args": ["-y", "full-vk-mcp"],
"env": {
"VK_ACCESS_TOKEN": "your_token",
"VK_MCP_PROFILE": "social"
}
}
}
}Claude Desktop
Edit claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"vk": {
"command": "npx",
"args": ["-y", "full-vk-mcp"],
"env": {
"VK_ACCESS_TOKEN": "your_token",
"VK_MCP_PROFILE": "minimal"
}
}
}
}For local development from a cloned repository, use:
{
"command": "node",
"args": ["/absolute/path/to/full-vk-mcp/src/index.js"]
}Windsurf / Other MCP Clients
Use the stdio transport and provide VK_ACCESS_TOKEN via environment variables.
4. Transport Mode
By default, the server uses stdio transport for local MCP clients. To enable remote connections, switch to HTTP:
| Use case |
| Claude Desktop, Cursor, VS Code, Windsurf |
| Grok, ChatGPT, remote MCP clients |
| Same as |
# HTTP mode for remote clients
VK_ACCESS_TOKEN=your_token VK_MCP_TRANSPORT=http npx full-vk-mcpEnvironment Variables
Variable | Default | Description |
| (required) | Your VK API access token |
| — | Built-in profile name ( |
|
|
|
| — | Comma-separated whitelist of API sections. Without a profile, safe subset ( |
|
| Comma-separated blacklist of API sections. Skipped when |
| — | Comma-separated whitelist of methods (e.g., |
| — | Comma-separated blacklist of methods |
| — | Limit the number of exposed tools |
|
| Transport type: |
|
| HTTP port (falls back to |
|
| Bind address. Use |
| — | Bearer token for HTTP transport auth (required when binding to non-loopback) |
Mode Filtering
The server automatically classifies each VK API method into risk levels:
Mode | Description | Sections |
| Read-only methods | Safe subset: |
| Read + non-financial writes | Can modify your account (post, edit, delete, send, etc.) |
| Financially sensitive only |
|
| Everything | Read + write + money — no restrictions |
Read methods —
get*,search*,is*,are*,check*,resolve*,find*,count*,lookup*,list*Write methods — everything else (post, edit, delete, send, etc.)
Money methods — any method in financial sections or explicitly tagged (
secure.getAppBalance, etc.)
Use VK_MCP_MODE=read to prevent the AI from making any changes to your VK account.
Use VK_MCP_MODE=money when you need ads, market, or payment-related tools.
Running Locally
With npm/npx:
VK_ACCESS_TOKEN=your_token npx full-vk-mcpWith a cloned repository:
# With .env file (recommended for development)
node src/index.js
# Or inline
VK_ACCESS_TOKEN=your_token node src/index.js
# Use a profile
VK_ACCESS_TOKEN=your_token VK_MCP_PROFILE=minimal node src/index.js
# Read-only mode
VK_ACCESS_TOKEN=your_token VK_MCP_MODE=read node src/index.js
# Include only specific sections
VK_ACCESS_TOKEN=your_token VK_MCP_INCLUDE_SECTIONS=users,wall node src/index.jsHTTP Mode
# Start HTTP server (localhost only, no auth)
VK_ACCESS_TOKEN=your_token VK_MCP_TRANSPORT=http npx full-vk-mcp
# With custom port
VK_MCP_TRANSPORT=http VK_MCP_PORT=8080 npx full-vk-mcp
# Public deploy (auth required)
VK_MCP_TRANSPORT=http VK_MCP_HOST=0.0.0.0 VK_MCP_AUTH_TOKEN=your_secret npx full-vk-mcpTest HTTP endpoint
# Health check
curl http://127.0.0.1:3000/healthFor full MCP protocol testing, use the MCP Inspector:
npx @modelcontextprotocol/inspectorThen select:
Transport: Streamable HTTP
URL: http://127.0.0.1:3000/mcpStreamable HTTP is session-based. A raw tools/list request must be sent only after an initialize request and with the returned Mcp-Session-Id header.
In the Inspector UI select Streamable HTTP and enter http://127.0.0.1:3000/mcp.
Available Tools (by Category)
Category | Examples | Count |
Wall |
| 10+ |
Users |
| 5+ |
Groups |
| 20+ |
Photos |
| 15+ |
Videos |
| 10+ |
Messages |
| 20+ |
Friends |
| 10+ |
Market |
| 10+ |
Stories |
| 5+ |
Polls |
| 5+ |
Stats |
| 2+ |
Ads |
| 15+ |
+ 60 more sections | docs, notes, board, fave, notifications, pages, storage, etc. | — |
Total: 180+ tools auto-generated from the official VK API schema.
Examples
Get your wall posts
Tool: vk_wall_get
Arguments: { "count": 5 }Search for users
Tool: vk_users_search
Arguments: { "q": "Ivan Ivanov", "count": 10 }Get community members
Tool: vk_groups_get_members
Arguments: { "group_id": "apiclub", "count": 100 }Create a poll
Tool: vk_polls_create
Arguments: {
"question": "What's your favorite color?",
"add_answers": "[\"Red\", \"Green\", \"Blue\"]"
}Deployment
For Render, Railway, Fly.io, or similar PaaS:
# build command
npm install
# start command (when deploying from repository)
node src/index.js
# or when deploying from npm package
npx full-vk-mcp
# environment variables
VK_ACCESS_TOKEN=...
VK_MCP_TRANSPORT=http
VK_MCP_HOST=0.0.0.0
VK_MCP_PORT=3000 # or omit to use $PORT (Render auto-sets it)
VK_MCP_AUTH_TOKEN=... # required for public access
VK_MCP_MODE=read # or your chosen profile/modeRender note: Render provides the port via the
$PORTenvironment variable. The server automatically falls back to it whenVK_MCP_PORTis not set.
Development
# Run tests (schema downloads automatically on first run)
npm test
# Start the server
node src/index.jsProject Structure
full-vk-mcp/
├── src/
│ ├── index.js # Entry point (transport switching)
│ ├── server-factory.js # MCP server factory
│ ├── http-transport.js # HTTP/SSE transport
│ ├── schema-loader.js # Loads and filters VK API schema
│ ├── tool-registry.js # Builds MCP tools from schema
│ ├── param-converter.js # Converts VK params to JSON Schema
│ ├── profiles.js # Built-in profiles
│ └── vk-client.js # VK API HTTP client
├── vk-api-schema/ # Official VK API schema (JSON) — see note below
├── tests.test.js # Test suite
├── .env # Your token (gitignored)
├── package.json
└── README.mdNote: The published npm package includes runtime files only (
src/,README.md,LICENSE,server.json). Tests and development files are kept in the GitHub repository.
VK API Schema
The VK API schema is not included in this repository to keep it lightweight. On the first run (server or tests), it is downloaded automatically from the official VK repository:
https://github.com/VKCOM/vk-api-schemaThe schema is saved to vk-api-schema/ in the project root and cached for subsequent runs.
Updating the Schema
To get the latest VK API changes, delete the cached folder and restart:
rm -rf vk-api-schema/
node src/index.js # schema will be re-downloaded automaticallySecurity
Token storage: Use
.envor your MCP client's secure environment variables. Never commit tokens.Least privilege: Use
VK_MCP_MODE=readif the AI only needs to read data.Section filtering: Exclude sensitive sections like
ads,secureif not needed.HTTP mode security: By default, HTTP binds to
127.0.0.1only. If you bind to0.0.0.0(public),VK_MCP_AUTH_TOKENis required — the server will refuse to start without it. Always use HTTPS in production.
Troubleshooting
Issue | Solution |
| Create |
| Check that the method name uses snake_case ( |
| Your token lacks the required VK permission scope |
Too many tools | Use |
HTTP | Add header |
HTTP | Set auth token when binding to |
License
MIT
Contributing
Pull requests are welcome! Please open an issue first to discuss major changes.
Made for the Model Context Protocol ecosystem
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/ssm82/full-vk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server