mcpField
S
Site-Shot

Site-Shot

本地服务
site-shot.com浏览器自动化31 天前更新

关于 Site-Shot

Site-Shot 是面向需要查看公开网页截图的 AI Agent 和 MCP 客户端的 MCP 服务。它使用 Chromium 渲染并以图片返回截图,支持整页捕获、国家代理,以及默认移除广告和 Cookie 横幅。

主要功能

  1. 01视口与整页截图
  2. 02基于 Chromium 渲染网页
  3. 03按国家选择代理
  4. 04移除广告和 Cookie 横幅
  5. 05支持 PNG、JPEG 和 WebP

适用场景

  1. 01以视觉方式检查公开网页
  2. 02截取长网页以供审核
  3. 03查看特定国家视角的网页

MCP 相关

该服务向 MCP 客户端提供 `capture_screenshot` 和 `capture_full_page` 工具,并以 MCP 图片返回截图。它通过 stdio 运行,需要 Site-Shot API 密钥以及有剩余额度的 API 方案。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"site-shot": {
"command": "npx",
"args": [
"-y",
"site-shot-mcp"
],
"env": {
"SITESHOT_API_KEY": "<SITESHOT_API_KEY>"
}
}
}
}
启动命令npx -y site-shot-mcp
需要配置的环境变量
SITESHOT_API_KEY密钥Site-Shot API key (the userkey). Get one at https://www.site-shot.com/pricing/

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmsite-shot-mcp1.2.0

工具

2

收录的工具列表 · 更新于 3 周前

参数类型必填说明
urlstring是要截图的网页 URL。也可使用 example.com 这样的裸域名(默认使用 https://)。
widthinteger否视口宽度(像素)。如果省略,则使用 Site-Shot API 自身的默认值;需要精确尺寸时请传入值。
heightinteger否视口高度(像素)。如果省略,则使用 Site-Shot API 自身的默认值;需要精确尺寸时请传入值。
formatenum否图像格式。默认值:png。png | jpeg
block_adsboolean否移除广告,让截图更清晰。默认值:true。
block_cookie_bannersboolean否移除 Cookie 同意横幅/弹窗。默认值:true。
countrystring否通过指定国家的代理进行渲染,国家以两位字母的 ISO 3166-1 alpha-2 代码表示——"DE" 表示德国,"FR" 表示法国,"JP" 表示日本。不接受完整国家名称。自动设置 IP、语言、时区和地理位置。完整列表:https://www.site-shot.com/countries
strict_countryboolean否如果请求的国家没有可用代理,则报错,而不是静默回退到美国代理。仅在设置了 country 时生效。默认值:true。
languagestring否覆盖浏览器语言,例如 "de"。
time_zonestring否覆盖时区,例如 "Europe/Berlin"。
geolocationstring否以 "lat,lng" 格式覆盖地理位置。
wait_msinteger否页面加载后、截图前等待的毫秒数(适用于 SPA/动画)。如果省略,Site-Shot API 会应用自己的延迟——省略此项并不表示零等待截图。
max_heightinteger否捕获图像的高度上限(最多 20000 像素)。
full_pageboolean否捕获整个可滚动页面,而不仅是视口。默认值: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 客户端

  1. 在 https://www.site-shot.com/start/ 获取 Site-Shot API 密钥。
  2. 将以下内容添加到 Claude Desktop 配置文件(claude_desktop_config.json)中:
{
  "mcpServers": {
    "site-shot": {
      "command": "npx",
      "args": ["-y", "site-shot-mcp"],
      "env": { "SITESHOT_API_KEY": "YOUR_API_KEY" }
    }
  }
}
  1. 重启 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

截取网页截图(默认截取视口)。

ParamTypeDefaultNotes
urlstring (required)—要截取的页面
full_pagebooleanfalse截取整个可滚动页面
width / heightnumberAPI default视口/设备尺寸
format"png" | "jpeg" | "webp"png图像格式。webp 为无损格式,在页面尺寸中位数的情况下比 png 小约 35%,每边最大 16,383 px
block_adsbooleantrue移除广告
block_cookie_bannersbooleantrue移除 Cookie 同意弹窗
countrystring—代理国家/地区的两字母 ISO 3166-1 alpha-2 代码,例如 "DE"(自动设置 IP/语言/时区/地理位置)
strict_countrybooleantrue如果该国家/地区没有代理,则报错,而非回退到美国
language / time_zone / geolocationstring—手动覆盖项
wait_msnumberAPI default截取前额外等待的时间(适用于 SPA/动画)
max_heightnumber20000 (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 varRequiredDescription
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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。