关于 Site-Shot
Site-Shot 是面向需要查看公开网页截图的 AI Agent 和 MCP 客户端的 MCP 服务。它使用 Chromium 渲染并以图片返回截图,支持整页捕获、国家代理,以及默认移除广告和 Cookie 横幅。
主要功能
- 01视口与整页截图
- 02基于 Chromium 渲染网页
- 03按国家选择代理
- 04移除广告和 Cookie 横幅
- 05支持 PNG、JPEG 和 WebP
适用场景
- 01以视觉方式检查公开网页
- 02截取长网页以供审核
- 03查看特定国家视角的网页
MCP 相关
该服务向 MCP 客户端提供 `capture_screenshot` 和 `capture_full_page` 工具,并以 MCP 图片返回截图。它通过 stdio 运行,需要 Site-Shot API 密钥以及有剩余额度的 API 方案。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 要截图的网页 URL。也可使用 example.com 这样的裸域名(默认使用 https://)。 |
| width | integer | 否 | 视口宽度(像素)。如果省略,则使用 Site-Shot API 自身的默认值;需要精确尺寸时请传入值。 |
| height | integer | 否 | 视口高度(像素)。如果省略,则使用 Site-Shot API 自身的默认值;需要精确尺寸时请传入值。 |
| format | enum | 否 | 图像格式。默认值:png。png | jpeg |
| block_ads | boolean | 否 | 移除广告,让截图更清晰。默认值:true。 |
| block_cookie_banners | boolean | 否 | 移除 Cookie 同意横幅/弹窗。默认值:true。 |
| country | string | 否 | 通过指定国家的代理进行渲染,国家以两位字母的 ISO 3166-1 alpha-2 代码表示——"DE" 表示德国,"FR" 表示法国,"JP" 表示日本。不接受完整国家名称。自动设置 IP、语言、时区和地理位置。完整列表:https://www.site-shot.com/countries |
| strict_country | boolean | 否 | 如果请求的国家没有可用代理,则报错,而不是静默回退到美国代理。仅在设置了 country 时生效。默认值:true。 |
| language | string | 否 | 覆盖浏览器语言,例如 "de"。 |
| time_zone | string | 否 | 覆盖时区,例如 "Europe/Berlin"。 |
| geolocation | string | 否 | 以 "lat,lng" 格式覆盖地理位置。 |
| wait_ms | integer | 否 | 页面加载后、截图前等待的毫秒数(适用于 SPA/动画)。如果省略,Site-Shot API 会应用自己的延迟——省略此项并不表示零等待截图。 |
| max_height | integer | 否 | 捕获图像的高度上限(最多 20000 像素)。 |
| full_page | boolean | 否 | 捕获整个可滚动页面,而不仅是视口。默认值:false。 |
详细介绍
Site-Shot MCP 服务
让 Claude、Cursor 和其他 AI Agent 查看公开网页 — 通过 Model Context Protocol 使用 Site-Shot 截取网站截图。
使用真实 Chromium 渲染 · 全页截图 · 国家代理 · 自动移除广告和 Cookie 横幅 (图像更干净,消耗的视觉令牌更少)。
需要 Site-Shot API 密钥,且必须使用付费的 Site-Shot API 方案:截图会消耗该账户现有的 API 配额和限额。密钥可从 Site-Shot 控制面板获取;定价页面 列出了各方案。无需注册即可使用的浏览器工具 https://www.site-shot.com/ 可用于检查输出质量;但它不会提供密钥。
Claude Code(插件)
此仓库同时也是 Claude Code 插件市场。该插件通过 stdio 运行已发布的
site-shot-mcp 软件包,并将 API 密钥声明为必需的敏感设置,因此 Claude Code 会提示你输入密钥,而不是让你将其粘贴到此仓库、配置文件或聊天消息中。
安装
claude plugin marketplace add site-shot/site-shot-mcp
claude plugin install site-shot@site-shot
或在会话中运行:
/plugin marketplace add site-shot/site-shot-mcp
/plugin install site-shot@site-shot
这两种方式都会从 GitHub 解析插件市场,因此只有在这些清单发布到仓库的公开默认分支后才能使用 — 无法从本地分支或尚未推送的 Fork 使用。
在此之前先试用
为单个会话加载插件目录:
claude --plugin-dir /absolute/path/to/site-shot-mcp/plugins/site-shot
这里有两点很重要。请传入绝对路径 — --plugin-dir 会根据会话的工作目录解析。此外,请从普通项目目录启动该会话,不要从此检出目录启动:此仓库本身就是 site-shot-mcp 软件包,因此 npm 会在本地解析该名称,找不到已链接的二进制文件,服务器便会在 Claude Code 看到它之前因 sh: site-shot-mcp: command not found 而退出。从无关目录启动时,npx 会获取已发布的软件包并正常启动 — 已通过两种方式验证:在此检出目录中退出代码为 127,在空目录中则能正常启动 stdio。
若要改为测试真实安装流程 — 包括插件市场解析、清单和必需设置 — 请将此检出目录本身添加为插件市场:
claude plugin marketplace add /absolute/path/to/site-shot-mcp
claude plugin install site-shot@site-shot
这会安装到你的用户范围;使用 claude plugin uninstall site-shot@site-shot 和
claude plugin marketplace remove site-shot 可撤销安装。
API 密钥
该插件将 SITESHOT_API_KEY 声明为必需的敏感设置。Claude Code 会提示你输入密钥,在你输入时将其隐藏,并将其替换到服务器环境中的
${user_config.SITESHOT_API_KEY}。该值的存储由 Claude Code 负责。
未提供密钥时安装并不会报错 — Claude Code 会将其记录为尚未设置
(1 userConfig option not yet set (1 required))。请通过隐藏输入的提示提供密钥:
/plugin configure site-shot@site-shot
请先配置密钥,再尝试截图:服务器的密钥由此设置提供。尚未设置时 Claude Code 会如何处理 — 是否启动服务器、是否提供工具 — 属于 Claude Code 自身的行为,本文不会根据观察对其进行说明。
服务器端不受此设置影响。直接通过 stdio 运行时,即使没有密钥,服务器也会启动,并在 stderr 上打印警告。截图工具会返回明确的缺少密钥错误,而不是图像。
该插件会添加一个技能(site-shot:website-screenshots)和下方所述的两个截图工具。它不声明钩子、监视器或定时截图任务;它启动的唯一进程就是声明的 stdio MCP 服务。
Codex CLI(插件)
此仓库同时也是 Codex 插件市场。它安装的插件目录与 Claude Code 相同 — 共用一个技能,并通过 stdio 运行相同的固定版本 [email protected] — 但使用各自的清单,因为这两个宿主接入凭据的方式不同。
安装
codex plugin marketplace add site-shot/site-shot-mcp
codex plugin add site-shot@site-shot
已在 macOS(arm64)上的 Codex CLI 0.147.0 中进行测试。与 Claude Code 一样,这些配置会从 GitHub 获取插件市场,因此只有在这些清单进入公开默认分支后才能使用;在此之前,请将 codex plugin marketplace add 指向本地检出路径。
安装不等于完成配置,二者也都不等于截图成功。安装只会放置清单。服务仍需要下方的密钥,而截图还需要有剩余额度的 Site-Shot 方案。
API 密钥
Codex 会转发插件描述符中指定的变量:
{ "command": "npx", "args": ["-y", "[email protected]"], "env_vars": ["SITESHOT_API_KEY"] }
env_vars 是名称的允许列表,而非具体值:此描述符、下方命令或后文的手动 config.toml 条目中都不会出现密钥。你需要在启动 Codex 的会话环境中配置密钥。
macOS 默认使用 zsh,在其中 read -p 会启动协处理进程,而不会显示提示信息;代码块标注为 bash 也不会改变你粘贴命令时使用的 shell。请明确调用 bash:
bash -c 'read -r -s -p "Site-Shot API key: " SITESHOT_API_KEY && printf "\n" && export SITESHOT_API_KEY && exec codex'
-s 可避免密钥显示在屏幕上,这里的操作不会将密钥放入 argv,并且导出仅作用于该子会话,不会留在你输入命令的 shell 中。
但这无法配置通过其他方式启动的 Codex。桌面启动器或远程会话会从各自的环境启动,因此在你也为它们配置密钥之前,它们运行服务时都不会有密钥。
改用手动 MCP 配置
如果你不想安装插件,也可以手动配置同一个 stdio 服务。这是插件的替代方案,不是额外配置——两者都运行就会为同一个服务创建两套配置。请选择其一。
[mcp_servers.site-shot]
command = "npx"
args = ["-y", "[email protected]"]
env_vars = ["SITESHOT_API_KEY"]
codex mcp add site-shot -- npx -y [email protected] 会替你写入该条目;之后再添加 env_vars,因为 codex mcp add --env KEY=VALUE 会将密钥以明文形式存入文件。使用 codex mcp get site-shot 检查。如果你已有此类条目,现在又要安装插件,请主动使用 codex mcp remove site-shot 删除手动配置——这里不会替你修改配置。
无论采用哪种方式,都适用 Claude Code 部分中的注意事项:除非条目设置了 cwd,否则 Codex 会从你运行 Codex 的位置启动服务,因此在此仓库内运行时会遇到相同的本地名称冲突。
Claude Desktop 和其他 MCP 客户端
- 在 https://www.site-shot.com/start/ 获取 Site-Shot API 密钥。
- 将以下内容添加到 Claude Desktop 配置文件(
claude_desktop_config.json)中:
{
"mcpServers": {
"site-shot": {
"command": "npx",
"args": ["-y", "site-shot-mcp"],
"env": { "SITESHOT_API_KEY": "YOUR_API_KEY" }
}
}
}
- 重启 Claude Desktop。让它 “截取 https://news.ycombinator.com 的整页截图”,它就会调用服务并显示图片。
任何 MCP 客户端(Cursor、Cline、VS Code、LangChain、CrewAI)都可以采用相同方式使用——将客户端指向 npx -y site-shot-mcp,并在环境中设置 SITESHOT_API_KEY。
以上每种集成都运行同一个本地 stdio 服务,该服务发布在 npm 和官方 MCP Registry 上。托管式 HTTPS MCP 属于单独的部署方式和客户端兼容路径,这些插件安装命令不会配置它。此处的发布并不意味着会被列入共享的 ChatGPT/Codex 公开插件目录或 Claude 的远程连接器目录。
工具
共有两个工具,都会以 MCP 图片形式返回截图。这里没有已保存的图库、列表、Markdown 转换或定时任务——此服务只会截取图片并将其返回。
capture_screenshot
截取网页截图(默认截取视口)。
| Param | Type | Default | Notes |
|---|---|---|---|
url | string (required) | — | 要截取的页面 |
full_page | boolean | false | 截取整个可滚动页面 |
width / height | number | API default | 视口/设备尺寸 |
format | "png" | "jpeg" | "webp" | png | 图像格式。webp 为无损格式,在页面尺寸中位数的情况下比 png 小约 35%,每边最大 16,383 px |
block_ads | boolean | true | 移除广告 |
block_cookie_banners | boolean | true | 移除 Cookie 同意弹窗 |
country | string | — | 代理国家/地区的两字母 ISO 3166-1 alpha-2 代码,例如 "DE"(自动设置 IP/语言/时区/地理位置) |
strict_country | boolean | true | 如果该国家/地区没有代理,则报错,而非回退到美国 |
language / time_zone / geolocation | string | — | 手动覆盖项 |
wait_ms | number | API default | 截取前额外等待的时间(适用于 SPA/动画) |
max_height | number | 20000 (full page) | 限制截取高度 |
以 MCP 图像形式返回截图。
“API default”并非本软件包可以指定的数值。 只有在传入
width、height和wait_ms时,才会转发这些参数;如果不传入,具体采用什么值由 Site-Shot API 决定,且可能在此处未发布新版本时发生变化。1.1.0 及更早版本会显示 API 实际不会使用的width/height像素尺寸——Agent 若省略这些参数以使用“默认值”,得到的视口就会不同,而返回的图像中没有任何信息可以揭示这一点。只要尺寸很重要,就请传入明确的值。
国家/地区代码必须是 ISO 代码,不能是名称。 请传入
"DE",而不是"Germany"。API 会精确匹配代码;否则会通过美国代理渲染,且不会告知你。因此,服务会在消耗渲染资源前拒绝完整名称。strict_country(默认开启)同样会将不可用的国家/地区视为错误,而非静默返回美国代理的截图——传入false可重新启用回退机制。支持的国家/地区 →
capture_full_page
与 capture_screenshot 相同,但启用整页截取。
为什么调用此服务,而不使用 Agent 自己的浏览器?
如果你的 Agent 使用浏览器,它可以自行截取页面——对于必须登录或需要按步骤完成流程的页面,这才是正确的工具。对于公开 URL,将截取任务交给此服务通常是更好的工程实践:每次截取都运行相同的流程(无需在不同运行之间重新规划);可以从指定国家/地区截取,并匹配相应的语言区域和时区(country + strict_country);返回前会通过图像分类器评分,并在背后逐步升级重试;每次查看的费用也只需几分之一美分,而非浏览器会话加视觉令牌。完整对比,正反两方都如实论述:
AI Agent 与截图 API——谁应该截取页面。
配置
| Env var | Required | Description |
|---|---|---|
SITESHOT_API_KEY | 是 | 你的 Site-Shot API 密钥(用作 userkey)。 |
此服务只是现有 Site-Shot HTTP API(https://api.site-shot.com/)的轻量封装——没有单独的后端。
本地开发
npm install
npm run check # syntax check
npm run smoke # offline tests (stubbed fetch, no API key needed)
node test/integration.mjs # real stdio handshake against the local source
npm run test:plugin # plugin/marketplace metadata tests
npm run validate:plugin # claude plugin validate --strict (needs the claude CLI)
SITESHOT_API_KEY=yourkey npm start # run the server on stdio
要求
Node.js ≥ 18(使用内置的 fetch)。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。