@scom82/topvisor-mcp
This server provides 17 tools for managing SEO rank tracking workflows via the Topvisor API v2, covering everything from project setup to position history retrieval.
Account & Billing
topvisor_balance— get account balance (computed from transaction history as a workaround for a known API limitation)topvisor_bank_history— view transaction history (deposits, charges, bonuses) with filtering and pagination
Project Management
topvisor_list_projects— list projects with filtering, ordering, pagination, and optional searcher/region detailstopvisor_add_project— create a new project by URL, with optional name and tags
Search Engine & Region Configuration
topvisor_add_searcher— add a search engine (Yandex, Google, YouTube, Bing, etc.) to a projecttopvisor_add_region— add a region to a searcher using a catalogregion_key, with depth and device optionstopvisor_list_regions— list configured regions to retrieve the criticalregion_indexvalues needed for subsequent calls
Keyword Management
topvisor_list_keywords— list keywords in a project with filtering, ordering, and paginationtopvisor_import_keywords— bulk import keywords via CSV with group assignment support
Position Checking
topvisor_check_price— preview the cost of a position check before submissiontopvisor_check_positions— asynchronously submit a position check job; optionally collect SERP snapshots
Results & Analytics
topvisor_get_history— retrieve keyword position history over a date range, with optional snippet/URL/visitor datatopvisor_get_summary— compare position distribution between two dates (tops, averages, dynamics, visibility metrics)topvisor_get_summary_chart— get time-series position distribution data for chart renderingtopvisor_get_snapshots— retrieve SERP snapshots collected during a position check (requiresdo_snapshots=1)
Utilities
topvisor_services— list all API services, searcher keys, and filter operators; works without credentialstopvisor_request— generic escape hatch to call any Topvisor API v2 method directly, including undocumented endpoints
Provides tools for Google search rank tracking via the Topvisor API, enabling management of projects, keywords, searchers, regions, position checks, history, and SERP snapshots.
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., "@@scom82/topvisor-mcpAdd project for https://example.com and run Yandex position check."
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.
@scom82/topvisor-mcp
Unofficial. This is an unofficial MCP server and is not affiliated with or endorsed by Topvisor.
An MCP (Model Context Protocol) server for the Topvisor API v2. Provides 17 tools for Yandex/Google rank tracking: projects, keywords, searchers and regions, position check submission, history, summary charts, SERP snapshots, and account balance. Implements the stateful Topvisor project model — set up project → add searchers/regions → import keywords → submit check (async) → read history.
Installation
Via npx (recommended — through MCP config)
No local install needed. Configure your MCP client and npx handles the rest:
{
"mcpServers": {
"topvisor": {
"command": "npx",
"args": ["-y", "@scom82/topvisor-mcp"],
"env": {
"TOPVISOR_USER_ID": "your_user_id",
"TOPVISOR_API_KEY": "your_api_key"
}
}
}
}From source
git clone https://github.com/SCom-82/topvisor-mcp.git
cd topvisor-mcp
npm install
npm run build
node dist/index.jsRelated MCP server: YouTube MCP Server
Configuration
Environment Variable | Required | Default | Description |
| yes | — | Your Topvisor User ID (found in account settings) |
| yes | — | Your Topvisor API key (generate in account settings) |
| no |
| Override base URL |
| no |
| HTTP request timeout in milliseconds |
The server starts without credentials — tools/list and topvisor_services work without them. Credentials are validated lazily on the first real API call.
Claude Desktop / Claude Code config
{
"mcpServers": {
"topvisor": {
"command": "npx",
"args": ["-y", "@scom82/topvisor-mcp"],
"env": {
"TOPVISOR_USER_ID": "your_user_id",
"TOPVISOR_API_KEY": "your_api_key"
}
}
}
}Tools
Tool | Service | Description |
| — | List all API services, searcher_key reference, filter operators. Works without credentials. |
| any | Generic escape hatch: call any Topvisor API v2 method directly. |
| bank_2 | Get account balance computed from transaction history (bank_2/info is non-functional for single-user accounts). |
| bank_2 | Get transaction history (deposits, charges, bonuses). |
| projects_2 | List projects with filtering, ordering, optional searchers/regions. |
| projects_2 | Create a new project by URL. |
| positions_2 | Add a search engine (Yandex/Google/etc.) to a project. |
| positions_2 | Add a region to a searcher. See region_key vs region_index below. |
| positions_2 | List configured regions and get their |
| keywords_2 | List keywords in a project. |
| keywords_2 | Import keywords via CSV (bulk, with group assignment). |
| positions_2 | Preview cost of a position check without running it. |
| positions_2 | ASYNC submit a position check job. See checker/go is async below. |
| positions_2 | Read position history for a project and regions. |
| positions_2 | Get position summary comparing two dates. |
| positions_2 | Get chart data for position distribution over time. |
| snapshots_2 | Get SERP snapshots collected during a position check. |
Stateful project model
Topvisor uses a stateful hierarchy — unlike stateless rank-check APIs, you first configure a project, then submit checks, then read results:
1. topvisor_add_project { url: "https://example.com" }
→ project_id
2. topvisor_add_searcher { project_id, searcher_key: 0 }
# 0 = Yandex; 1 = Google
3. topvisor_add_region { project_id, searcher_key: 0, region_key: <catalog_key>, region_depth: 1 }
# region_key is the Topvisor catalog key, NOT region_index
4. topvisor_list_regions { project_id }
→ region_index (use this, not region_key, in all subsequent calls)
5. topvisor_import_keywords { project_id, group_name: "main", keywords: "name\nкупить окна\nокна цены" }
6. topvisor_check_price { project_id, regions_indexes: [<region_index>] }
# Preview cost before spending balance
7. topvisor_check_positions { project_id, regions_indexes: [<region_index>] }
# Async submit — returns projectsIds, does NOT wait for results
8. (poll) topvisor_list_projects { filters: [{name:"id",operator:"EQUALS",values:[project_id]}], fields: ["id","status_positions","positions_percent"] }
# Wait until status_positions indicates completion
9. topvisor_get_history { project_id, regions_indexes: [<region_index>], date1: "2026-06-01", date2: "2026-06-22" }
→ keywords[] with positionsDataregion_key vs region_index
⚠️ These are different values. A common source of errors:
region_key— the catalog identifier used when adding a region (topvisor_add_region). Comes from the Topvisor regions catalog and differs per search engine.region_index— the sequential index assigned by Topvisor after a region is added to your project. This is whattopvisor_get_history,topvisor_check_price,topvisor_check_positions, andtopvisor_get_snapshotsexpect.
Always call topvisor_list_regions after adding a region to retrieve the assigned region_index. Do not assume region_key === region_index.
Confirmed live on project 29248320 (green-line24.ru):
City | region_key | region_index |
Samara | 51 | 83 |
Tolyatti | 240 | 112 |
Zhigulyovsk | 11132 | 829 |
Syzran | 11139 | 557 |
Note: region_key=51 for Yandex corresponds to the Yandex rids value for Samara — but this coincidence does not hold in general.
topvisor_list_regions uses get/projects_2/projects with show_searchers_and_regions=2 (the searchers_regions/export endpoint returns CSV with no region_index and is not used).
checker/go is async
topvisor_check_positions submits a job to the Topvisor queue and returns immediately with projectsIds. The actual position collection happens in the background — typically minutes to hours depending on the queue and number of keywords/regions.
How to wait for results:
Call
topvisor_check_positions→ getprojectsIds.Poll
topvisor_list_projectswithfields: ["id","status_positions","positions_percent"]until the status indicates completion.Then call
topvisor_get_historyto read the collected positions.
There is no built-in wait/poll in this MCP tool (v1). This is intentional — position checks can take hours, which would exceed MCP client timeouts.
SERP snapshots
SERP snapshots are only collected when a position check is submitted with do_snapshots: 1 (topvisor_check_positions { ..., do_snapshots: 1 }). Snapshots typically become available before the position collection fully completes.
topvisor_get_snapshots returns the snapshot data under the snapshotsData key (not data). Keys have the format "YYYY-MM-DD:position:region_index" and map to objects like:
{
"snapshotsData": {
"2026-06-23:1:83": { "url": "https://green-line24.ru/", "domain": "green-line24.ru", "snippet_title": "", "snippet_body": "" }
}
}Note: snippet_title / snippet_body are returned but may be empty strings — Topvisor does not always populate them even when requested via positions_fields.
Error format
Topvisor API always returns HTTP 200. Errors are indicated in the response body:
{
"result": null,
"errors": [
{
"code": 53,
"string": "Authorisation error",
"detail": { "header": "Authorization" }
}
]
}Known error codes: 53 = authorization error (wrong/missing credentials); 1002 = parameter value mismatch.
When a tool encounters a Topvisor error, it returns:
{
"isError": true,
"errors": [{ "code": 53, "string": "Authorisation error", "detail": {...} }]
}Known limitations and API quirks
Rate limits: Topvisor API rate limits are not documented. This server does not implement automatic retries or backoff in v1. If you hit rate limit errors, add delays between calls manually.
Async checker:
topvisor_check_positionsdoes not poll for completion. You must polltopvisor_list_projectsyourself.Undocumented methods: Several edit/delete methods (
edit/projects_2/projects/*,del/keywords_2/keywords, etc.) have undocumented parameters and are not available as typed tools. Usetopvisor_requestas an escape hatch.region_keyfor specific cities: The Topvisor region catalog uses its own identifiers per search engine. Usetopvisor_requestwithget/positions_2/searchers_regionsto browse available regions.topvisor_balance: Thebank_2/infoendpoint returns emptyresult:[]for single-user accounts regardless of parameters (confirmed:fieldscauses error 2003, all other params ignored). Balance is computed as sum ofbank_2/historytransactions.topvisor_add_project: Returns a bare integer (project_id), not an object or array.topvisor_add_searcher/topvisor_add_region: Return0on duplicate add (idempotent, not an error).searchers_regions/export: Returns CSV inwindows-1251encoding with noregion_indexfield — not usable for the key→index mapping. Usetopvisor_list_regionsinstead (which callsprojects_2/projectswithshow_searchers_and_regions=2).
License
MIT © 2026 SCom-82
Maintenance
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/SCom-82/topvisor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server