LabscoMCP early access ↗
jdanielndMCP SERVER

CRM CLI

A local-first personal CRM in a single Go binary — people, orgs, interactions, deals and tasks in SQLite — with a built-in MCP server so an assistant can read and update it.

by jdanielnd ↗CRM & Sales PipelineCommunity

LABSCO SUMMARY

The contact summary is designed to be maintained by the agent, and that is the interesting bit.

Rather than treating the CRM as a form to fill in, the summary field is a dossier the assistant reads before a meeting and rewrites afterwards with new facts and preferences — which is the one piece of CRM hygiene humans reliably skip. Pasting AGENT.md into your project instructions is what makes that behaviour consistent; without it the agent will use the tools but not the habit.

What it is

A terminal CRM that ships an MCP server inside the same binary. Contacts, organisations, interaction logs, deals and tasks live in a local SQLite database with full-text search; the CLI is for you and the MCP tools are for an agent, both against the same data. No cloud, no account — the database is a file on your machine.

What you get

  • People searched by name, email, tag or organisation, read in full, created, updated, archived and linked to each other — crm_person_search, crm_person_get, crm_person_create, crm_person_update, crm_person_delete, crm_person_relate
  • Organisations searched and read with their members — crm_org_search, crm_org_get
  • Calls, emails, meetings and notes logged against a person and listed back — crm_interaction_log, crm_interaction_list
  • Full-text search across every entity at once, and a complete briefing for one person — crm_search, crm_context
  • Deals created and moved through stages, tasks created and listed, tags applied, and summary statistics — crm_deal_create, crm_deal_update, crm_task_create, crm_task_list, crm_tag_apply, crm_stats
  • A summary field on each contact that acts as a living dossier — read before meetings, updated after interactions
  • The same data from the terminal with table, JSON, CSV and TSV output, Unix exit codes (0 success, 1 error, 2 usage, 3 not found, 4 conflict, 10 database error), and composition with tools like jq and fzf
  • Relationship types between people: colleague, friend, manager, mentor, referred-by

Requirements

Nothing — no account, no key, no cloud. Install with brew install jdanielnd/tap/crm, go install github.com/jdanielnd/crm-cli/cmd/crm@latest, or a binary from GitHub Releases. Register the MCP server with claude mcp add crm -- crm mcp serve, or point a client at the full binary path with the mcp serve arguments — which crm gives you the path, since Homebrew's location differs between Apple Silicon and Intel. The database lives at ~/.crm/crm.db by default; --db or CRM_DB moves it, including into iCloud Drive for cross-machine backup, though the README warns against writing from two machines at once even with SQLite WAL mode. Building from source needs Go 1.23+ and no CGO. The repository's AGENT.md is meant to be pasted into your project or Claude project instructions — it teaches the assistant when to log interactions and how to maintain contact summaries.

Setup effort

One command — brew install jdanielnd/tap/crm