mcpField
F
Facet

Facet

本地服务
chndr-prksh.github.io开发工具21 周前更新

关于 Facet

Facet 是面向开发者和编码 Agent 的命令行工具及 MCP 服务,用于检查网页响应式布局。它通过 headless Chromium 模拟不同设备,并报告问题元素及修复建议。

主要功能

  1. 01跨设备检查响应式问题
  2. 02模拟真实设备视口设置
  3. 03发现溢出、文本和触控目标问题
  4. 04报告控制台与网络错误
  5. 05保存截图和 JSON 报告

适用场景

  1. 01检查不同手机尺寸下的 CSS 修改
  2. 02根据响应式错误阻止合并请求
  3. 03通过设备截图检查页面

MCP 相关

Facet 可作为 stdio MCP 服务运行。客户端可调用工具检查响应式表现、截取页面、检查元素、审计无障碍问题及列出设备。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"chndr-prksh-facet": {
"command": "npx",
"args": [
"-y",
"@chandra14/facet-check"
]
}
}
}
启动命令npx -y @chandra14/facet-check

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

安装包
npm@chandra14/facet-check0.1.0

工具

5

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

参数类型必填说明
urlstring是要加载的页面:完整 URL、裸主机名(如 example.com)、本地开发服务器地址(如 localhost:3000),或 HTML 文件路径
devicesarray否来自 list_devices 的设备 ID 或名称("iphone-17"、"Galaxy S26")、自定义尺寸("1024x768"),或预设:default、popular、phones、latest、tablets、desktops、apple、foldables、extremes。

详细介绍

facet-check

在真实手机、平板电脑和桌面设备视口中检查网页的响应式设计问题。 它可以通过命令行运行、在 CI 中运行,也可以作为 MCP 服务运行,供 AI 编码 Agent(Claude Code、Cursor、Codex、VS Code)调用。

npx @chandra14/facet-check localhost:3000

也可以通过 npm install -g @chandra14/facet-check 安装一次,然后运行 facet-check localhost:3000。

以下是一个价格表宽度超出手机屏幕的测试页面的输出(已缩短):

Facet check http://localhost:3000
6 devices · 14 errors · 14 warnings

✗ iPhone 16 393×852 @3x
  error Page scrolls sideways by 267px — The document is 660px wide in a 393px viewport.
  error Extends 267px past the viewport — <table.prices> “SizeWhole beanGroundSubscriptionWholesal”
        html > body > main > table
        fix: Constrain it with max-width: 100%, min-width: 0 on a flex child, overflow-wrap: anywhere, or let it scroll inside its own container.
  error Tap target is 13 × 13px — <input#weekly>
        #weekly
        fix: Targets must be at least 24 × 24px (WCAG 2.5.8); 44 × 44px is comfortable.
  warn  Field text is 14px, so iOS zooms in on focus — <input#email>
        #email
        fix: Give form controls font-size: 16px or larger.
  console Carousel failed to initialise at 393px

! Full HD laptop at 125% (most common) 1536×864 @1.25x
  warn  Text is only 10px — <p#terms> “Prices include tax. Orders placed after ”

每台设备都在无头 Chromium 中进行真实模拟,而不是调整窗口大小。它会使用设备的视口、像素比、触控支持、移动端视口行为和用户代理。如果页面没有 viewport meta 标签,手机上的布局宽度会是 980px,与真实设备上的表现一致。

它是 Facet 的命令行和 Agent 端。Facet 是一个开源浏览器,专为响应式 Web 开发打造。Facet 的设备目录包含 290 多种配置,从 iPhone SE 到 2026 年旗舰机型、折叠屏设备、平板电脑、笔记本电脑和 4K 显示器。

检查内容

在每台设备上检查:

  • 水平滚动,以及导致问题的元素(例如表格,而不是表格中的每个单元格)
  • 触控设备上小于 24 × 24px 的点击目标(WCAG 2.5.8)
  • 小于 12px 的文本,以及被截断但没有省略号的文本
  • 小于 16px 的表单字段,这会导致 iOS 在聚焦时放大页面
  • Viewport meta 问题:缺失、值不是 device-width,或缩放功能已禁用
  • 尺寸远超所需、在高像素密度屏幕上模糊或缺少尺寸信息的图片
  • 遮挡小屏幕过多内容的固定页眉和横幅
  • 每台设备上的控制台错误、未捕获异常和失败请求。只有一台设备记录到的错误,说明存在特定视口下的 bug。

命令行

npx @chandra14/facet-check <url> [options]
选项
-d, --devices <list>设备 ID、名称、类似 1024x768 的尺寸,或预设(默认:popular)
-s, --screenshots <dir>保存每台设备的 PNG 截图
--full-page捕获整个页面,而不只是首屏
--json以 JSON 格式输出完整报告
--all同时列出信息级别的提示
--fail-on <level>发现级别至少为 error(默认)、warn 或 info 的问题时退出码为 1;never 则始终以 0 退出
--timeout <ms>页面加载超时时间(默认 30000)
--list-devices [query]显示预设和设备目录

URL 可以是完整 URL、裸域名(example.com)、本地开发服务器(localhost:3000、:5173),也可以是 HTML 文件路径。

预设:popular(六种最常见的真实设备尺寸)、default(手机、平板电脑、笔记本电脑)、phones、latest、tablets、desktops、apple、foldables、extremes。

npx @chandra14/facet-check localhost:3000 -d phones --screenshots shots
npx @chandra14/facet-check https://example.com -d iphone-17,"Galaxy S26",ipad,1440x900 --json
在 CI 中运行

发现错误时退出码为 1,因此可以用它来阻止拉取请求合并:

- run: npx @chandra14/facet-check http://localhost:4173 --fail-on error

面向 AI Agent 的 MCP 服务

facet-check mcp 会通过 stdio 运行 Model Context Protocol 服务。随后,Agent 可以在多种屏幕尺寸下检查自己所做的 CSS 更改,并查看结果。

Claude Code

claude mcp add facet -- npx -y @chandra14/facet-check mcp

Cursor、VS Code、Claude Desktop 和其他客户端

{
  "mcpServers": {
    "facet": { "command": "npx", "args": ["-y", "@chandra14/facet-check", "mcp"] }
  }
}
工具功能
check_responsive在多台设备上加载 URL,并返回各设备上的问题、选择器和修复建议
screenshot为每台设备返回一张带标签的图片(视口或整页)
compare_element测量每台设备上的一个元素:尺寸、可见性、字体大小、显示方式、flex 和 grid
audit_accessibility在一台设备上运行 axe-core,并返回 WCAG 违规项及修复建议
list_devices列出设备目录和预设

然后可以提出这样的请求:“检查 localhost:3000 在手机上的显示,并修复所有导致横向滚动的问题。”

要求

Node 20 或更高版本,以及基于 Chromium 的浏览器。facet-check 会按以下顺序使用浏览器:FACET_CHROME 指定的浏览器、Playwright 的 Chromium(npx playwright install chromium)、Google Chrome,然后是 Microsoft Edge。大多数机器上已经安装了其中一种浏览器。

限制

  • 仅支持 Chromium。 iPhone 配置模拟的是 iPhone 屏幕,而不是 Safari 的 WebKit 引擎。Safari 特有的问题仍需使用 Safari 检查。
  • 它会检查页面加载后的状态。命令行无法访问登录后或点击后才能显示的内容。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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