Evomi MCP Server
OfficialClick 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., "@Evomi MCP ServerScrape example.com from US"
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.
Evomi MCP Server
A Model Context Protocol (MCP) server for Evomi's proxy and web scraping APIs. It gives AI assistants like Claude direct access to a proxy account — credentials, connection strings, geo targeting, usage, session rotation — alongside a full scraping toolkit for crawling sites and extracting structured data.
39 tools by default, 40 with EVOMI_ENABLE_SPENDING=1.
Features
Proxy & account management
Proxy Credentials - Username and password for each product on the account
Connection Strings - Geo-targeted, session-pinned strings, with a curl command to check them
Bulk Proxy Lists - Up to 50 endpoints per call
Geo Targeting - Search the countries, regions, cities and ISPs a product actually offers
Usage & Balance - Bandwidth over 24h, 3d and 7d, in total and per bucket
Session Control - Rotate a sticky session onto a new exit IP
Browser Profiles - List saved fingerprint profiles, and order more behind an opt-in
Service Access - Scraper and Browser credits, concurrency and endpoints
Web scraping
Single Page Scraping - Scrape any URL with automatic JavaScript detection
Website Crawling - Multi-page crawling with depth control
URL Discovery - Find URLs via sitemaps, CommonCrawl, or in-site crawling
Domain Search - Find domains by searching the web
AI-Powered Extraction - Use AI to extract structured data from pages
Conversational Agent - Natural language interface for scraping tasks
Config Management - Save and reuse scraping configurations
Schema Management - Define and test extraction schemas
Storage Configuration - Manage cloud storage for scraped data
Scheduled Jobs - Automate scraping on a schedule
Installation
pip install evomi-mcpNeeds Python 3.10 or newer. The server runs on both major versions of the mcp
SDK (>=1.8.0,<3), so it installs into an environment already pinned to 1.x as
well as a fresh one that resolves 2.x.
Run evomi-mcp --help for the environment variables it reads, or evomi-mcp --version for the installed version. With no arguments it speaks MCP over
stdio, which is how an MCP client starts it.
Configuration
One credential is enough:
export EVOMI_PUBLIC_API_KEY="your-public-api-key"Take it from Settings > API for a personal account, or Settings > Team for a team one. It authenticates the proxy and account tools directly, and the scraping tools authenticate with the account's scraper key, which the server reads from the Public API on the first scraping call and keeps in memory for the process. It is never written to disk and never appears in tool output.
Variable | Key | Used by |
| Public API key | proxy credentials, usage, targeting, sessions — and, indirectly, everything else |
| Scraper API key, from the same page | scraping, crawling, configs, schemas, schedules. Optional: set it to pin a specific key, and no lookup is made |
| Fallback for either of the above | both, when the specific variable is unset |
Where a specific variable is set it wins over EVOMI_API_KEY. Setting a scraper
key alone works too, and the proxy and account tools then need
EVOMI_PUBLIC_API_KEY as well, since one key cannot serve both APIs.
Optional settings:
export EVOMI_BASE_URL="https://scrape.evomi.com" # scraper API, default
export EVOMI_PUBLIC_BASE_URL="https://api.evomi.com" # public API, default
export EVOMI_HIDE_PROXY_PASSWORDS=1 # mask every proxy password and service API key
export EVOMI_ENABLE_SPENDING=1 # register the tools that spend account balanceCredentials in tool output
get_proxy_credentials, build_proxy_connection_string and generate_proxy_list
return live proxy passwords, which is what they are for, and get_api_access
returns a service API key when asked with include_api_key. Every other tool
returns balances, endpoints, usage and targeting data only.
Four things bound that. Those four tools carry an instruction in their
descriptions not to repeat the value back unless it was asked for directly — the
MCP spec has no annotation for a sensitive result, so the description is the only
channel that reaches the model. generate_proxy_list and
build_proxy_connection_string return at most 50 entries per call, well under
the 500 the Public API allows, and refuse a larger request rather than clamping
it. The curl_example that comes with a connection string has its password
masked, since it is the field most likely to be pasted into a terminal or a
ticket; pass runnable_curl_example: true for the form that can be run. And
EVOMI_HIDE_PROXY_PASSWORDS=1 turns disclosure off entirely:
Tool | With the flag set |
| Masked. The username, gateway, ports and balance are unchanged |
| Masked, even when |
| Refuses, naming the variable |
| Refuses before the API is called, so the bulk credentials are never minted |
every other tool | Unchanged — none of them returns a credential |
The two that refuse do so because their entire output is the credential: a
connection string with a masked password cannot connect. The refusal points at
list_proxy_products and list_proxy_targeting_options, which give the gateway
hostname, ports and targeting values with no credential in them, and the
descriptions the model sees change too.
EVOMI_ENABLE_SPENDING=1 is the opposite, an opt-in for the one tool that costs
money. Without it order_browser_profile is not registered at all, so the
connected model never sees it.
Tool annotations
Every tool sets all four of the MCP spec's hints. destructiveHint and
openWorldHint default to true, so a tool that omits them advertises itself
as potentially destructive and as reaching an unbounded external world.
openWorldHint is true for the tools that reach an address the caller chose
(scrape_url, crawl_website, map_website, search_domains, agent_request,
and the schema and config tools that validate against the page they describe),
and false for everything that only talks to Evomi's own endpoints.
readOnlyHint is false for the tools that create, update, delete, toggle, rotate
or order something. The MUTATING prefix on rotate_proxy_session and
order_browser_profile is in the description as well, because the description
reaches every model where an annotation only reaches a client that reads it.
Usage with Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"evomi": {
"command": "evomi-mcp",
"env": {
"EVOMI_PUBLIC_API_KEY": "your-public-api-key"
}
}
}
}Or if installed from source:
{
"mcpServers": {
"evomi": {
"command": "python",
"args": ["-m", "evomi_mcp.server"],
"env": {
"EVOMI_PUBLIC_API_KEY": "your-public-api-key"
}
}
}
}Available Tools
Proxy & Account (9 tools, Evomi Public API, + 1 opt-in)
Tool | Description | Returns credentials |
| Products on the account with endpoints, ports, balance and username | No |
| Proxy username and password for one product | Yes |
| Connection strings with geo targeting, sessions and expert filters, plus a curl check | Yes |
| Bulk proxy list (up to 50 per call) from the Public API generator | Yes |
| Bandwidth used over 24h / 3d / 7d, total and per bucket | No |
| Searchable countries, regions, cities, ISPs and continents per product, each with the | No |
| Mutating — force a sticky session onto a new exit IP | No |
| Scraper and Browser access, credits, concurrency and endpoints (keys masked by default) | Only on request |
| Saved browser fingerprint profiles | No |
| Mutating, spends money — orders a browser fingerprint profile, charged against the account's data balance. Only registered when | No |
Scraping Operations (6 tools)
Tool | Description |
| Scrape a single URL with configurable options |
| Crawl a website to discover and scrape multiple pages |
| Discover URLs from a website |
| Find domains by searching the web |
| AI-powered conversational scraping assistant |
| Check the status of an async task |
Config Management (6 tools)
Tool | Description |
| List all saved scrape configurations |
| Create a new scrape configuration |
| Get a saved scrape configuration by ID |
| Update an existing scrape configuration |
| Delete a scrape configuration |
| Generate a scrape config from natural language using AI |
Schema Management (6 tools)
Tool | Description |
| List all saved extraction schemas |
| Create a new extraction schema |
| Get a saved extraction schema by ID |
| Update an existing extraction schema |
| Delete an extraction schema |
| Get the test status of an extraction schema |
Storage Management (4 tools)
Tool | Description |
| List all storage configurations |
| Create a new storage configuration |
| Update an existing storage configuration |
| Delete a storage configuration |
Schedule Management (7 tools)
Tool | Description |
| List all scheduled scrape jobs |
| Create a new scheduled scrape job |
| Get a scheduled job by ID |
| Update an existing scheduled job |
| Delete a scheduled job |
| Toggle a scheduled job active/inactive |
| Get execution history for a scheduled job |
Account (1 tool)
Tool | Description |
| Get account information including credit balance |
Tool Examples
Scraping
// Basic scrape
{"url": "https://example.com"}
// AI extraction
{"url": "https://example.com/products", "ai_enhance": true, "ai_prompt": "Extract product names and prices"}
// Browser mode with actions
{"url": "https://example.com", "mode": "browser", "js_instructions": [{"click": ".accept-cookies"}, {"wait": 1000}]}Crawling
// Basic crawl
{"domain": "example.com", "max_urls": 50}
// With URL filter
{"domain": "example.com", "url_pattern": "/products/", "depth": 3}Domain Search
// Find domains
{"query": "best e-commerce sites for electronics", "max_urls": 20, "region": "us-en"}
// Up to 10 queries in one call, max_urls applying to each
{"query": ["online bookstores", "book shops UK"], "max_urls": 50}Config Management
// Create config
{"name": "Product Scraper", "config": {"mode": "browser", "output": "markdown"}}
// Generate config with AI
{"name": "Amazon Scraper", "prompt": "Scrape product title, price, and reviews from Amazon"}Scheduling
// Create daily schedule
{"name": "Daily Prices", "config_id": "cfg_abc123", "interval_minutes": 1440, "start_time": "09:00"}Credits
Scraping operations consume credits, and what a call costs depends on the mode it
runs in and the options it carries. The current rates are at
docs.evomi.com; get_api_access reports the balance on
the account.
Each scraping response carries credits_used and credits_remaining, so the
cost of a call is visible in its own result.
Development
Setup
pip install -e ".[dev]"Running the Server Directly
evomi-mcp
# or
python -m evomi_mcp.serverTests
pytestThe suite runs against both mcp majors, and CI runs it on each of them across
the supported Python versions.
Releasing
The version is declared in both pyproject.toml and src/evomi_mcp/__init__.py,
and CI fails if they disagree. Publishing a GitHub Release tagged vX.Y.Z builds
the artifacts, runs the suite against the built wheel and uploads to PyPI over
Trusted Publishing, so there is no token anywhere.
Links
License
MIT — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Official Octoparse MCP server for template discovery, cloud tasks, and structured data export.
Free remote MCP server for fetching public web pages through a rotating proxy pool.
Zenrows MCP server — Fetch, Extract, Batch, and Browser Sessions for AI coding assistants
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/evomi/evomi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server