ARCHITECTURE.mdβ’11.2 kB
# Chrome MCP Server Architecture ποΈ
This document provides a detailed technical overview of the Chrome MCP Server architecture, design decisions, and implementation details.
## π Table of Contents
- [Overview](#overview)
- [System Architecture](#system-architecture)
- [Component Details](#component-details)
- [Data Flow](#data-flow)
- [AI Integration](#ai-integration)
- [Performance Optimizations](#performance-optimizations)
- [Security Considerations](#security-considerations)
## π― Overview
Chrome MCP Server is a sophisticated browser automation platform that bridges AI assistants with Chrome browser capabilities through the Model Context Protocol (MCP). The architecture is designed for:
- **High Performance**: SIMD-optimized AI operations and efficient native messaging
- **Extensibility**: Modular tool system for easy feature additions
- **Reliability**: Robust error handling and graceful degradation
- **Security**: Sandboxed execution and permission-based access control
## ποΈ System Architecture
```mermaid
graph TB
subgraph "AI Assistant Layer"
A[Claude Desktop]
B[Custom MCP Client]
C[Other AI Tools]
end
subgraph "MCP Protocol Layer"
D[HTTP/SSE Transport]
E[MCP Server Instance]
F[Tool Registry]
end
subgraph "Native Server Layer"
G[Fastify HTTP Server]
H[Native Messaging Host]
I[Session Management]
end
subgraph "Chrome Extension Layer"
J[Background Script]
K[Content Scripts]
L[Popup Interface]
M[Offscreen Documents]
end
subgraph "Browser APIs Layer"
N[Chrome APIs]
O[Web APIs]
P[Native Messaging]
end
subgraph "AI Processing Layer"
Q[Semantic Engine]
R[Vector Database]
S[SIMD Math Engine]
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
```
## π§ Component Details
### 1. Native Server (`app/native-server/`)
**Purpose**: MCP protocol implementation and native messaging bridge
**Key Components**:
- **Fastify HTTP Server**: Handles MCP protocol over HTTP/SSE
- **Native Messaging Host**: Communicates with Chrome extension
- **Session Management**: Manages multiple MCP client sessions
- **Tool Registry**: Routes tool calls to Chrome extension
**Technologies**:
- TypeScript + Fastify
- MCP SDK (@modelcontextprotocol/sdk)
- Native messaging protocol
### 2. Chrome Extension (`app/chrome-extension/`)
**Purpose**: Browser automation and AI-powered content analysis
**Key Components**:
- **Background Script**: Main orchestrator and tool executor
- **Content Scripts**: Page interaction and content extraction
- **Popup Interface**: User configuration and status display
- **Offscreen Documents**: AI model processing in isolated context
**Technologies**:
- WXT Framework + Vue 3
- Chrome Extension APIs
- WebAssembly + SIMD
- Transformers.js
### 3. Shared Packages (`packages/`)
#### 3.1 Shared Types (`packages/shared/`)
- Tool schemas and type definitions
- Common interfaces and utilities
- MCP protocol types
#### 3.2 WASM SIMD (`packages/wasm-simd/`)
- Rust-based SIMD-optimized math functions
- WebAssembly compilation with Emscripten
- 4-8x performance improvement for vector operations
## π Data Flow
### Tool Execution Flow
```
βββββββββββββββ ββββββββββββββββ βββββββββββββββββββ ββββββββββββββββ
β AI Assistantβ β Native Serverβ β Chrome Extensionβ β Browser APIs β
βββββββ¬ββββββββ ββββββββ¬ββββββββ βββββββββββ¬ββββββββ ββββββββ¬ββββββββ
β β β β
β 1. Tool Call β β β
ββββββββββββββββββββΊβ β β
β β 2. Native Message β β
β βββββββββββββββββββββββΊβ β
β β β 3. Execute Tool β
β β ββββββββββββββββββββΊβ
β β β 4. API Response β
β β βββββββββββββββββββββ€
β β 5. Tool Result β β
β ββββββββββββββββββββββββ€ β
β 6. MCP Response β β β
βββββββββββββββββββββ€ β β
```
### AI Processing Flow
```
βββββββββββββββ ββββββββββββββββ βββββββββββββββββββ ββββββββββββββββ
β Content β β Text Chunker β β Semantic Engine β β Vector DB β
β Extraction β β β β β β β
βββββββ¬ββββββββ ββββββββ¬ββββββββ βββββββββββ¬ββββββββ ββββββββ¬ββββββββ
β β β β
β 1. Raw Content β β β
ββββββββββββββββββββΊβ β β
β β 2. Text Chunks β β
β βββββββββββββββββββββββΊβ β
β β β 3. Embeddings β
β β ββββββββββββββββββββΊβ
β β β β
β β 4. Search Query β β
β βββββββββββββββββββββββΊβ β
β β β 5. Query Vector β
β β ββββββββββββββββββββΊβ
β β β 6. Similar Docs β
β β βββββββββββββββββββββ€
β β 7. Search Results β β
β ββββββββββββββββββββββββ€ β
```
## π§ AI Integration
### Semantic Similarity Engine
**Architecture**:
- **Model Support**: BGE-small-en-v1.5, E5-small-v2, Universal Sentence Encoder
- **Execution Context**: Web Workers for non-blocking processing
- **Optimization**: SIMD acceleration for vector operations
- **Caching**: LRU cache for embeddings and tokenization
**Performance Optimizations**:
```typescript
// SIMD-accelerated cosine similarity
const similarity = await simdMath.cosineSimilarity(vecA, vecB);
// Batch processing for efficiency
const similarities = await simdMath.batchSimilarity(vectors, query, dimension);
// Memory-efficient matrix operations
const matrix = await simdMath.similarityMatrix(vectorsA, vectorsB, dimension);
```
### Vector Database (hnswlib-wasm)
**Features**:
- **Algorithm**: Hierarchical Navigable Small World (HNSW)
- **Implementation**: WebAssembly for near-native performance
- **Persistence**: IndexedDB storage with automatic cleanup
- **Scalability**: Handles 10,000+ documents efficiently
**Configuration**:
```typescript
const config: VectorDatabaseConfig = {
dimension: 384, // Model embedding dimension
maxElements: 10000, // Maximum documents
efConstruction: 200, // Build-time accuracy
M: 16, // Connectivity parameter
efSearch: 100, // Search-time accuracy
enableAutoCleanup: true, // Automatic old data removal
maxRetentionDays: 30, // Data retention period
};
```
## β‘ Performance Optimizations
### 1. SIMD Acceleration
**Rust Implementation**:
```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);
}
// Calculate final similarity
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. Memory Management
**Strategies**:
- **Object Pooling**: Reuse Float32Array buffers
- **Lazy Loading**: Load AI models on-demand
- **Cache Management**: LRU eviction for embeddings
- **Garbage Collection**: Explicit cleanup of large objects
### 3. Concurrent Processing
**Web Workers**:
- **AI Processing**: Separate worker for model inference
- **Content Indexing**: Background indexing of tab content
- **Network Capture**: Parallel request processing
## π§ Extension Points
### Adding New Tools
1. **Define Schema** in `packages/shared/src/tools.ts`
2. **Implement Tool** extending `BaseBrowserToolExecutor`
3. **Register Tool** in tool index
4. **Add Tests** for functionality
### Custom AI Models
1. **Model Integration** in `SemanticSimilarityEngine`
2. **Worker Support** for processing
3. **Configuration** in model presets
4. **Performance Testing** with benchmarks
### Protocol Extensions
1. **MCP Extensions** for custom capabilities
2. **Transport Layers** for different communication methods
3. **Authentication** for secure connections
4. **Monitoring** for performance metrics
This architecture enables Chrome MCP Server to deliver high-performance browser automation with advanced AI capabilities while maintaining security and extensibility.