Labsco
MCP SERVER

Wormhole

by fatmali

A shared work log across Claude Code, Copilot and Cursor — every edit, command and decision recorded, with stale file edits filtered out automatically.

Agent Memory
Summary
It refuses to hand back an edit that no longer exists.

That is the feature that separates this from a log file. An agent reading a shared history is at risk of acting on a change someone else has since replaced; validating each file edit against the current file at retrieval time removes that class of error rather than documenting it. The token discipline is visible too — delta queries by cursor, three detail levels, and compact output — because a shared log is worthless if reading it costs the context you were trying to save.

What it is

A memory layer for the case where more than one agent is working on the same project — parallel subagents, or you switching between Claude, Copilot and Cursor mid-task. One universal `log` tool records every action type, sessions keep work isolated, and conflict detection tells you when two agents touched the same files. Its distinguishing behaviour is stale-event rejection: a logged file edit is validated against the current file state on retrieval, so an agent never acts on a change that has since been overwritten.

What you get
  • One tool for every action type, tagged and searchable — `cmd_run`, `file_edit`, `decision`, `test_result`, `feedback`, `todos`, `plan_output` — `log`
  • Recent events pulled back with the detail level you want (`minimal`, `normal`, `full`), filtered by file path, action type or tag, and with `since_cursor` for delta queries so you only fetch what is new — `get_recent`
  • The tag vocabulary in use, with event counts — `get_tags`
  • Durable learnings stored as decision, pitfall, convention or constraint, and retrieved by intent-aware search — `save_knowledge`, `search_project_knowledge`
  • A check for whether another agent has touched the files you are about to edit — `check_conflicts`
  • Named sessions started and ended with a summary — `start_session`, `end_session`
  • Cleanup scoped to a project, a session or everything — `cleanup`
  • Stale file edits filtered on the way out: an edit logged with a `diff` is validated against the current file, and the `diff` field is deliberately not truncated so validation stays accurate on large changes
  • A local web UI over sessions, timeline and insights — `npx wormhole ui`
Requirements

No account and no key. `npx wormhole-mcp` runs it with nothing installed; a global `npm install -g wormhole-mcp` or a source build are the alternatives. For Claude Code the config goes in `~/.claude/claude_code_config.json`, for GitHub Copilot in `.vscode/mcp.json` — the same server, two client files, which is the point. Claude Code users can install a bundled plugin that ships the server config together with a skill, or copy the standalone skill into `.claude/skills/`. The project describes itself as early-stage with APIs that may change.

Setup effort

One command — npx wormhole-mcp