这是一个通过Chrome的DevTools协议提供与Chrome交互工具的MCP服务器。该服务器能够远程控制Chrome标签页,包括执行JavaScript、捕获屏幕截图、监控网络流量等。
当需要手动配置浏览器使其处于某种状态,然后再让像Cline这样的AI工具进行操作时,这种类型的MCP服务器非常有用。您也可以使用此工具来监听并拉取网络事件到其上下文中。
npm install @nicholmikey/chrome-tools
该服务器可以通过MCP设置中的环境变量进行配置:
{
"chrome-tools": {
"command": "node",
"args": ["path/to/chrome-tools/dist/index.js"],
"env": {
"CHROME_DEBUG_URL": "http://localhost:9222",
"CHROME_CONNECTION_TYPE": "direct",
"CHROME_ERROR_HELP": "自定义错误信息"
}
}
}
CHROME_DEBUG_URL:Chrome远程调试接口可用的URL(默认:http://localhost:9222)CHROME_CONNECTION_TYPE:用于日志记录的连接类型标识符(例如:"direct","ssh-tunnel","docker")CHROME_ERROR_HELP:连接失败时显示的自定义错误信息启动带有远程调试功能的Chrome:
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
# Mac
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
# Linux
google-chrome --remote-debugging-port=9222
配置MCP设置:
{
"env": {
"CHROME_DEBUG_URL": "http://localhost:9222",
"CHROME_CONNECTION_TYPE": "direct"
}
}
在WSL中运行时,您需要设置一个SSH隧道以连接到Windows上运行的Chrome:
ssh -N -L 9222:localhost:9222 windowsuser@host
{
"env": {
"CHROME_DEBUG_URL": "http://localhost:9222",
"CHROME_CONNECTION_TYPE": "ssh-tunnel",
"CHROME_ERROR_HELP": "确保SSH隧道正在运行:ssh -N -L 9222:localhost:9222 windowsuser@host"
}
}
当在Docker中运行Chrome时:
启动Chrome容器:
docker run -d --name chrome -p 9222:9222 chromedp/headless-shell
配置MCP设置:
{
"env": {
"CHROME_DEBUG_URL": "http://localhost:9222",
"CHROME_CONNECTION_TYPE": "docker"
}
}
列出所有可用的Chrome标签页。
在指定的标签页中执行JavaScript代码。 参数:
tabId:Chrome标签页IDscript:要执行的JavaScript代码捕获指定标签页的屏幕截图,并自动优化以供AI模型使用。 参数:
tabId:Chrome标签页IDformat:图像格式(jpeg/png)- 注意:这仅适用于初始捕获。最终输出使用WebP,PNG作为备用格式quality:JPEG质量(1-100)- 注意:仅适用于初始捕获fullPage:捕获整个可滚动页面图像处理:
监控并捕获来自指定标签页的网络事件。 参数:
tabId:Chrome标签页IDduration:捕获持续时间(秒)filters:可选的类型和URL模式过滤器导航标签页到指定的URL。 参数:
tabId:Chrome标签页IDurl:要加载的URL查询并检索匹配CSS选择器的DOM元素的详细信息。 参数:
tabId:Chrome标签页IDselector:用于查找元素的CSS选择器
返回值:nodeId:节点唯一标识符tagName:HTML标签名textContent:元素文本内容attributes:包含所有元素属性的对象boundingBox:元素的位置和尺寸isVisible:元素是否可见ariaAttributes:用于无障碍性的ARIA属性点击DOM元素并捕获由点击触发的任何控制台输出。 参数:
tabId:Chrome标签页IDselector:用于查找要点击元素的CSS选择器
返回值:message:成功/失败消息consoleOutput:由点击触发的控制台消息数组MIT