Browser Use
Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.
作者提供的说明(英文原文)
Website screenshots for AI agents: full-page, country proxies, ad & cookie-banner removal
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
SITESHOT_API_KEY标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"site-shot": {
"command": "npx",
"args": [
"-y",
"site-shot-mcp"
],
"env": {
"SITESHOT_API_KEY": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add site-shot --env SITESHOT_API_KEY=your-value -- npx -y site-shot-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"site-shot": {
"command": "npx",
"args": [
"-y",
"site-shot-mcp"
],
"env": {
"SITESHOT_API_KEY": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"site-shot": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"site-shot-mcp"
],
"env": {
"SITESHOT_API_KEY": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 site-shot 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:SITESHOT_API_KEY
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.2.1)于7天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Browser Use, Chrome DevTools MCP, MCP Server Browser
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.
MCP server for Chrome DevTools
MCP server for browser use access
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Give Claude, Cursor, and other AI agents the ability to see public web pages — take website screenshots with Site-Shot over the Model Context Protocol.
Real Chromium rendering · full-page capture · country proxies · automatic ad & cookie-banner removal (cleaner images, fewer vision tokens).
A Site-Shot API key is required. A confirmed account's API key comes with the free plan: 100 API captures a month, no card needed; paid plans start at $5/mo for 2,000. The free plan renews every month; once its 100 captures are spent, the API answers 403 until it renews. Free-plan captures come from the default location or the US; other countries need a paid plan, and a request for one is refused but still counts toward the month. Accounts confirmed before 2026-10-30 switch the free plan on with one button on https://www.site-shot.com/start/; an account that has had a paid plan before does not get it. Captures draw on that account's API allowance and limits. Get the key at https://www.site-shot.com/start/ or from your Site-Shot dashboard; pricing lists the plans. The no-signup browser tool at https://www.site-shot.com/ is for checking output quality; it does not issue keys.
This repository doubles as a Claude Code plugin marketplace. The plugin runs the published site-shot-mcp package over stdio and declares the API key as a required sensitive setting, so Claude Code prompts you for it rather than asking you to paste it into this repository, a config file, or a chat message.
claude plugin marketplace add site-shot/site-shot-mcp
claude plugin install site-shot@site-shot
or from inside a session:
/plugin marketplace add site-shot/site-shot-mcp
/plugin install site-shot@site-shot
Both forms resolve the marketplace from GitHub, so they work only after these manifests are published on the repository's public default branch — not from a local branch or a fork you have not pushed.
Load the plugin directory for a single session:
claude --plugin-dir /absolute/path/to/site-shot-mcp/plugins/site-shot
Two things matter here. Pass an absolute path — --plugin-dir is resolved against the session's working directory. And start that session from an ordinary project directory, not from this checkout: this repo *is* the site-shot-mcp package, so npm resolves the name locally, finds no linked binary, and the server dies with sh: site-shot-mcp: command not found before Claude Code ever sees it. From an unrelated directory npx fetches the published package and starts it normally — checked both ways: exit 127 in this checkout, clean stdio start from an empty one.
To exercise the real install path instead — marketplace resolution, manifests and the required setting — add the checkout itself as a marketplace:
claude plugin marketplace add /absolute/path/to/site-shot-mcp
claude plugin install site-shot@site-shot
That installs into your user scope; undo it with claude plugin uninstall site-shot@site-shot and claude plugin marketplace remove site-shot.
The plugin declares SITESHOT_API_KEY as a required, sensitive setting. Claude Code prompts you for the key, masks it as you type, and substitutes it into the server's environment as ${user_config.SITESHOT_API_KEY}. Storage of the value is Claude Code's to handle.
Installing without one is not an error — Claude Code records it as still owed (1 userConfig option not yet set (1 required)). Supply it through the masked prompt:
/plugin configure site-shot@site-shot
Configure it before expecting a capture: that setting is what feeds the server its key. What Claude Code does while it is unset — whether the server is launched at all, whether the tools are offered — is Claude Code's own behaviour and is not something documented here from observation.
The server's side is independent of that. When run directly over stdio without a key, it still starts and prints a warning on stderr. Capture tools return a clear missing-key error instead of an image.
The plugin adds one skill (site-shot:website-screenshots) and the two capture tools below. It declares no hooks, no monitors and no scheduled capture jobs; the only process it launches is the declared stdio MCP server.
This repository is also a Codex plugin marketplace. It installs the same plugin directory as Claude Code does — one shared skill, the same pinned site-shot-mcp@1.2.1 over stdio — with its own manifest, because the two hosts wire the credential differently.
codex plugin marketplace add site-shot/site-shot-mcp
codex plugin add site-shot@site-shot
Exercised against Codex CLI 0.147.0 on macOS (arm64). As with Claude Code, these resolve the marketplace from GitHub, so they work only once these manifests are on the public default branch; before that, point codex plugin marketplace add at a local checkout path instead.
Installing is not the same as being configured, and neither is the same as a capture succeeding. Installation only puts the manifests in place. The server still needs the key below, and a capture still needs allowance left on that key's account, from the free plan or a paid plan.
Codex forwards the variable named in the plugin's descriptor:
{ "command": "npx", "args": ["-y", "site-shot-mcp@1.2.1"], "env_vars": ["SITESHOT_API_KEY"] }
env_vars is an allow-list of names, not values: no key appears in this descriptor, in the command below, or in the manual config.toml entry further down. You provision the key in the environment of the session you start Codex from.
macOS defaults to zsh, where read -p starts a coprocess rather than printing a prompt — and a bash-labelled code fence does not change the shell you paste into. Invoke bash explicitly:
bash -c 'read -r -s -p "Site-Shot API key: " SITESHOT_API_KEY && printf "\n" && export SITESHOT_API_KEY && exec codex'
-s keeps the key off the screen, nothing here puts it in argv, and the export is scoped to that child session instead of lingering in the shell you typed from.
What this does not do is configure a Codex you start some other way. A desktop launcher or a remote session begins from its own environment, so it will run the server without a key until you provision one there too.
If you would rather not install the plugin, the same stdio server can be configured by hand. This is an alternative to the plugin, not an addition — run both and you have two configurations of one server. Pick one.
[mcp_servers.site-shot]
command = "npx" args = ["-y", "site-shot-mcp@1.2.1"] env_vars = ["SITESHOT_API_KEY"]
codex mcp add site-shot -- npx -y site-shot-mcp@1.2.1 writes that entry for you; add env_vars afterwards, since codex mcp add --env KEY=VALUE would store the key in the file in clear text. Check it with codex mcp get site-shot. If you already have an entry like this and now install the plugin, remove the manual one deliberately with codex mcp remove site-shot — nothing here edits your configuration for you.
Either route, the caveat from the Claude Code section applies: unless the entry sets cwd, Codex starts the server from wherever you ran Codex, so running it inside this repo hits the same local-name collision.
claude_desktop_config.json):{
"mcpServers": { "site-shot": { "command": "npx", "args": ["-y", "site-shot-mcp"], "env": { "SITESHOT_API_KEY": "YOUR_API_KEY" } } } }
Works the same way in any MCP client (Cursor, Cline, VS Code, LangChain, CrewAI) — point the client at npx -y site-shot-mcp with SITESHOT_API_KEY in the environment.
Every integration above runs the same local stdio server, published on npm and in the official MCP Registry. Hosted HTTPS MCP is a separate deployment and client-compatibility path, not something these plugin install commands configure. Publication here does not imply listing in the shared ChatGPT/Codex public plugin directory or Claude's remote connector directory.
Two tools, both returning the screenshot as an MCP image. There is no saved library, no listing, no markdown conversion and no scheduling — this server captures images and hands them back.
capture_screenshotScreenshot a web page (viewport by default).
| Param | Type | Default | Notes | ||
|---|---|---|---|---|---|
url | string (required) | — | Page to capture | ||
full_page | boolean | false | Capture the whole scrollable page | ||
width / height | number | API default | Viewport / device size | ||
format | "png" \ | "jpeg" \ | "webp" | png | Image format. webp is lossless, about 35% smaller than png on the median page, max 16,383 px per side |
block_ads | boolean | true | Remove ads | ||
block_cookie_banners | boolean | true | Remove cookie-consent popups | ||
country | string | — | Proxy country as a two-letter ISO 3166-1 alpha-2 code, e.g. "DE" (auto IP/lang/tz/geo) | ||
strict_country | boolean | true | Error out if the country has no proxy, instead of falling back to the US | ||
language / time_zone / geolocation | string | — | Manual overrides | ||
wait_ms | number | API default | Extra wait before capture (SPAs/animations) | ||
max_height | number | 20000 (full page) | Cap captured height |
Returns the screenshot as an MCP image.
"API default" is not a number this package gets to state.
width,heightandwait_ms
are forwarded only when you pass them, so whatever applies when you don't is decided by the
Site-Shot API and can change without a release here. Versions up to 1.1.0 printed pixel sizes
for
width/heightthat the API does not use — an agent that omitted them to take "the
default" got a different viewport, with nothing in the returned image to reveal it. Pass
explicit values whenever the size matters.
Country codes are ISO codes, never names. Pass
"DE", not"Germany". The API matches
codes exactly and would otherwise render through a US proxy without telling you, so the server
rejects full names before spending a render.
strict_country(on by default) likewise turns an
unavailable country into an error instead of a silent US screenshot — pass
falseto opt back
into the fallback. Supported countries →
capture_full_pageSame as capture_screenshot with full-page capture enabled.
If your agent drives a browser, it can screenshot pages itself — and for pages that must be signed into or stepped through a flow, that is the right tool. For public URLs, delegating the capture to this server is usually better engineering: every capture runs the same pipeline (no re-planning between runs), can be taken from a specific country with matching locale and time zone (country + strict_country), is scored by an image classifier with an escalating retry ladder behind it before being returned, and costs a fraction of a cent instead of a browser session plus vision tokens per look. The full comparison, both directions honestly argued: AI agent vs. screenshot API — who should capture the page.
| Env var | Required | Description |
|---|
| `SITESHOT_A
只显示了开头部分;其余内容请在仓库中阅读