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.
What the agent gets
Section titled “What the agent gets”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 dayactivity://<id>— full row by IDtimeline://<period>— period grammar matches thedevrecall timelineCLI
3 prompts the user invokes as slash commands:
devrecall-recall <query>— search + cite-the-sourcedevrecall-context [days]— inject a recent-activity briefdevrecall-log <text>— capture a note vialog_event
Local-only. The server reads ~/.devrecall/devrecall.db directly and never
opens a network listener.
Prerequisites
Section titled “Prerequisites”brew install --cask pavelpilyak/devrecall/devrecallThe cask installs both the GUI and the CLI. Confirm the binary is on your PATH:
which devrecall # → /opt/homebrew/bin/devrecall (Apple Silicon) or /usr/local/bin/devrecalldevrecall mcp --helpThe desktop app doesn’t need to be running — the MCP server is a separate subprocess each editor spawns.
Claude Code
Section titled “Claude Code”The cleanest install is via the first-party plugin, which also adds slash commands:
/plugin marketplace add pavelpilyak/devrecall-claude-plugin/plugin install devrecall@devrecallThen /mcp shows the server connected and /devrecall:recall <query>
returns search results. Source for the plugin lives at
github.com/pavelpilyak/devrecall-claude-plugin.
If you’d rather skip the plugin and wire the MCP server only, add to
~/.claude.json:
{ "mcpServers": { "devrecall": { "command": "devrecall", "args": ["mcp"] } }}Cursor
Section titled “Cursor”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 CLI
Section titled “Codex CLI”Codex reads MCP servers from ~/.codex/config.toml:
[mcp_servers.devrecall]command = "devrecall"args = ["mcp"]Continue
Section titled “Continue”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"] } } }}Any other stdio MCP client
Section titled “Any other stdio MCP client”Tell the client to run:
devrecall mcpNo 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.
Troubleshooting
Section titled “Troubleshooting”“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:
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.
What it doesn’t do
Section titled “What it doesn’t do”- 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.