Official MCP server for the Massive Web Render API. Give your AI agents real-time web access — fetch any URL, search Google, query AI chatbots — with JS rendering, captcha solving, and 195+ country geo-targeting handled automatically.
- Download the latest
massive-mcp-X.Y.Z.mcpbfrom GitHub Releases. - Open the file with Claude Desktop (or drag-drop into Settings → Extensions).
- Paste your Massive API token when prompted. Token is stored in your OS keychain.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"massive": {
"command": "npx",
"args": ["-y", "@joinmassive/mcp-server"],
"env": { "MASSIVE_TOKEN": "your-token-here" }
}
}
}Restart Claude Desktop.
One command, works across all your projects:
claude mcp add massive --scope user -e MASSIVE_TOKEN=your-token-here -- npx -y @joinmassive/mcp-serverThen /mcp in any Claude Code session to confirm it's connected. Drop --scope user to scope it to the current project only.
The same JSON snippet works for any MCP-compatible client. Drop it into the client's config file:
| Client | Config path |
|---|---|
| Cursor | ~/.cursor/mcp.json |
| Continue | ~/.continue/config.json (under mcpServers) |
| Cody | ~/Library/Application Support/com.sourcegraph.cody/mcp.json (macOS) |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| VS Code (MCP) | ~/.config/Code/User/settings.json (under chat.mcp.servers) |
If npx isn't on the client's PATH, swap to a direct binary path: "command": "node", "args": ["/absolute/path/to/dist/index.js"].
Sign in at dashboard.joinmassive.com → Developer → API Keys.
Fetch any URL. Returns Markdown by default (best for LLMs).
| Arg | Type | Default | Notes |
|---|---|---|---|
url |
string (required) | — | |
format |
"markdown" | "rendered" | "raw" |
"markdown" |
|
country |
string (ISO 3166-1 alpha-2) | — | |
city |
string | — | |
subdivision |
string | — | ISO 3166-2 (e.g. "TN"). Ignored if city is set. |
device |
string | — | Device emulation name |
expiration |
integer (0–365) | — | Days the cached result is reused. 0 = always live (good for prices, scores). |
difficulty |
"low" | "medium" | "high" |
"low" |
Anti-bot evasion strength. Multipliers: medium=2×, high=premium. |
Example prompt: "Use the Massive MCP server to fetch https://news.ycombinator.com and summarise the top stories."
Google search results, parsed into structured JSON.
| Arg | Type | Default |
|---|---|---|
query (required, ≤ 255 chars) |
string | — |
country |
string (ISO) | — |
city |
string | — |
subdivision |
string | — |
max_results |
number | 10 |
expiration |
integer (0–365) | — |
language |
string | — |
display |
string | — |
Returns: { organic, ai_overview, people_also_ask, query }.
Example shape:
{
"query": "best espresso machines 2026",
"organic": [
{ "title": "...", "url": "https://...", "snippet": "..." }
],
"ai_overview": { "answer": "...", "sources": [{ "domain": "wirecutter.com", "url": "https://..." }] },
"people_also_ask": [
{ "question": "What is the best espresso machine for beginners?", "answer": "" }
]
}Example prompt: "Use web_search to find recent reviews of espresso machines and return the top 3 organic results plus the AI overview."
Chatbot answer with sources.
| Arg | Type | Default |
|---|---|---|
prompt (required, ≤ 2047 chars) |
string | — |
model |
"chatgpt" | "gemini" | "perplexity" | "copilot" |
"chatgpt" |
country |
string (ISO) | — |
city |
string | — |
subdivision |
string | — |
expiration |
integer (0–365) | — |
language |
string | — |
display |
string | — |
device |
string | — |
Returns: { completion, sources, model, subqueries? }.
No args. Returns { credits_remaining }. Useful to warn the user before they run out of credits. Free — does not consume credits.
Credit costs (live reference: https://joinmassive.com/pricing):
| Endpoint | Base cost | Notes |
|---|---|---|
web_fetch |
1 credit | Multipliers — difficulty=medium → 2×, difficulty=high → premium |
web_search |
1 credit | No multipliers |
ai_chat_completion |
1 credit | No multipliers |
account_status |
Free | — |
Worked example: web_fetch with difficulty=medium costs 1 × 2 = 2 credits.
- Cache:
expiration(days) reuses recent results. Default1. Setexpiration=0only when freshness matters (prices, scores, weather). - Difficulty: start with default
low. Bump tomedium/highonly if the low attempt fails. - Check first: call
account_status(free) before launching a batch.
This server exposes three read-only reference documents at docs:// URIs. They show up in your MCP client as attachable references:
| URI | Contents |
|---|---|
docs://massive/pricing |
Credit costs and multipliers (same as the table above, inline in your client) |
docs://massive/geotargeting |
190+ countries, subdivision/city format, examples |
docs://massive/changelog |
What's new in each release |
In Claude Desktop: open the Connectors panel and pick the resource from this server. In Claude Code: type @ and search by name. The model does not auto-read these — they're for you to browse.
"MASSIVE_TOKEN env var is not set"
Confirm the env block in your Claude Desktop config has the token. Restart Claude Desktop.
"Massive endpoint is autoscaling, please retry" A 503 from upstream. The server already retried once; wait ~10s and try again.
"403 Forbidden — the request was rejected (likely captcha or invalid token)" Either the target site rejected our captcha solver, or the token is invalid. Re-check the token at the dashboard.
No tools appear in Claude Desktop
Settings → Developer → check the MCP server logs. The most common cause is command: "npx" not being on Claude Desktop's PATH. Run which npx in Terminal — if it's under Homebrew (/opt/homebrew/bin), Claude Desktop's PATH won't include it. As a workaround, use a direct path: "command": "node", "args": ["/absolute/path/to/dist/index.js"]. Or install the .mcpb bundle (Option A above), which sidesteps PATH issues entirely.
Issues and PRs welcome at github.com/joinmassive/mcp-server.
MIT. See LICENSE.