wasm4pm 26.6.12

High-performance process mining algorithms in WebAssembly for JavaScript/TypeScript
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
# Model Context Protocol (MCP) Integration for wasm4pm

Exposes wasm4pm as an MCP server, enabling Claude and other MCP clients to use process mining capabilities.

## What is MCP?

**Model Context Protocol** is a standard for communication between AI models (like Claude) and tools/services. It allows Claude to:

- Discover available tools dynamically
- Execute tools with proper input validation
- Receive structured results
- Handle errors gracefully

## MCP Server for wasm4pm

The wasm4pm MCP server exposes 14 discovery algorithms, analysis functions, and visualization capabilities as MCP tools.

### Available MCP Tools

#### Discovery Algorithms

- `discover_dfg` - Directly-Follows Graph (fastest)
- `discover_alpha_plus_plus` - Petri Net discovery
- `discover_ilp_optimization` - Integer Linear Programming
- `discover_genetic_algorithm` - Evolutionary algorithm
- `discover_variants` - Find unique trace variants

#### Analysis Tools

- `check_conformance` - Verify log against model
- `analyze_statistics` - Log statistics and metrics
- `detect_bottlenecks` - Find slow activities
- `detect_concept_drift` - Detect process changes

#### Visualization Tools

- `generate_mermaid_diagram` - Generate Mermaid process diagram
- `generate_html_report` - Create comprehensive HTML report

#### Utilities

- `compare_algorithms` - Benchmark multiple algorithms

## Installation

### Prerequisites

```bash
npm install @modelcontextprotocol/sdk
npm install @wasm4pm/cli
```

### Setup

#### 1. Create MCP Server File

```typescript
// mcp_server.ts (already provided)
import Wasm4pmMCPServer from './mcp_server';

const server = new Wasm4pmMCPServer();
await server.start();
```

#### 2. Configure Claude to Use MCP

Add to your Claude configuration (e.g., in `.claude.json` or Claude desktop config):

```json
{
  "mcpServers": {
    "wasm4pm": {
      "command": "node",
      "args": ["dist/mcp_server.js"],
      "cwd": "./path/to/wasm4pm"
    }
  }
}
```

#### 3. Build and Start

```bash
npm run build
npm run start:mcp
```

## Usage Examples

### Example 1: Process Discovery via Claude

```
User: "Analyze this event log and discover the most likely process model"
Claude uses: discover_dfg tool
Result: Returns DFG model with activities and edges
```

### Example 2: Conformance Analysis

```
User: "Check if these events conform to the discovered model"
Claude uses: check_conformance tool
Result: Returns fitness, precision, and deviations
```

### Example 3: Bottleneck Detection

```
User: "Find performance bottlenecks in the process"
Claude uses: detect_bottlenecks tool
Result: Returns slow activities with timing details
```

### Example 4: Model Comparison

```
User: "Compare DFG and Genetic Algorithm on this log"
Claude uses: compare_algorithms tool
Result: Returns metrics for both algorithms
```

## Tool Specifications

### discover_dfg

```
Input:
  - xes_content (string, required): XES event log content
  - min_frequency (number, optional): Minimum edge frequency (0-1)

Output:
  - nodes: Array of activities in the model
  - edges: Connections between activities with frequencies
  - metrics: Quality metrics (nodes, edges, density)
```

Example:

```javascript
const result = await mcp.call('discover_dfg', {
  xes_content: xesFileContent,
  min_frequency: 0.05,
});
```

### discover_genetic_algorithm

```
Input:
  - xes_content (string, required): XES event log content
  - population_size (number, optional): Population size. Default: 50
  - generations (number, optional): Number of generations. Default: 100

Output:
  - model: Discovered process model
  - fitness: Model quality (0-1)
  - evolution: Fitness progression over generations
```

### check_conformance

```
Input:
  - xes_content (string, required): Event log
  - model_json (string, required): Process model as JSON
  - include_deviations (boolean, optional): Include deviation details

Output:
  - fitness: Trace replay fitness (0-1)
  - precision: Model specificity (0-1)
  - generalization: Model flexibility (0-1)
  - simplicity: Model simplicity (0-1)
  - deviations: Non-conforming traces (if included)
```

### analyze_statistics

```
Input:
  - xes_content (string, required): Event log

Output:
  - traceCount: Number of cases
  - eventCount: Total events
  - activities: Unique activities
  - duration: Case duration statistics
  - startTime, endTime: Time range
  - averageCaseDuration: Mean duration
```

### detect_bottlenecks

```
Input:
  - xes_content (string, required): Event log
  - threshold (number, optional): Percentile threshold. Default: 0.75

Output:
  - activities: Slow activities with timing details
    - name: Activity name
    - avgDuration: Average execution time
    - p95Duration: 95th percentile
    - frequency: How often activity occurs
```

