The VSXRank MCP server.
Give an AI assistant the extension numbers the stores do not publish: installs and downloads per day, search position per keyword, category leaderboards and release history across the VS Code Marketplace and Open VSX. It is a remote server on our own infrastructure — nothing to install, no key to request, no account.
- Endpoint
- https://vsxrank.com/mcp
- Transport
- Streamable HTTP, POST only, stateless
- Protocol
- 2026-07-28 (also 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05)
- Authentication
- None. 60 requests a minute per address.
- Manifest
- https://vsxrank.com/.well-known/mcp.json
Connect a client
Claude Code, from a terminal:
claude mcp add --transport http vsxrank https://vsxrank.com/mcp
Claude Desktop, ChatGPT’s connectors, Cursor, Zed and anything else that reads an MCP config file: add the server as a remote HTTP server. The block is the same shape in each of them.
{
"mcpServers": {
"vsxrank": {
"type": "http",
"url": "https://vsxrank.com/mcp"
}
}
}A client that only supports stdio can reach a remote server through a local bridge such as mcp-remote. Nothing needs to be published to npm for this server: it is remote-only by design.
Both eras of the protocol are answered on this one URL. 2026-07-28 is the stateless revision — no handshake, no session id, every request carrying its own version and capabilities — and a client that still opens with initialize is served 2025-11-25 or 2025-06-18 or 2025-03-26 or 2024-11-05 instead. The tools and their answers are the same either way.
Tools
6 tools, all read-only. An extension is named by its registry — vscode or openvsx — and its publisher.name id, such as ms-python.python. Start with search_extensions if you only have a display name.
- search_extensionsSearch the extension catalog
- Find extensions on either registry by display name, publisher or `publisher.name` id. Returns the id the other tools take, with the current install and download counts. Use this whenever you have a name rather than an id.
- get_extensionGet one extension's public figures
- Identity, current install or download count, rating, category standing and release dates for one extension, on both registries when it is published to both. Also reports the last day of movement, one of the searches it ranks for, and how many searches in total we track it on.
- get_extension_installsGet the last closed day of installs
- New installs (Marketplace) and new downloads (Open VSX) for the most recent day we can close, plus any version released that day. This is the growth figure neither registry publishes: the day-over-day step in the counters we read every night. One day is the public window; the series behind it is a subscriber feature.
- list_categoriesList extension categories
- Every category the two registries publish, with how many extensions each holds. The slugs are what `get_category_leaderboard` takes.
- get_category_leaderboardGet a category's leaderboard
- The leading extensions in one category on one registry, ordered by count, by growth (`movers`) or by publication date (`new`). Use it to answer who leads a category and who is gaining on them. The ordering carries the answer; per-row growth figures are a subscriber feature.
- get_catalog_statsGet catalog-wide statistics
- How large each registry's catalog is, how many extensions we read every night, how many appeared this week, and when the last crawl finished. Use it for questions about the ecosystem rather than about one extension.
Call it directly
It is plain JSON-RPC over one POST, so you do not need an MCP library to try it. server/discover says which revisions we speak, tools/list returns the schemas, and tools/call runs one. A GET has no stream to open on a stateless server and answers 405.
curl -sS -X POST https://vsxrank.com/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_extension_installs",
"arguments": { "registry": "vscode", "id": "ms-python.python" }
}
}'Scope and limits
Every tool returns what an anonymous visitor already sees on the public pages: identity, both total counters, the latest day of installs or downloads, a live search position per extension, category boards and catalog totals. The full daily series, rank history for every search an extension appears in, competitors and alerts live in the web app, which runs in full on a live extension with no signup. A subscriber MCP server is not built yet — tell us at contact if you want one.
Requests are rate limited per address, and a limited request answers with how long to wait rather than dropping the connection. Marketplace figures are unique installs; Open VSX figures are downloads and count every update, so the two are never added or compared — every payload repeats that, because it is the mistake worth preventing.