About Crm
Crm is an MCP server published by harperreed in the Productivity category: personal CRM with MCP server, TUI, web UI, and Google sync for contacts/calendar/email.
The repository has 28 stars and 1 forks, with the last commit 25 days ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/harperreed/crmThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (14)
add_companyAdd a new company to the CRM
Parameters not published.
add_contactAdd a new contact to the CRM
Parameters not published.
delete_companyDelete a company by ID
Parameters not published.
delete_contactDelete a contact by ID
Parameters not published.
get_companyGet a company by ID (full UUID or prefix)
Parameters not published.
get_contactGet a contact by ID (full UUID or prefix)
Parameters not published.
get_history_eventGet a full history event by ID
Parameters not published.
linkCreate a relationship between two entities
Parameters not published.
list_companiesList companies with optional filtering
Parameters not published.
list_contactsList contacts with optional filtering
Parameters not published.
Show all 14 tools
list_historyList change history for a CRM entity
Parameters not published.
unlinkDelete a relationship by ID
Parameters not published.
update_companyUpdate an existing company's fields
Parameters not published.
update_contactUpdate an existing contact's fields
Parameters not published.
Ask AI
Ask AI about Crm
Powered by Claude
Security checks
Static checks derived from the repository 18 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- !License declaredNo license file. Legally you have no right to use it in a product.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
Releases
README
CRM
CRM is a small local-first relationship manager for contacts, companies, and the links between them. Humans use its command-line interface; agents use the same data through its MCP server.
Install
With Homebrew:
brew install harperreed/tap/crm
With Go 1.25.5 or newer:
go install github.com/harperreed/crm/v2/cmd/crm@latest
For a development checkout:
git clone https://github.com/harperreed/crm.git
cd crm
make install
Tagged go install builds and GoReleaser builds report their release version. Local checkout builds report dev.
Check the installed build with either public version entry point:
crm --version
crm version
Use the CLI
Add and inspect a contact:
crm contact add "Jane Doe" \
--email jane@example.com \
--phone +1-555-0123 \
--tag engineering \
--field title="VP Engineering"
crm contact list --tag engineering
crm contact show <contact-id-or-prefix>
Add a company and connect it to the contact:
crm company add "Acme Corp" --domain acme.com --tag customer
crm link <contact-id-or-prefix> <company-id-or-prefix> \
--type works_at \
--context "VP Engineering"
Contacts and companies support add, list, show, edit, and rm. List commands accept --tag, --search, and --limit. IDs shown by the CLI may be shortened to a unique prefix of at least six characters.
Inspect an entity's timeline, then show one event's full before and after snapshots:
crm history <entity-id-or-prefix>
crm history show <event-id-or-prefix>
crm history lists up to 20 events by default; pass --limit to change the count. Contact and company timelines include link and unlink events involving that entity. Each event records whether the change came from the CLI (cli) or MCP (mcp).
History starts with changes made after upgrading; CRM does not create baseline events for existing records. Events are immutable and kept indefinitely. Deleting a contact, company, or relationship removes the current record but keeps its historical snapshots, including any personal data they contain.
Run crm help to browse commands. Add --help to the exact command you plan to run, such as crm contact add --help, for its full flags and usage.
Configure storage
CRM uses SQLite by default. With no overrides, it stores the database at:
~/.local/share/crm/crm.db
$XDG_DATA_HOME/crm/crm.db takes precedence when XDG_DATA_HOME is set.
Configuration is optional. CRM reads JSON from $XDG_CONFIG_HOME/crm/config.json, or ~/.config/crm/config.json when XDG_CONFIG_HOME is unset:
{
"backend": "markdown",
"data_dir": "~/.local/share/crm"
}
backend accepts sqlite or markdown. data_dir overrides the normal XDG data directory. The Markdown backend writes contacts and companies as Markdown files with YAML frontmatter and stores links in _relationships.yaml.
Connect an MCP client
Start the stdio server with:
crm mcp
For project-scoped Claude Code setup, save this configuration as .mcp.json in the project root:
{
"mcpServers": {
"crm": {
"command": "crm",
"args": ["mcp"]
}
}
}
The server exposes 14 tools for contact and company CRUD, linking and unlinking, and read-only history. Use list_history for an entity timeline and get_history_event for a full event. It also exposes contact and company resource templates and three prompts for contact creation, relationship mapping, and cross-entity search.
Install the bundled Claude Code skill with:
Warning: this command overwrites an existing ~/.claude/skills/crm/SKILL.md without a backup.
crm install-skill
This writes the skill to ~/.claude/skills/crm/SKILL.md.
Develop
make build # Build ./crm
make test # Run unit and integration tests
make test-race # Run tests with the race detector
make lint # Run golangci-lint
make check # Format, lint, and test
goreleaser check currently exits non-zero only because the accepted Homebrew formula configuration uses the deprecated brews field.
The project uses Go 1.25.5. SQLite uses the pure-Go modernc.org/sqlite driver, so release builds do not require CGO.
README fetched from the repository 18 days ago. The original is authoritative.