Skip to main content
Glama

Chrome MCP Server

ARCHITECTURE_zh.md10.5 kB
# Chrome MCP Server 架构设计 🏗️ 本文档提供 Chrome MCP Server 架构、设计决策和实现细节的详细技术概述。 ## 📋 目录 - [概述](#概述) - [系统架构](#系统架构) - [组件详情](#组件详情) - [数据流](#数据流) - [AI 集成](#ai-集成) - [性能优化](#性能优化) - [安全考虑](#安全考虑) ## 🎯 概述 Chrome MCP Server 是一个复杂的浏览器自动化平台,通过模型上下文协议 (MCP) 将 AI 助手与 Chrome 浏览器功能连接起来。架构设计目标: - **高性能**:SIMD 优化的 AI 操作和高效的原生消息传递 - **可扩展性**:模块化工具系统,便于添加新功能 - **可靠性**:强大的错误处理和优雅降级 - **安全性**:沙盒执行和基于权限的访问控制 ## 🏗️ 系统架构 ```mermaid graph TB subgraph "AI 助手层" A[Claude Desktop] B[自定义 MCP 客户端] C[其他 AI 工具] end subgraph "MCP 协议层" D[HTTP/SSE 传输] E[MCP 服务器实例] F[工具注册表] end subgraph "原生服务器层" G[Fastify HTTP 服务器] H[原生消息主机] I[会话管理] end subgraph "Chrome 扩展层" J[后台脚本] K[内容脚本] L[弹窗界面] M[离屏文档] end subgraph "浏览器 APIs 层" N[Chrome APIs] O[Web APIs] P[原生消息] end subgraph "AI 处理层" Q[语义引擎] R[向量数据库] S[SIMD 数学引擎] T[Web Workers] end A --> D B --> D C --> D D --> E E --> F F --> G G --> H H --> P P --> J J --> K J --> L J --> M J --> N J --> O J --> Q Q --> R Q --> S Q --> T ``` ## 🔧 组件详情 ### 1. 原生服务器 (`app/native-server/`) **目的**:MCP 协议实现和原生消息桥接 **核心组件**: - **Fastify HTTP 服务器**:处理基于 HTTP/SSE 的 MCP 协议 - **原生消息主机**:与 Chrome 扩展通信 - **会话管理**:管理多个 MCP 客户端会话 - **工具注册表**:将工具调用路由到 Chrome 扩展 **技术栈**: - TypeScript + Fastify - MCP SDK (@modelcontextprotocol/sdk) - 原生消息协议 ### 2. Chrome 扩展 (`app/chrome-extension/`) **目的**:浏览器自动化和 AI 驱动的内容分析 **核心组件**: - **后台脚本**:主要协调器和工具执行器 - **内容脚本**:页面交互和内容提取 - **弹窗界面**:用户配置和状态显示 - **离屏文档**:在隔离环境中进行 AI 模型处理 **技术栈**: - WXT 框架 + Vue 3 - Chrome 扩展 APIs - WebAssembly + SIMD - Transformers.js ### 3. 共享包 (`packages/`) #### 3.1 共享类型 (`packages/shared/`) - 工具模式和类型定义 - 通用接口和工具 - MCP 协议类型 #### 3.2 WASM SIMD (`packages/wasm-simd/`) - 基于 Rust 的 SIMD 优化数学函数 - 使用 Emscripten 编译 WebAssembly - 向量运算性能提升 4-8 倍 ## 🔄 数据流 ### 工具执行流程 ``` ┌─────────────┐ ┌──────────────┐ ┌─────────────────┐ ┌──────────────┐ │ AI 助手 │ │ 原生服务器 │ │ Chrome 扩展 │ │ 浏览器 APIs │ └─────┬───────┘ └──────┬───────┘ └─────────┬───────┘ └──────┬───────┘ │ │ │ │ │ 1. 工具调用 │ │ │ ├──────────────────►│ │ │ │ │ 2. 原生消息 │ │ │ ├─────────────────────►│ │ │ │ │ 3. 执行工具 │ │ │ ├──────────────────►│ │ │ │ 4. API 响应 │ │ │ │◄──────────────────┤ │ │ 5. 工具结果 │ │ │ │◄─────────────────────┤ │ │ 6. MCP 响应 │ │ │ │◄──────────────────┤ │ │ ``` ### AI 处理流程 ``` ┌─────────────┐ ┌──────────────┐ ┌─────────────────┐ ┌──────────────┐ │ 内容提取 │ │ 文本分块器 │ │ 语义引擎 │ │ 向量数据库 │ └─────┬───────┘ └──────┬───────┘ └─────────┬───────┘ └──────┬───────┘ │ │ │ │ │ 1. 原始内容 │ │ │ ├──────────────────►│ │ │ │ │ 2. 文本块 │ │ │ ├─────────────────────►│ │ │ │ │ 3. 嵌入向量 │ │ │ ├──────────────────►│ │ │ │ │ │ │ 4. 搜索查询 │ │ │ ├─────────────────────►│ │ │ │ │ 5. 查询向量 │ │ │ ├──────────────────►│ │ │ │ 6. 相似文档 │ │ │ │◄──────────────────┤ │ │ 7. 搜索结果 │ │ │ │◄─────────────────────┤ │ ``` ## 🧠 AI 集成 ### 语义相似度引擎 **架构**: - **模型支持**:BGE-small-en-v1.5、E5-small-v2、Universal Sentence Encoder - **执行环境**:Web Workers 用于非阻塞处理 - **优化**:向量运算的 SIMD 加速 - **缓存**:嵌入和分词的 LRU 缓存 **性能优化**: ```typescript // SIMD 加速的余弦相似度 const similarity = await simdMath.cosineSimilarity(vecA, vecB); // 批处理提高效率 const similarities = await simdMath.batchSimilarity(vectors, query, dimension); // 内存高效的矩阵运算 const matrix = await simdMath.similarityMatrix(vectorsA, vectorsB, dimension); ``` ### 向量数据库 (hnswlib-wasm) **特性**: - **算法**:分层导航小世界 (HNSW) - **实现**:WebAssembly 实现接近原生性能 - **持久化**:IndexedDB 存储,自动清理 - **可扩展性**:高效处理 10,000+ 文档 **配置**: ```typescript const config: VectorDatabaseConfig = { dimension: 384, // 模型嵌入维度 maxElements: 10000, // 最大文档数 efConstruction: 200, // 构建时精度 M: 16, // 连接参数 efSearch: 100, // 搜索时精度 enableAutoCleanup: true, // 自动清理旧数据 maxRetentionDays: 30, // 数据保留期 }; ``` ## ⚡ 性能优化 ### 1. SIMD 加速 **Rust 实现**: ```rust use wide::f32x4; fn cosine_similarity_simd(&self, vec_a: &[f32], vec_b: &[f32]) -> f32 { let len = vec_a.len(); let simd_lanes = 4; let simd_len = len - (len % simd_lanes); let mut dot_sum_simd = f32x4::ZERO; let mut norm_a_sum_simd = f32x4::ZERO; let mut norm_b_sum_simd = f32x4::ZERO; for i in (0..simd_len).step_by(simd_lanes) { let a_chunk = f32x4::new(vec_a[i..i+4].try_into().unwrap()); let b_chunk = f32x4::new(vec_b[i..i+4].try_into().unwrap()); dot_sum_simd = a_chunk.mul_add(b_chunk, dot_sum_simd); norm_a_sum_simd = a_chunk.mul_add(a_chunk, norm_a_sum_simd); norm_b_sum_simd = b_chunk.mul_add(b_chunk, norm_b_sum_simd); } // 计算最终相似度 let dot_product = dot_sum_simd.reduce_add(); let norm_a = norm_a_sum_simd.reduce_add().sqrt(); let norm_b = norm_b_sum_simd.reduce_add().sqrt(); dot_product / (norm_a * norm_b) } ``` ### 2. 内存管理 **策略**: - **对象池**:重用 Float32Array 缓冲区 - **延迟加载**:按需加载 AI 模型 - **缓存管理**:嵌入的 LRU 淘汰 - **垃圾回收**:显式清理大对象 ### 3. 并发处理 **Web Workers**: - **AI 处理**:模型推理的独立 worker - **内容索引**:后台标签页内容索引 - **网络捕获**:并行请求处理 ## 🔧 扩展点 ### 添加新工具 1. **定义模式** 在 `packages/shared/src/tools.ts` 2. **实现工具** 继承 `BaseBrowserToolExecutor` 3. **注册工具** 在工具索引中 4. **添加测试** 用于功能测试 ### 自定义 AI 模型 1. **模型集成** 在 `SemanticSimilarityEngine` 2. **Worker 支持** 用于处理 3. **配置** 在模型预设中 4. **性能测试** 使用基准测试 ### 协议扩展 1. **MCP 扩展** 用于自定义功能 2. **传输层** 用于不同通信方法 3. **身份验证** 用于安全连接 4. **监控** 用于性能指标 此架构使 Chrome MCP Server 能够在保持安全性和可扩展性的同时,提供高性能的浏览器自动化和先进的 AI 功能。

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marie6789040106650/mcp-chrome-bk'

If you have feedback or need assistance with the MCP directory API, please join our Discord server