Reasoning about switchMap against mergeMap on paper is where RxJS bugs come from; running the snippet and reading the emissions with their timestamps settles it in one call. Pair that with the leak check, which is built around recognising the current cleanup idioms so it does not cry wolf on correct Angular or React code. The marble diagram is the part to hand to another person — it turns a timing argument into something you can look at.
A workbench for RxJS streams. Code is executed in an isolated worker and the emissions come back with timings, while the other tools read the same code statically for operator choices, subscription handling and lint rules.
- RxJS code run in a separate worker thread, returning what the stream emitted, when, and what it cost — with a timeout, an emission cap, and optional timeline and memory capture
- ASCII marble diagrams generated from timed events, with scale, duration and value display under your control
- Operator chain analysis over creation functions and operators, flagging performance patterns and offering alternatives
- Memory-leak detection that understands the modern cleanup patterns — takeUntilDestroyed, the async pipe, useEffect cleanup, onUnmounted — so idiomatic code is not reported as a leak
- Production patterns for the recurring problems: HTTP retry, debounced typeahead, polling with backoff, reconnecting WebSocket, form validation, state store, cache refresh
- Linting based on the eslint-plugin-rxjs-x rules with no ESLint runtime needed — recommended covers the common issues, strict adds the style rules, and the framework setting turns on Angular, React or Vue specific checks
Nothing to authorize; it runs over stdio as npx @shuji-bonji/rxjs-mcp, or installed globally. Execution happens locally in a worker thread on your machine, bounded by the timeout and emission count you pass. The execute call takes either an expression that evaluates to an Observable or a snippet ending in one — an explicit return always works. The lint tool is regex-based best-effort analysis rather than a real ESLint run. It is a community project, not affiliated with the RxJS team. MIT.
One command — npx @shuji-bonji/rxjs-mcp
