# Math MCP Server - Data Flow Guide
Documentation of data flow patterns, request lifecycle, and processing pipelines in the Math MCP Server.
## Table of Contents
1. [Request Lifecycle](#request-lifecycle)
2. [Tool Request Flow](#tool-request-flow)
3. [Acceleration Routing Flow](#acceleration-routing-flow)
4. [Worker Task Flow](#worker-task-flow)
5. [Parallel Processing Flow](#parallel-processing-flow)
6. [Error Flow](#error-flow)
7. [Caching Flow](#caching-flow)
8. [Metrics Flow](#metrics-flow)
---
## Request Lifecycle
Complete lifecycle of an MCP request from client to response:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β REQUEST LIFECYCLE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MCP Client Math MCP Server
β
β 1. Tool Call Request (stdio)
β ββββββββββββββββββββββββββββββΆ
β ββββββββββββββββββββββββ
β β 2. Rate Limit Check β
β ββββββββββββ¬ββββββββββββ
β β
β ββββββββββββββββββ΄βββββββββββββββββ
β βΌ βΌ
β ALLOWED REJECTED
β β β
β βΌ β
β ββββββββββββββββββββ β
β β 3. Parse Request β β
β ββββββββββ¬ββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββ β
β β 4. Validate Inputβ β
β ββββββββββ¬ββββββββββ β
β β β
β ββββββββββββββββ΄βββββββββββββββ β
β βΌ βΌ β
β VALID INVALID β
β β β β
β βΌ β β
β ββββββββββββββββββββ β β
β β 5. Route to Tier β β β
β ββββββββββ¬ββββββββββ β β
β β β β
β βΌ β β
β ββββββββββββββββββββ β β
β β 6. Execute β β β
β β Operation β β β
β ββββββββββ¬ββββββββββ β β
β β β β
β βΌ β β
β ββββββββββββββββββββ β β
β β 7. Format Result β β β
β ββββββββββ¬ββββββββββ β β
β β β β
β ββββββββββββββββ¬βββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββ β
β β 8. MCP Response ββββββββββββββββββββββββββ
β ββββββββββ¬ββββββββββ
β β
β 9. Tool Response (stdio) β
β βββββββββββββββββββββββββββ
β
```
### Lifecycle Stages
| Stage | Component | Action |
|-------|-----------|--------|
| 1 | MCP SDK | Receive tool call over stdio |
| 2 | rate-limiter.ts | Check token bucket, concurrent limits |
| 3 | index-wasm.ts | Parse tool name and arguments |
| 4 | validation.ts | Validate input types, sizes, content |
| 5 | acceleration-router.ts | Select optimal execution tier |
| 6 | wasm-wrapper.ts / workers | Execute mathematical operation |
| 7 | tool-handlers.ts | Format result for MCP response |
| 8 | MCP SDK | Send response over stdio |
---
## Tool Request Flow
Detailed flow for each tool type:
### Expression Tools (evaluate, simplify, derivative, solve)
```
Request: evaluate("x^2 + 2*x", {x: 3})
β
βΌ
ββββββββββββββββββββ
β validateExpressionβ
β validateScope β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Check Expression β
β Cache β
ββββββββββ¬ββββββββββ
β
βββββββββββ΄ββββββββββ
βΌ βΌ
CACHE HIT CACHE MISS
β β
β βΌ
β ββββββββββββββββββββ
β β Parse & Compile β
β β Expression β
β ββββββββββ¬ββββββββββ
β β
β βΌ
β ββββββββββββββββββββ
β β Sandbox Check β
β β (AST Whitelist) β
β ββββββββββ¬ββββββββββ
β β
βββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β mathjs.evaluate β
β with scope β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Format Result β
β { result: 15 } β
ββββββββββββββββββββ
```
### Matrix Operations Flow
```
Request: matrix_operations("multiply", matrixA, matrixB)
β
βΌ
ββββββββββββββββββββ
β Parse JSON β
β matrices β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β validateMatrix β
β validateSize β
β validateCompat β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Check Size for β
β Tier Selection β
ββββββββββ¬ββββββββββ
β
βββββββββββββββΌββββββββββββββ¬ββββββββββββββ
βΌ βΌ βΌ βΌ
< 10x10 10-100x100 100-500x500 > 500x500
β β β β
βΌ βΌ βΌ βΌ
mathjs WASM Workers (GPU)
β β β β
βββββββββββββββ΄ββββββββββββββ΄ββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Format Result β
β { result: [[]] } β
ββββββββββββββββββββ
```
### Statistics Flow
```
Request: statistics("mean", [1, 2, 3, ..., 100000])
β
βΌ
ββββββββββββββββββββ
β Parse JSON array β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β validateArray β
β validateLength β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Check Size for β
β Tier Selection β
ββββββββββ¬ββββββββββ
β
βββββββββββββββΌββββββββββββββ
βΌ βΌ βΌ
< 100 100-100K > 100K
β β β
βΌ βΌ βΌ
mathjs WASM Workers
β β β
βββββββββββββββ΄ββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Format Result β
β { result: 50000 }β
ββββββββββββββββββββ
```
---
## Acceleration Routing Flow
How the acceleration router selects the optimal tier:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ACCELERATION ROUTING β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Operation Request
β
βΌ
ββββββββββββββββββββ
β Calculate Input β
β Size (elements) β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ ββββββββββββββββββββ
β Check GPU Tier ββββββΆβ GPU Enabled? β
ββββββββββ¬ββββββββββ β Size >= 500? β
β β GPU Available? β
β ββββββββββ¬ββββββββββ
β β
β ββββββββββ΄βββββββββ
β βΌ βΌ
β YES NO
β β β
β βΌ β
β ββββββββββββββ β
β β Try GPU β β
β ββββββββ¬ββββββ β
β β β
β ββββββββ΄βββββββ β
β βΌ βΌ β
β SUCCESS FAIL β
β β β β
β β βββββββββββΌβββββββ
β β β β
βΌ β βΌ β
ββββββββββββββββββββ ββββββββββββββββββββ β
β Check Workers ββββββΆβ Workers Enabled? β β
β Tier β β Size >= 100? β β
ββββββββββ¬ββββββββββ β Pool Ready? β β
β ββββββββββ¬ββββββββββ β
β β β
β ββββββββββ΄βββββββββ β
β βΌ βΌ β
β YES NO β
β β β β
β βΌ β β
β ββββββββββββββ β β
β βTry Workers β β β
β ββββββββ¬ββββββ β β
β β β β
β ββββββββ΄βββββββ β β
β βΌ βΌ β β
β SUCCESS FAIL β β
β β β β β
β β βββββββββββΌββββ€
β β β β
βΌ β βΌ β
ββββββββββββββββββββ ββββββββββββββββββββ β
β Check WASM ββββββΆβ WASM Enabled? β β
β Tier β β Size >= thresholdβ β
ββββββββββ¬ββββββββββ β WASM Ready? β β
β ββββββββββ¬ββββββββββ β
β β β
β ββββββββββ΄βββββββββ β
β βΌ βΌ β
β YES NO β
β β β β
β βΌ β β
β ββββββββββββββ β β
β β Try WASM β β β
β ββββββββ¬ββββββ β β
β β β β
β ββββββββ΄βββββββ β β
β βΌ βΌ β β
β SUCCESS FAIL β β
β β β β β
β β βββββββββββΌββ€
β β β β
βΌ β βΌ βΌ
ββββββββββββββββββββ ββββββββββββββββββββ
β mathjs Fallback βββββββ Always Available β
ββββββββββ¬ββββββββββ ββββββββββββββββββββ
β
βΌ
Return Result
with Tier Used
```
### Routing Statistics
```typescript
interface RoutingStats {
mathjsUsage: number; // Small data operations
wasmUsage: number; // Medium data operations
workersUsage: number; // Large data operations
gpuUsage: number; // Massive data operations
}
```
---
## Worker Task Flow
How tasks flow through the worker infrastructure:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β WORKER TASK FLOW β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Operation Request
β
βΌ
ββββββββββββββββββββ
β Create Task β
β {id, operation, β
β data, priority} β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Enqueue Task ββββββββββββββββ
ββββββββββ¬ββββββββββ β
β β
βΌ βΌ
ββββββββββββββββββββ ββββββββββββββββββββ
β Queue Full? βββββΆβ Apply Backpressureβ
ββββββββββ¬ββββββββββ β (REJECT/WAIT/SHED)β
βNO ββββββββββββββββββββ
βΌ
ββββββββββββββββββββ
β Insert by β
β Priority Order β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Schedule to β
β Idle Worker β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ ββββββββββββββββββββ
β Worker receives ββββββΆβ Load WASM module β
β task via message β β (if not loaded) β
ββββββββββ¬ββββββββββ ββββββββββ¬ββββββββββ
β β
ββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Execute Operationβ
β (matrix/stats) β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Send Result β
β Back to Main β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Complete Task β
β Resolve Promise β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Worker β IDLE β
β Schedule Next β
ββββββββββββββββββββ
```
### Task States
```
βββββββββββββββ
enqueue() β β
ββββββββββββββββββΆ β PENDING β
β β
ββββββββ¬βββββββ
β scheduleNext()
βΌ
βββββββββββββββ
β β
β ACTIVE β
β β
ββββββββ¬βββββββ
β
ββββββββββββββββββΌβββββββββββββββββ
βΌ βΌ βΌ
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β COMPLETED β β FAILED β β TIMED OUT β
βββββββββββββββ βββββββββββββββ βββββββββββββββ
```
---
## Parallel Processing Flow
How data is distributed and merged across workers:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PARALLEL MATRIX MULTIPLY β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Input: Matrix A (1000x1000) Γ Matrix B (1000x1000)
β
βΌ
ββββββββββββββββββββ
β Determine Chunks β
β = min(workers, β
β rows/minSize) β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Chunk Matrix A β
β by rows β
ββββββββββ¬ββββββββββ
β
βββββββββββββββΌββββββββββββββ¬ββββββββββββββ
βΌ βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ ββββββββββ
βChunk 0 β βChunk 1 β βChunk 2 β βChunk 3 β
βRows β βRows β βRows β βRows β
β0-249 β β250-499 β β500-749 β β750-999 β
βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ
β β β β
βΌ βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ ββββββββββ
βWorker 0β βWorker 1β βWorker 2β βWorker 3β
β β β β β β β β
βchunk Γ β βchunk Γ β βchunk Γ β βchunk Γ β
βfull B β βfull B β βfull B β βfull B β
βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ
β β β β
βΌ βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ ββββββββββ
βResult β βResult β βResult β βResult β
βRows β βRows β βRows β βRows β
β0-249 β β250-499 β β500-749 β β750-999 β
βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ
β β β β
βββββββββββββββ΄ββββββββββββββ΄ββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Merge Results β
β Concatenate rowsβ
ββββββββββ¬ββββββββββ
β
βΌ
Result: 1000x1000 matrix
```
### Parallel Statistics Flow
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PARALLEL MEAN CALCULATION β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Input: Array of 1,000,000 elements
β
βΌ
ββββββββββββββββββββ
β Chunk Array β
β into N parts β
ββββββββββ¬ββββββββββ
β
βββββββββββββββΌββββββββββββββ¬ββββββββββββββ
βΌ βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ ββββββββββ
βChunk 0 β βChunk 1 β βChunk 2 β βChunk 3 β
βElementsβ βElementsβ βElementsβ βElementsβ
β0-249K β β250K- β β500K- β β750K- β
β β β499K β β749K β β999K β
βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ
β β β β
βΌ βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ ββββββββββ
βWorker 0β βWorker 1β βWorker 2β βWorker 3β
β β β β β β β β
βsum: β βsum: β βsum: β βsum: β
β12.5M β β12.6M β β12.4M β β12.5M β
βcount: β βcount: β βcount: β βcount: β
β250K β β250K β β250K β β250K β
βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ βββββ¬βββββ
β β β β
βββββββββββββββ΄ββββββββββββββ΄ββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Merge Results β
β total_sum / β
β total_count β
ββββββββββ¬ββββββββββ
β
βΌ
Result: mean = 50.0
```
---
## Error Flow
How errors propagate through the system:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ERROR FLOW β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Error Occurs
β
βΌ
ββββββββββββββββββ
β Classify Error β
βββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ¬βββββββββ¬βββββββββ¬βββββββββ
βΌ βΌ βΌ βΌ βΌ βΌ
Validation WASM Timeout Rate Back- Worker
Error Error Error Limit pressure Error
β β β β β β
βΌ βΌ βΌ βΌ βΌ βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Error Handling β
β β
β β’ Log error with context β
β β’ Record metrics (error type, operation) β
β β’ Determine if recoverable β
β β
βββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ
β
βββββββββββββββββ΄ββββββββββββββββ
βΌ βΌ
RECOVERABLE NON-RECOVERABLE
β β
βΌ βΌ
ββββββββββββββββββββ ββββββββββββββββββββ
β Fallback Action β β Return Error β
β β’ Tier downgrade β β Response β
β β’ Retry β β β
β β’ Default value β β {isError: true, β
ββββββββββ¬ββββββββββ β content: [...]} β
β ββββββββββββββββββββ
βΌ
Continue with
fallback result
```
### Error Response Format
```typescript
// MCP Error Response
{
content: [
{
type: "text",
text: "ValidationError: Matrix size 2000x2000 exceeds maximum of 1000x1000"
}
],
isError: true
}
```
---
## Caching Flow
Expression cache hit/miss flow:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CACHING FLOW β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Expression Request: "x^2 + 2*x + 1"
β
βΌ
ββββββββββββββββββββ
β Generate Cache β
β Key (expr+scope) β
ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β Lookup in LRU β
β Cache β
ββββββββββ¬ββββββββββ
β
ββββββββββ΄βββββββββ
βΌ βΌ
CACHE HIT CACHE MISS
β β
βΌ βΌ
ββββββββββββββββββββ ββββββββββββββββββββ
β Update lastUsed β β Parse Expression β
β Return compiled β β Compile to AST β
ββββββββββ¬ββββββββββ ββββββββββ¬ββββββββββ
β β
β βΌ
β ββββββββββββββββββββ
β β Store in Cache β
β β (evict LRU if β
β β at capacity) β
β ββββββββββ¬ββββββββββ
β β
ββββββββββββ¬βββββββββββ
β
βΌ
ββββββββββββββββββββ
β Evaluate with β
β scope variables β
ββββββββββ¬ββββββββββ
β
βΌ
Return Result
```
### Cache Statistics
```typescript
interface CacheStats {
size: number; // Current entries
maxSize: number; // Capacity (1000)
hits: number; // Cache hits
misses: number; // Cache misses
hitRate: number; // hits / (hits + misses)
}
```
---
## Metrics Flow
How metrics are collected and exposed:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β METRICS FLOW β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Operation Execution
β
ββββββββββββββββββββββββββββββββββββββββββββ
β β
βΌ βΌ
ββββββββββββββββββββ ββββββββββββββββββββ
β Record Duration β β Record Counter β
β (Histogram) β β (success/error) β
ββββββββββ¬ββββββββββ ββββββββββ¬ββββββββββ
β β
βββββββββββββββββ¬ββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Prometheus β
β Registry β
β β
β β’ Histograms β
β β’ Counters β
β β’ Gauges β
ββββββββββ¬ββββββββββ
β
βββββββββββββββ΄ββββββββββββββ
βΌ βΌ
ββββββββββββββββββββ ββββββββββββββββββββ
β GET /metrics β β GET /metrics/jsonβ
β (Prometheus fmt) β β (JSON format) β
ββββββββββββββββββββ ββββββββββββββββββββ
Periodic Updates:
ββββββββββββββββββββ ββββββββββββββββββββ
β Worker Pool ββββββΆβ Update worker β
β Stats β β gauges β
ββββββββββββββββββββ ββββββββββββββββββββ
ββββββββββββββββββββ ββββββββββββββββββββ
β Queue Stats ββββββΆβ Update queue β
β β β gauges β
ββββββββββββββββββββ ββββββββββββββββββββ
ββββββββββββββββββββ ββββββββββββββββββββ
β Cache Stats ββββββΆβ Update cache β
β β β gauges β
ββββββββββββββββββββ ββββββββββββββββββββ
```
---
## Related Documentation
- [ARCHITECTURE.md](ARCHITECTURE.md) - System architecture
- [COMPONENTS.md](COMPONENTS.md) - Component reference
- [OVERVIEW.md](OVERVIEW.md) - Project overview
- [USER_GUIDE.md](USER_GUIDE.md) - User guide