Command Palette

Search for a command to run...

UnylyUnyly
Browse all

River

FreeNot checked

MCP server for physics-based spatial task scheduling with 6 tools for task placement, movement, and planning via stdio and HTTP/SSE.

GitHubEmbed

About

MCP server for physics-based spatial task scheduling with 6 tools for task placement, movement, and planning via stdio and HTTP/SSE.

README

Physics-based spatial task scheduling MCP server + Canvas viewer.

Time is a river, not a grid. Tasks are organic blobs that drift in a current — big ones take up space, committed ones are vivid, maybes are wisps. An MCP server exposes six tools so Claude (or any MCP client) can arrange the river by conversation; a vanilla-JS Canvas viewer at localhost:7433 renders everything live via SSE.

What Makes It Different

  • Organic blobs, not boxes. Duration is horizontal span, commitment is opacity, energy is color temperature. You see the shape of your day.
  • Warm palette only. Earth tones, watercolors, amber. No red, no alerts, no spreadsheet feel.
  • No guilt. No "overdue," no task counts, no productivity language. Tasks that drift past now silently recirculate to the cloud.
  • Commitment is a 0–1 gradient. A wisp at 0.1 is barely a thought; crystalline at 0.9 is locked in. There's no binary "scheduled / not scheduled" to break.
  • Plan mode. Lock a time window, explore alternative arrangements in five swim lanes, commit one — overwriting only that window.

Quick Start

pnpm install
pnpm dev

Open http://localhost:7433 to see the viewer. The dev command runs the MCP server over stdio and the HTTP/SSE server side by side.

MCP Registration

Build once, then register the compiled entry point with Claude Code:

pnpm build
claude mcp add --scope user river -- node /Users/josh/river/dist/index.js

MCP Tools

Six tools are exposed to the client:

  • put — create or update tasks (name, duration, position, commitment, energy, tags); single or batch.
  • move — reposition in time; absolute, relative shift, or batch. position: null sends a task back to the cloud.
  • look — read the current river, cloud, breathing room, known tags, and plan state.
  • branch — fork the timeline, diff against main, commit or discard.
  • sweep — bulk-modify tasks matching a filter (shift, set, remove).
  • plan — enter plan mode with a locked window, fill lanes with alternatives, commit one.

Key Features

  • Tag system — persistent tags, colored swatches, click to filter, double-click label to rename, + button to create. See docs/README.md.
  • Multi-select — shift-click to build a selection, group drag/resize, batch edits from the panel.
  • Plan mode v2 — window-locked, lane 1 is a read-only snapshot, lanes 2–5 editable, commit is window-scoped. See docs/plan-mode-v2.md.
  • Drag wizard — dragging a cloud task across the surface sweeps it through duration → commitment → energy zones before it settles into the river. See docs/INTERACTIONS.md.
  • Persistent positionscloud_x/cloud_y and river_y are stored, so the cloud and vertical lane stay put across reloads.
  • Back to cloud — tasks that drift past now recirculate silently unless the per-task toggle is off.

Documentation

Tech Stack

TypeScript, @modelcontextprotocol/sdk, better-sqlite3, Zod. Vanilla HTML Canvas 2D viewer — no framework, no build step for the viewer. Built with tsup, developed with tsx, tested with vitest. pnpm as package manager.

Notes

River is local-only. It runs on your machine, writes SQLite to ~/.river/river.db, and is not deployed anywhere. There is no account, no sync, no server to call home to.

from github.com/hegstadjosh/river

Installing River

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/hegstadjosh/river

FAQ

Is River MCP free?

Yes, River MCP is free — one-click install via Unyly at no cost.

Does River need an API key?

No, River runs without API keys or environment variables.

Is River hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install River in Claude Desktop, Claude Code or Cursor?

Open River on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare River with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All productivity MCPs