Chrome MCP Server 版本演进全解析从核心浏览器工具到智能缓存与 STDIO 连接v0.0.1 → v0.0.5【免费下载链接】mcp-chromeChrome MCP Server is a Chrome extension-based Model Context Protocol (MCP) server that exposes your Chrome browser functionality to AI assistants like Claude, enabling complex browser automation, content analysis, and semantic search.项目地址: https://gitcode.com/gh_mirrors/mc/mcp-chromeChrome MCP Server 是一个基于 Chrome 扩展实现的 Model Context ProtocolMCP服务端它把 Chrome 浏览器的自动化能力、页面内容分析与语义搜索能力开放给 Claude 等 AI 助手。本文以仓库中的 CHANGELOG.md 为主线逐版本拆解 v0.0.1 至 v0.0.5 的功能演进与技术决策并结合源码工具注册、CDP 会话管理、模型缓存、Native Messaging 等实现给出可验证的调用链与参数细节帮助你快速理解该项目的架构脉络与每个版本的真实改动内容。版本演进总览从 changelog 可以清晰地看到该项目先打地基、再补性能、后扩生态的演进节奏版本主题核心变化v0.0.1功能地基完整浏览器自动化工具集、向量搜索引擎、Native Messaging 主机、ONNX 模型推理、Popup 管理界面v0.0.2性能与健壮性条件化语义引擎初始化、模型缓存管理、Windows 兼容、并发初始化保护v0.0.3页面注入能力inject script与send command to inject script两个新工具v0.0.4连接与观测STDIO 连接支持、chrome_console控制台输出捕获工具v0.0.5体验优化截图 base64 图片压缩、交互元素检测范围扩展支持 interactive div下面按版本顺序深入展开。v0.0.1基础能力层——浏览器自动化、语义搜索与原生通信v0.0.1 是项目的第一版交付了五大支柱能力它们是后续所有版本的地基。核心浏览器工具集变更记录列出了 Click、Fill、Screenshot、Navigation、Keyboard 五类基础工具强调坐标与选择器双模式点击与整页 / 元素级截图。这些工具在当前代码中统一由BaseBrowserToolExecutor基类派生的执行器实现并通过chrome-mcp-shared包中的TOOL_SCHEMAS对外暴露为 MCP 工具注册入口位于 mcp-server.ts 与 register-tools.ts。以截图工具为例其执行器位于 screenshot.ts。从源码可以看到它在 v0.0.5 之前已经具备完整的长页面截图管线SCROLL_DELAY_MS 350滚动后等待渲染与懒加载、MAX_CAPTURE_PARTS 50无限滚动页最多分段数、MAX_CAPTURE_HEIGHT_PX 50000最大捕获高度并支持storeBase64、fullPage、savePng、maxHeight等参数——这正是 changelog 所称full page and element-specific screenshot capture的实现基础。向量搜索引擎向量搜索是该项目区别于普通浏览器控制工具的核心卖点由四部分组成Content Indexing自动索引浏览器标签页内容对应 content-indexer.tsSemantic SimilarityAI 文本相似度匹配对应 semantic-similarity-engine.tsVector Databaseembedding 的高效存取对应 vector-database.tsMulti-language Support多语言文本处理配套 text-chunker.ts 做文本分块。Native Host 集成与消息协议Native Host 层解决了扩展 ↔ 外部 AI 客户端的通信问题使用 Chrome Native Messaging 建立双向通道支持 Windows / macOS / Linux 三平台。核心实现位于 native-messaging-host.ts服务端入口为 index.ts。Windows 上的注册依赖注册表清单检测对应 scripts/register.ts这也是 v0.0.2 重点修复 Windows 兼容问题的背景。AI 模型集成ONNX Runtime WASM SIMD模型推理层选用了 ONNX Runtime并以 WebAssembly 形式运行在浏览器扩展中配合 SIMD 加速与内存池优化。仓库 workers/ 目录下的ort-wasm-simd-threaded.jsep.wasm等文件即是该推理运行时simd_math.js/simd_math_bg.wasm提供 SIMD 数学运算支持wasm-simd 包则用 Rustsrc/lib.rs实现了高性能数学内核。模型管理支持动态加载与切换通过 model-cache-manager.ts 在 v0.0.2 中得到系统化增强。Popup 管理界面Popup 界面承担扩展的管理面板职责源码位于 popup/包含模型选择LocalModelPage.vue、实时初始化与下载进度ProgressIndicator.vue、设置管理以及缓存统计与清理ModelCacheManagement.vue。App.vue中直接引用了getCacheStats、clearModelCache、cleanupModelCache等缓存操作接口App.vue。v0.0.2条件初始化与模型缓存管理v0.0.2 是本项目性能优化最集中的一个版本解决了插件启动即加载大模型、无缓存时拖慢启动这一核心痛点。条件化语义引擎初始化Conditional Semantic Engine Initialization核心思想只有本地存在有效模型缓存时才加载模型无缓存时跳过模型加载从而把无缓存场景的启动时间从约 3s 压缩到约 0.5s。从源码可以还原完整链路model-cache-manager.ts 提供isModelCached(modelUrl)与hasAnyValidCache()两个检测方法semantic-similarity-engine.ts 调用cacheManager.isModelCached(onnxModelUrl)判断模型是否已缓存后台脚本根据缓存情况决定是否初始化语义引擎VectorSearchTool改为被动初始化模式——即工具被真正调用时才按需加载模型避免插件启动阶段的无谓下载。这种缓存驱动初始化 按需加载的设计同时带来了内存优化不加载模型时语义引擎占用的内存被释放给其他任务。增强的模型缓存管理缓存管理器围绕 Cache Storage API 实现当前源码中的关键常量model-cache-manager.tsCACHE_NAME onnx-model-cache-v1缓存仓库名称MAX_CACHE_SIZE_MB 500缓存总大小上限 500MB超出后自动清理最旧条目与 changelog 的 Cache Size Management: Automatic cleanup when cache exceeds 500MB limit 完全对应缓存过期策略changelog 记录为 14 天过期自动清理从当前源码看过期常量已演进为CACHE_EXPIRY_DAYS 30说明过期窗口在后续迭代中被放宽配置时应以当前源码为准。缓存元数据通过CacheMetadata记录timestamp、modelUrl、size、version并以https://cache-metadata.local/encodedUrl这种虚拟 URL 形式存入同一缓存仓库便于统计时跳过。CacheStats接口totalSize、entryCount、entries直接支撑 Popup 界面中的缓存统计展示。Windows 平台兼容与并发初始化保护Windows 兼容修复了多 NVM 安装导致的 Node.js 环境冲突Native Host 清单通过注册表检测完成注册安装与排障流程可参考 WINDOWS_INSTALL_zh.md 与 TROUBLESHOOTING_zh.md并发初始化保护防止后台脚本、内容脚本等多组件同时对模型发起重复初始化。从ModelCacheManager的单例模式getInstance()以及缓存管理组件间的协调流程可以看出初始化路径被收敛为检查缓存 → 判定是否加载 → 单实例执行从而消除竞态条件。v0.0.3注入脚本工具链v0.0.3 引入了两个相互配合的工具用于向任意网页注入内容脚本并与注入的脚本通信Inject script tool向网页注入内容脚本Send command to inject script tool向已注入脚本发送命令。实现位于 inject-script.ts。从源码看InjectScriptTool要求同时提供type与jsScript两个必填参数ExecutionWorld指定执行环境脚本内容指定执行逻辑支持按tabId、url或当前活动标签定位目标页面并在 URL 匹配时复用已打开的标签而非重复创建。注入脚本与命令通道之间通过注入页面的桥接层inject-bridge.js建立联系——桥接脚本以window.__INJECT_SCRIPT_TOOL_UNIVERSAL_BRIDGE_LOADED__标志防止重复加载SEND_COMMAND_TO_INJECT_SCRIPT工具则按tabId eventName payload向目标脚本投递事件。这套机制还深度复用于录制回放引擎回放节点在执行fill、scroll等动作时同样走INJECT_SCRIPT工具通道见 record-replay/nodes/fill.ts 与 scheduler.ts说明注入脚本是浏览器自动化动作的底层执行通路。v0.0.4STDIO 连接与控制台输出捕获v0.0.4 是连接方式与可观测性的双重升级。STDIO Connection Support在原先仅支持基于 HTTP 的 MCP 连接基础上v0.0.4 新增了标准输入输出stdio连接方式使 MCP Server 可以直接被本地 CLI 或子进程方式启动的客户端如 Claude 桌面版配置拉起。其实现是一个stdio 代理架构核心在 mcp-server-stdio.ts使用StdioServerTransport建立本地 stdio 服务端StdioChromeMcpServer声明tools、resources、prompts三种 capability通过StreamableHTTPClientTransport连接真实的后端 MCP 服务后端地址来自配置文件 stdio-config.json默认http://127.0.0.1:12306/mcp收到本地CallToolRequest后由handleToolCall转发到远端 MCP 客户端执行工具调用超时默认 2 分钟源码注释特别指出此前误用了2*6*1000即 12 秒的 bug现已修正为2 * 60 * 1000客户端复用带 ping 健康检查ensureMcpClient()会先ping探测连接失败则重建客户端。工具列表直接从chrome-mcp-shared的TOOL_SCHEMAS读取保证 stdio 通道与 HTTP 通道暴露的工具集完全一致。相关配置方式可参考 mcp-cli-config.md。Console Output Capture Toolchrome_console新增的chrome_console工具用于捕获浏览器标签页的控制台输出实现拆为两层底层缓冲器 console-buffer.ts为每个标签页维护滚动缓冲区通过 CDP 的Runtime.enable、Log.enable持续收集三类事件——Log.entryAdded常规日志、Runtime.consoleAPICalledconsole API 调用、Runtime.exceptionThrown异常。缓冲上限默认 2000 条消息、500 条异常超出后丢弃最旧条目并累计droppedMessageCount/droppedExceptionCount当标签页导航到新域名时自动清空缓冲避免不同站点日志混淆上层工具执行器 console.ts支持snapshot一次性捕获等待 2s 冲刷与buffer持续捕获两种模式并提供丰富的筛选参数pattern支持/regex/flags语法与纯字符串两种写法、onlyErrors、limit、clear读取前清空、clearAfterRead读取后清空避免重复读取等。值得注意的细节snapshot 模式会把 console 参数通过Runtime.callFunctionOn在页面内执行深度序列化函数深度上限 3 层、属性上限 100 个支持循环引用标记[Circular]、Date/RegExp/Map/Set特化序列化、BigInt 转字符串加n后缀从而把对象型日志也完整回传给 MCP 客户端buffer 模式则刻意丢弃objectId只保留安全的预览字段防止内存泄漏。二者形成深度 vs 常驻的取舍。v0.0.5图片压缩与交互元素检测优化Image Compression截图 base64 压缩v0.0.5 为截图工具引入 base64 图片压缩核心函数是 image-utils.ts 的compressImagescale缩放比例默认 1.0先按比例缩小画布从源头降低像素量quality0.0 ~ 1.0默认 0.8有损格式的编码质量formatimage/jpeg|image/webp默认image/jpeg目标编码格式。实现路径为缩放绘制到 Canvas →canvas.convertToBlob({ type, quality })→ 转为 dataURL返回压缩后的 dataURL 与 MIME 类型。对于 MCP 上下文窗口有限的场景这能显著减少每次截图占用的 token 与传输体积该工具同时配合storeBase64参数控制是否将截图以 base64 形式存回页面上下文。Interactive Elements Detection Optimization交互元素检测工具在 v0.0.5 扩大了搜索范围新增对interactive div等自定义交互容器的支持。注入脚本 interactive-elements-helper.js 中定义了完整的元素类型选择器配置ELEMENT_CONFIG标准元素button、link、input、checkbox、radio、textarea、select、tab通用交互元素v0.0.5 增强的核心[onclick], [tabindex]:not([tabindex^-]), [rolemenuitem], [roleslider], [roleoption], [roletreeitem], [roleswitch]——即把带onclick处理器、可聚焦 tabindex 以及各种 ARIA 交互角色的元素全部纳入检测这正是找到div 化的自定义组件的关键多角色兜底ANY_INTERACTIVE_SELECTOR将全部选择器合并配合穿透 Shadow DOM 的深度遍历安全上限 12000 节点与多层 fallback 策略保证复杂页面下也能稳定发现可交互节点。脚本输出统一的ElementInfo结构type、selector、text、isInteractive、coordinates、disabled、href、checked供 AI 在点击、填写前感知页面的可操作区域。版本演进中的技术主线与源码索引回顾五个版本可以看到三条贯穿始终的技术主线自动化能力闭环v0.0.1 的工具集 → v0.0.3 的注入脚本通道 → v0.0.5 的交互元素检测优化逐步打通感知页面 → 注入执行 → 捕获反馈的完整闭环模型与性能治理v0.0.1 引入 ONNX/WASM/SIMD 推理 → v0.0.2 的缓存驱动条件初始化与 500MB 上限管理把扩展启动成本从秒级压到亚秒级连接与可观测性v0.0.1 的 Native Messaging → v0.0.4 的 STDIO 代理与chrome_console让外部 AI 既能方便接入又能拿到页面运行的原始观测数据。以下为本文涉及的关键源码与文档路径便于继续深入阅读变更记录docs/CHANGELOG.md架构总览docs/ARCHITECTURE.md中文版 docs/ARCHITECTURE_zh.mdMCP 服务端HTTP 模式 mcp-server.tsstdio 模式 mcp-server-stdio.ts配置 stdio-config.json浏览器工具集background/tools/browser/含screenshot.ts、console.ts、console-buffer.ts、inject-script.ts、interaction.ts等语义引擎与缓存semantic-similarity-engine.ts、model-cache-manager.ts、vector-database.ts、content-indexer.ts图像处理image-utils.ts注入脚本与辅助脚本inject-scripts/含interactive-elements-helper.js、inject-bridge.js等Native Host 与安装排障native-messaging-host.ts、WINDOWS_INSTALL_zh.md、TROUBLESHOOTING_zh.mdMCP 客户端接入docs/mcp-cli-config.md总体而言v0.0.1 → v0.0.5 的演进路径代表了一个成熟的浏览器 MCP 服务端项目的典型成长曲线先以完整功能立足再以性能与健壮性巩固最后以连接多样性、可观测性和检测精度打磨体验。阅读 CHANGELOG.md 时结合上述源码路径逐一对照即可把每条变更记录映射到真实实现获得对该项目最深层的理解。【免费下载链接】mcp-chromeChrome MCP Server is a Chrome extension-based Model Context Protocol (MCP) server that exposes your Chrome browser functionality to AI assistants like Claude, enabling complex browser automation, content analysis, and semantic search.项目地址: https://gitcode.com/gh_mirrors/mc/mcp-chrome创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
软件测试课程总结:3个高频面试必问实战项目复盘 软件测试课程总结:3个高频面试必问实战项目复盘 看了一堆视频还是不会写项目?别慌,我踩过的坑你都会。 面试必问的自动化测试框架,光看理论根本记不住。 这篇软件测试课程总结,直接给你能跑通的代码和避坑指南。 项目目标:从脚本到框架的跃迁… · 2026/9/23 2:41:23
lark-cli 飞书知识库 +node-create 命令实战:自动空间解析的知识库节点创建指南 lark-cli 飞书知识库 node-create 命令实战:自动空间解析的知识库节点创建指南 【免费下载链接】cli The official Lark/飞书 CLI tool, maintained by the larksuite team — built for humans and AI Agents. Covers core business domains including Messenger, … · 2026/9/23 2:41:17
2026最新尺码测量源码解析:面试被问原理答不上来?看这篇 2026最新尺码测量源码解析:面试被问原理答不上来?看这篇 面试官盯着屏幕,问:“尺码测量算法怎么保证精度?”你愣了五秒,只说了句“用模板匹配”。气氛瞬间凝固。这种“面试被问原理答不上来”的窘境,在2026最新的视觉开发岗位中愈发普遍。很多… · 2026/9/23 2:41:11
3秒看懂shell意思:程序员必备速查手册 3秒看懂shell意思:程序员必备速查手册 官方文档翻了三页还没找到重点?别急,很多新手卡在“shell”这个词上,其实它没那么玄乎。 今天这篇 速查手册… · 2026/9/23 4:16:11
6677源码解析:搞懂底层逻辑,面试不再被问懵 6677源码解析:搞懂底层逻辑,面试不再被问懵 面试时被问“这玩意底层怎么实现的”,你脑子是不是瞬间空白?平时只会在框架里调API,真让你扒开源码看细节,立马露馅。别慌,很多老手也是从背八股文开始,但想拿高薪,必须得懂点 源码解析… · 2026/9/23 4:16:05
3招搞定阿拉伯语输入法性能瓶颈,面试必问实战 3招搞定阿拉伯语输入法性能瓶颈,面试必问实战 版本升级后 API 全变了,你的阿拉伯语输入法还卡在 50ms 以上吗? 很多后端开发在面试中被问起国际化文本处理时,往往只停留在“支持 UTF-8”这个层面。… · 2026/9/23 4:16:05
MQTT桥接声光告警终端:Modbus转MQTT接入设计与实现 1. 从一个声光告警终端说起:为什么MQTT桥接是绕不开的坎做过物联网项目的人大概都有过这种体验:现场装了一台声光告警终端,设备本身跑得好好的,但一旦要把它接入到已有的监控平台,麻烦就来了。终端用的是RS485或者串口… · 2026/9/23 4:15:59
3天搭建交换网站:从0到1攻克性能优化实战 3天搭建交换网站:从0到1攻克性能优化实战 刚学完Python语法,面对空白的编辑器是不是脑子一片空白? 你会写 print("Hello")… · 2026/9/23 4:15:59
工业PLC数据采集25种实战方法:Modbus与OPC UA现场选型指南 1. 为什么这25种方法不是“罗列清单”,而是工业现场的生存手册?在工厂车间里,没人关心你用了第几种方法——他们只问三句话:“数据现在能看见吗?”“断电重启后还连得上吗?”“产线停了五分钟,是… · 2026/9/23 4:15:59
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29