mcp server
SignalLab
Test the protocols your show, installation or IoT gear speaks: send, capture, emulate and impair OSC, UDP/TCP, HTTP, WebSocket and MQTT — by hand, as repeatable experiments and load tests, or from the
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 20, 2026Signal Lab is a desktop app for Windows and Linux and a server you use from a browser (also as a Docker image). It is built for bringing up shows, installations and networked devices before the rest of the system exists — and for testing the services and APIs they talk to. In one window: an OSC sender and monitor, a UDP/TCP terminal, an HTTP and WebSocket client, an MQTT client and broker, mock servers for the devices and APIs that are not there yet, a network impairment relay, a load tester and a test runner for CI.
What you can do
| Talk to devices | OSC with typed arguments, a monitor and a waveform generator; raw UDP and TCP; HTTP with Basic, Bearer and Digest, cookies and bursts; WebSocket; MQTT 3.1.1 with QoS 0–2, retained messages and a last will; broadcast, multicast and discovery. |
| See every byte | The Inspector captures what Signal Lab sends and receives, decoded and in hex; export it, or save a frame as a signal. |
| Keep a library | Signals in folders, fired from anywhere with Ctrl+K. |
| Fake what is not there | Emulators: HTTP APIs, OSC/UDP responders, TCP devices and an MQTT broker, with rules, templated replies, faults and outages. |
| Break the network on purpose | An impairment relay for UDP and TCP: latency, jitter, loss and bursts of loss, duplication, corruption, reordering, a bandwidth limit, resets, half-open connections and going offline, with presets from a LAN to a satellite link. |
| Push and probe | Storm, a controlled flood of UDP datagrams or TCP connections with the rate, throughput and errors live; the Scanner, a TCP connect scan with the greeting each service sends. |
| Make it repeatable | Experiments: a visual flow of sends, waits, checks, extraction, branches, loops, parallel branches, retries and fault phases, with parameters, profiles and secrets — seeded, reproducible, with a report of every run. |
| Load it | Load profiles on an HTTP request — constant, ramp, steps, spike, random arrivals — with thresholds on p95, errors and rate, and two runs compared. |
| Automate it | signallab, the command line with JUnit reports for CI and a GitHub Action; MCP for AI assistants; an HTTP API for everything the interface does. |
The interface speaks eleven languages: English, Russian, Spanish, French, German, Portuguese, Chinese, Japanese, Korean, Hindi and Arabic. The documentation is complete in eight of them; in Portuguese, Japanese and Arabic most of its pages are still being translated.
Get it
-
Windows —
Signal.Lab_<version>_x64-setup.exe(just for you, or for everyone) or the.msifrom the latest release. The installers are not code-signed yet, so SmartScreen may ask: More info → Run anyway. -
Linux —
.deb,.rpmor.AppImagefrom the same page. -
Server — on a Linux host with Docker: in one command (it offers to install Docker if it is missing), or by hand:
curl -fsSL https://raw.githubusercontent.com/ProAnima/SignalLab/main/deploy/install.sh | shdocker run -d --name signallab --network host --restart unless-stopped \ -v signallab-data:/data --read-only --cap-drop ALL --security-opt no-new-privileges \ ghcr.io/proanima/signallab:latest docker logs signallab # the access token, on the first start -
Command line —
signallabcomes with the Windows installers, the.deband the.rpm(not the AppImage) and is in the server image; archives for CI are on the release page.
The desktop app looks for signed releases once a day and installs one when you say so. Details: installing and updating, running a server.
Documentation
The documentation is online and, from the release after 1.0.0, inside the app and the server, so it works offline: press F1 on any screen.
| Getting started | what it is, installing, the window, a first session, the ideas |
| Protocols | OSC, UDP and TCP, HTTP, WebSocket, MQTT, broadcast and discovery |
| Tools | signals, the Inspector, emulators, impairment, Storm, Scanner |
| Experiments | the editor, every node, data and templates, flow, load, faults, runs |
| Automation | the command line, CI, MCP |
| Server · HTTP API | running it, its security, every command and event |
| Reference | shortcuts, files, troubleshooting, every error message |
Build from source
npm install
npm run tauri dev # the desktop app with live reload
npm run check # the checks CI runs; CI also tours every screen and builds the image
You need Node 22.18 or newer (CI uses 24), Rust as pinned in rust-toolchain.toml
and, on Windows, the MSVC build tools and WebView2 (part of Windows 10 and 11); on
Linux, WebKitGTK 4.1 and the libraries Tauri needs. See
building and running
and the architecture.
Responsible use
Storm, Scanner and Broadcast send real traffic to real hosts, and a broadcast or a
sweep reaches every device on the segment. Point them only at equipment you own or
are authorised to test. Every default unicast target is on loopback — Broadcast's
broadcast, multicast and sweep modes start on the local segment
(255.255.255.255, 239.1.1.1, 192.168.1.0/24); the engine's guard rails — a
sweep of at most 1024 hosts, a beacon of at most 50 000 packets a second — are
guard rails, not permission.
Contributing
Issues, ideas, translations and pull requests are welcome — see CONTRIBUTING.md. Report security problems privately as SECURITY.md describes. Everyone follows the code of conduct.
License
MIT © 2026 ProAnimaStudio — info@proanima.net.