### detect_concept_drift

```
Input:
  - xes_content (string, required): Event log
  - window_size (number, optional): Window size. Default: 100

Output:
  - driftDetected: Boolean indicating if drift found
  - changePoint: Event index where change occurs
  - beforeMetrics: Metrics before change
  - afterMetrics: Metrics after change
  - confidence: Confidence of detection (0-1)
```

### generate_mermaid_diagram

```
Input:
  - model_json (string, required): Process model

Output:
  - mermaid_code: Mermaid diagram code
            Paste at https://mermaid.live to visualize
```

### generate_html_report

```
Input:
  - xes_content (string, required): Event log
  - model_json (string, required): Process model

Output:
  - html_content: Complete HTML report
             Save to file and open in browser
```

### compare_algorithms

```
Input:
  - xes_content (string, required): Event log
  - algorithms (array, optional): Algorithms to compare
              Default: ['dfg', 'alpha_plus_plus', 'genetic']

Output:
  - results: Object with algorithm metrics
    - time_ms: Execution time
    - fitness: Model fitness
    - precision: Model precision
    - generalization: Model generalization
```

## Integration with Claude Desktop

### macOS Configuration

Edit `~/.config/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "wasm4pm": {
      "command": "/usr/local/bin/node",
      "args": ["/path/to/wasm4pm/dist/mcp_server.js"]
    }
  }
}
```

Restart Claude Desktop for changes to take effect.

### Windows Configuration

Edit `%APPDATA%\Claude\claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "wasm4pm": {
      "command": "node",
      "args": ["C:\\path\\to\\wasm4pm\\dist\\mcp_server.js"]
    }
  }
}
```

## Building the MCP Server

```bash
cd wasm4pm

# Install MCP SDK
npm install @modelcontextprotocol/sdk

# Build TypeScript
npm run build

# Start MCP server
npm run start:mcp
```

## Debugging

### Enable Verbose Logging

```bash
DEBUG=* npm run start:mcp
```

### Test with MCP Inspector

```bash
npm install -g @modelcontextprotocol/inspector
mcp-inspector node dist/mcp_server.js
```

This opens a web interface where you can:

- See available tools
- Test tool calls
- View request/response JSON
- Debug communication

## Performance

MCP tool execution time (measured on wasm4pm operations):

| Operation                                                 | Time      | Notes                 |
| --------------------------------------------------------- | --------- | --------------------- |
| discover_dfg (100 events)                                 | 0.5ms     | Fastest               |
| analyze_statistics (1000 events)                          | 1-2ms     | Quick analysis        |
| discover_alpha_plus_plus (1000 events)                    | 50ms      | Balanced              |
| discover_genetic_algorithm (1000 events, 100 generations) | 400ms     | High quality          |
| check_conformance (10k events)                            | 100-200ms | Depends on model size |

## Limitations

- XES format limited to standard features (timestamps, strings, integers)
- Large logs (100k+ events) may need chunking
- Some algorithms have timeouts to prevent excessive computation
- WASM memory is single-threaded

## Troubleshooting

### Tool not found in Claude

1. Restart Claude Desktop
2. Check configuration file syntax (valid JSON)
3. Verify server is running: `npm run start:mcp`
4. Check error logs in Claude

### "Module not found" error

```bash
# Ensure dependencies installed
npm install

# Rebuild
npm run build

# Check that dist/mcp_server.js exists
ls -la dist/
```

### Timeout errors

Reduce algorithm complexity:

```javascript
{
  algorithm: 'discover_genetic_algorithm',
  arguments: {
    xes_content: log,
    generations: 50  // Reduce from default 100
  }
}
```

## Example: Using wasm4pm MCP from Claude

```
Human: I have an event log (BPI_2019.xes). Can you:
1. Discover a process model
2. Analyze its quality
3. Find bottlenecks
4. Generate a visualization

Claude uses:
1. discover_dfg(xes_content) → DFG model
2. check_conformance(xes_content, model) → Quality metrics
3. detect_bottlenecks(xes_content) → Slow activities
4. generate_mermaid_diagram(model) → Visualization code

Result: Complete process analysis with model diagram
```

## Contributing

To add more MCP tools:

1. Add tool definition in `getAvailableTools()`
2. Implement tool handler in `executeTool()`
3. Add tests in `mcp_server.test.ts`
4. Update this documentation

## References

- [MCP Protocol Specification]https://spec.modelcontextprotocol.io/
- [MCP TypeScript SDK]https://github.com/modelcontextprotocol/typescript-sdk
- [Claude Integration Guide]https://claude.ai/docs
- [wasm4pm Documentation]./README.md