I switch between projects a lot, and the most expensive part of starting a session is trying to remember what I was doing. Did I already try X two weeks ago? When did we decide on the Postgres migration approach? Who was on the last Slack thread about that auth bug? My laptop already had the answers, they were just scattered across Git history, the GitHub web UI, Jira, a Slack search box, and one Confluence doc I couldn't find without three guesses.
I had been keeping a side project that consolidated all of that into one local SQLite file. It's a small Go binary called DevRecall that pulls activity from Git, GitHub, Jira, Linear, Confluence, Slack and Google Calendar, runs it through FTS5 and on-device embeddings, and gives me a CLI I can ask "when did I touch the JWT refresh code?" without opening five tabs.
It worked. The CLI and the desktop app got used regularly, the standup and recall queries pulled real signal. Then I added an MCP server, and the tool stopped being something I invoke and started being something Claude Code invokes for me.
The shift
MCP is JSON-RPC over stdio. A coding agent (Claude Code, Cursor, Codex CLI, Continue, Zed) launches your server as a subprocess, sends initialize, then tools/list, then calls your tools as the user works. Stderr is yours, stdout is the protocol. That's basically the whole story for stdio servers.






