SH sensor-humor
MCP Tool

sensor-humor comedy sidekick for LLMs.

Mood-based personality, session-aware callbacks, running gags, roasts, heckles, and catchphrases — with Piper TTS voice integration.

Set mood

mood.set(style: "roast")

Roast

roast(target: "800-line god function")

Speak

voice_speak(mood: "roast") // Piper TTS

Features

Comedy engineering, not joke vending.

6 Moods

Dry, roast, chaotic, cheeky, cynic, zoomer — each with distinct voice, pacing, and personality anchor.

Session Memory

Running gags, recent bits ring buffer, catchphrase persistence. Callbacks to turn-47 bits still land on turn-120.

Voice Prosody

Piper TTS with 4 knobs per mood: length_scale, noise_scale, noise_w_scale, volume. Deadpan sounds flat. Chaotic sounds like a news anchor delivering nonsense.

Deterministic

JSON schema enforcement via Ollama, post-validation, retry on bad output, banned-pattern detection. Comedy with guardrails.

9 Tools

mood.set/get, comic_timing, roast, heckle, catchphrase.generate/callback, debug_status, session_reset — all inherit active mood.

Local-first

Ollama + qwen2.5:7b-instruct for comedy generation. Piper ONNX for voice. No cloud, no API keys, no latency.

Usage

Start Ollama

ollama run qwen2.5:7b-instruct

Start MCP server

SENSOR_HUMOR_DEBUG=true npm start

Set the mood

mood.set(style: "dry")
// -> { mood: "dry", description: "Deadpan, minimalist..." }

Roast some code

roast(target: "global mutable state", context: "code")
// -> { roast: "Verdict: Shared hallucination.", severity: 4 }

Rewrite with timing

comic_timing(text: "Build failed after 47 attempts", technique: "escalation")
// -> { rewrite: "Forty-seven builds. A new personal record." }

Voice it

voice_speak({ text: result.roast, mood: "roast" })
// -> am_eric @ 1.05x, confident sarcastic energy