Skip to content

MCP (Claude Code, Cursor, Codex, …)

DevRecall ships an MCP server out of the box — devrecall mcp. Any MCP-compatible coding tool (Claude Code, Cursor, Codex CLI, Continue, Zed, …) can spawn it and gain memory of everything you’ve shipped: commits, PRs, Jira tickets, Confluence docs, Slack threads, manual notes — all searchable and citeable from inside the editor.

15 tools, including: keyword + semantic search across activities, date-filtered timelines, get-by-id, ticket-key joins across sources, person filters, decisions surfacing, meeting prep, and a write tool for capturing notes.

3 resources (URI-addressed views):

  • standup://YYYY-MM-DD — all activity from a day
  • activity://<id> — full row by ID
  • timeline://<period> — period grammar matches the devrecall timeline CLI

3 prompts the user invokes as slash commands:

  • devrecall-recall <query> — search + cite-the-source
  • devrecall-context [days] — inject a recent-activity brief
  • devrecall-log <text> — capture a note via log_event

Local-only. The server reads ~/.devrecall/devrecall.db directly and never opens a network listener.

Terminal window
brew install --cask pavelpilyak/devrecall/devrecall

The cask installs both the GUI and the CLI. Confirm the binary is on your PATH:

Terminal window
which devrecall # → /opt/homebrew/bin/devrecall (Apple Silicon) or /usr/local/bin/devrecall
devrecall mcp --help

The desktop app doesn’t need to be running — the MCP server is a separate subprocess each editor spawns.

The cleanest install is via the first-party plugin, which also adds slash commands:

Terminal window
/plugin marketplace add pavelpilyak/devrecall-claude-plugin
/plugin install devrecall@devrecall

Then /mcp shows the server connected and /devrecall:recall <query> returns search results. Source for the plugin lives at github.com/pavelpilyak/devrecall-claude-plugin.

The plugin ships two optional hooks that are enabled but dormant — each stays off until you set its environment variable, so installing the plugin changes nothing until you opt in. Add the exports to your shell profile and restart Claude Code:

Terminal window
export DEVRECALL_SESSION_CONTEXT=1 # inject a 7-day brief at session start
export DEVRECALL_AUTOLOG=1 # log what changed (and why) at session end

DEVRECALL_AUTOLOG captures the thing Git can’t: why. When a session ends, if it actually modified files, a detached one-shot claude -p reads the transcript, writes a 2–4 sentence note about the decisions, tradeoffs, and dead-ends, and records it with devrecall log (tagged session). Read-only and Q&A sessions are skipped, so the index stays high-signal. The notes are first-class activities — they surface later through /devrecall:recall and search like commits and tickets.

The note is written by a separate headless Claude run (--bare, locked to Read and the devrecall log CLI), so it can’t re-trigger the hook or touch anything else. It needs jq and the claude CLI on your PATH, and spends a small amount of tokens per logged session — which is why it’s opt-in.

If you’d rather skip the plugin and wire the MCP server only, add to ~/.claude.json:

{
"mcpServers": {
"devrecall": {
"command": "devrecall",
"args": ["mcp"]
}
}
}

Add to ~/.cursor/mcp.json (create if missing):

{
"mcpServers": {
"devrecall": {
"command": "devrecall",
"args": ["mcp"]
}
}
}

Restart Cursor. The 15 tools become available to chat/agent automatically.

Codex reads MCP servers from ~/.codex/config.toml:

[mcp_servers.devrecall]
command = "devrecall"
args = ["mcp"]

Add under the mcpServers key in ~/.continue/config.json:

{
"mcpServers": [
{
"name": "devrecall",
"command": "devrecall",
"args": ["mcp"]
}
]
}

In Zed’s settings.json:

{
"context_servers": {
"devrecall": {
"command": {
"path": "devrecall",
"args": ["mcp"]
}
}
}
}

Tell the client to run:

Terminal window
devrecall mcp

No flags, no config files. Transport is newline-delimited JSON-RPC 2.0 on stdio; stderr is reserved for logs and never pollutes the protocol stream.

“unknown command mcp” — your installed devrecall predates v0.1.15. brew upgrade devrecall and restart the client.

Server connects but tools return empty — the index might be sparse for that source. Run:

Terminal window
sqlite3 ~/.devrecall/devrecall.db "SELECT source, COUNT(*) FROM activities GROUP BY source;"

Backfill older history with devrecall backfill --since 90d if a source only has the last 7 days.

Stuck stale results after a sync — the MCP server reads SQLite live, so fresh syncs are visible immediately. If you’re not seeing them, restart the client to force the server to re-spawn (some clients cache tool descriptors aggressively).

MCP server crashes silently — run devrecall mcp in a terminal and paste JSON-RPC frames manually to reproduce. Logs print to stderr.

  • No remote access. Stdio only, no listener, no auth model needed.
  • No writes other than log_event. The agent can capture notes but can’t delete activities, change tokens, or modify settings.
  • No streaming responses. Tool results land as a single text block.