aethyn-browser-mcp
An MCP server enabling AI agents to drive a real browser through residential proxies with per-task geo (country/city) and sticky identity, all chosen at call time.
README
Aethyn Browser MCP — residential-proxy browser control for AI agents (pick the country, one identity per task)
An MCP server that lets an AI agent drive a real browser through residential proxies, choosing the exit country / city, tier, and a sticky per-task session — at call time. The browser (Playwright Chromium) runs locally on your machine; you bring your own proxy credentials. Defaults to Aethyn residential proxies, and works with any HTTP proxy you configure.
The only browser MCP where the agent picks the country and holds one identity per task.
Why this exists
- Playwright MCP drives a browser well, but its proxy is set once at server startup — one static exit for the whole session. The agent can't ask for a Japanese exit for one task and a German exit for the next.
- Hosted "web scraping" MCPs hide the proxy and hand back JSON — no runtime control over geo or session identity, and it's their pool at their price.
This server gives the agent runtime, per-task, steerable geo + sticky identity as tools — exactly what browser agents need to pull country-specific data (pricing, SERPs, catalogs, availability) and feed it into a chart or pipeline.
Quickstart
Add the server to your MCP client — Claude Desktop (claude_desktop_config.json) or Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"aethyn-browser": {
"command": "npx",
"args": ["-y", "aethyn-browser-mcp"],
"env": {
"AETHYN_USERNAME": "aethyn-XXXXX",
"AETHYN_PASSWORD": "your-proxy-password",
"AETHYN_DEFAULT_TIER": "premium"
}
}
}
}
Chromium is downloaded automatically on first install (~170 MB, one-time). If your environment blocks post-install scripts, run it yourself: npx playwright install chromium.
⚠️ Set the tier to match your plan.
AETHYN_DEFAULT_TIERdefaults topremium(port2099). If your account is Elite, set it toelite(port5499) — otherwise traffic hits the Premium port and the proxy returns 407 (auth rejected), even though the browser launched fine. The agent can also override per task withtier: "elite".
That's it. Ask your agent something like "Launch a browser in Japan, open example.co.jp, verify the exit IP is Japanese, and give me the page as markdown."
Tools
| Tool | What it does |
|---|---|
aethyn_launch_browser |
Launch local Chromium through a residential exit in a chosen country (+ city/state on Elite), tier, and sticky session. Returns a session_id. |
aethyn_navigate |
Go to a URL; waits for load and returns the HTTP status, final URL, and title. |
aethyn_get_content |
Return the page cleaned for reading (markdown / text / html). |
aethyn_snapshot |
Accessibility snapshot (roles, names, [ref=..] handles) — how the agent decides what to click. |
aethyn_click |
Click by ref (from the snapshot) or a CSS/role/text selector. |
aethyn_type |
Type into an input (optionally submit with Enter). |
aethyn_check_exit_ip |
Fetch IP info through the session's proxy to verify the geo actually landed. |
aethyn_new_identity |
Rotate to a fresh exit IP (same country) and clear cookies. |
aethyn_close |
Close the session's context and free memory. |
aethyn_list_countries |
Discover available countries (and Elite cities) at runtime. |
How it's different
| Aethyn Browser MCP | Playwright MCP | Hosted scraping MCPs | |
|---|---|---|---|
| Runs the browser | Local (yours) | Local | Their cloud |
| Proxy geo chosen by the agent per task | ✅ at call time | ❌ fixed at startup | ❌ not exposed |
| Sticky identity per task (pinned exit IP) | ✅ | ❌ | ❌ |
| Verify the exit geo landed | ✅ check_exit_ip |
❌ | ❌ |
| Bring your own proxy | ✅ any HTTP proxy | one static proxy | ❌ |
No trash-talk — just the capability delta. (Playwright MCP is great; it just wasn't built for per-task geo.)
Bring your own proxy
Aethyn is the default, but any HTTP proxy works — point PROXY_HOST at it and describe its username format with a template. [ ... ] segments are dropped when empty, and {country} {city} {state} {session} {lifetime} are filled from the agent's call:
{
"mcpServers": {
"browser": {
"command": "npx",
"args": ["-y", "aethyn-browser-mcp"],
"env": {
"PROXY_HOST": "gate.your-provider.com",
"PROXY_PORT": "7000",
"PROXY_USERNAME": "your-user",
"PROXY_PASSWORD": "your-pass",
"PROXY_USERNAME_TEMPLATE": "{username}-country-{country}[-city-{city}]-session-{session}-lifetime-{lifetime}"
}
}
}
}
For a plain fixed proxy with no geo in the username, use "PROXY_USERNAME_TEMPLATE": "{username}".
Configuration
| Env var | Default | Notes |
|---|---|---|
AETHYN_USERNAME / AETHYN_PASSWORD |
— | Your Aethyn proxy credentials (default provider). |
AETHYN_DEFAULT_TIER |
premium |
premium (HTTP 2099) or elite (HTTP 5499, unlocks city/state). |
AETHYN_HEADLESS |
true |
Set false to watch the browser. |
AETHYN_MAX_SESSIONS |
8 |
Oldest session is evicted past this cap. |
AETHYN_IDLE_TIMEOUT_MIN |
10 |
Idle sessions auto-close after this many minutes. |
AETHYN_IPINFO_URL |
https://ipinfo.io/json |
Endpoint check_exit_ip hits (through the proxy). |
PROXY_HOST / PROXY_PORT / PROXY_USERNAME / PROXY_PASSWORD / PROXY_USERNAME_TEMPLATE |
— | Bring-your-own proxy (overrides the Aethyn default). |
HTTP proxies only — Chromium can't authenticate SOCKS5, so this server is HTTP-only by design.
Guardrails
This tool is for collecting public data. Please:
- Respect
robots.txt, rate limits, and each site's terms and the law. Can reach ≠ should. - No login/credential-wall automation, and no CAPTCHA solving — there's no such capability. If a site shows a challenge, read the page and stop rather than trying to bypass it.
- Pace yourself. A residential IP firing dozens of requests per second is still obviously a bot.
- Your credentials stay in your MCP config on your machine; the proxy password is never logged.
Get credentials
Need residential proxy credentials? The free trial needs no card:
→ Create an Aethyn account · Quickstart docs · Pricing
Contributing
PRs welcome — especially extending data/locations.json with more countries, cities, and states (single lowercase alphanumeric tokens), and new client examples. Keep it real and runnable; use placeholder credentials only.
License
MIT — free to use, copy, and adapt.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。