Back to MCP Servers

Keepsake

Personal CRM — manage contacts, interactions, tasks, notes, daily journal, and tags through 42 MCP tools

workplace-productivityai
By nicolascroce
02Updated 2 months agoTypeScriptMIT

Installation

npx -y keepsake-mcp

Configuration

{
  "mcpServers": {
    "keepsake-mcp": {
      "command": "npx",
      "args": ["-y", "keepsake-mcp"]
    }
  }
}

How to use

  1. Run the installation command above (if needed)
  2. Open your Claude Code settings file (~/.claude/settings.json)
  3. Add the configuration to the mcpServers section
  4. Restart Claude Code to apply changes

keepsake-mcp

MCP server for Keepsake — the personal CRM that helps you nurture your relationships.

Connect your AI assistant (Claude, Cursor, or any MCP-compatible client) to your Keepsake data: contacts, interactions, tasks, notes, daily journal, companies, and tags.

Why

Your AI assistant becomes a personal relationship manager. Ask it to:

  • "Who did I last talk to at Acme Corp?"
  • "Add a note that I ran into Sarah at the conference"
  • "What tasks are overdue?"
  • "Show me everything related to the #house-project tag"
  • "Create a follow-up task for my meeting with John next week"

Quick start

1. Get your API key

Sign up at keepsake.place, then go to Account > API Keys to generate one.

2. Choose your connection method

Option A: Remote (HTTP) — recommended

No installation required. Works with Claude iOS, Claude web, Claude Desktop Connectors, and any MCP client that supports Streamable HTTP.

Endpoint: https://app.keepsake.place/api/mcp

Authentication: Pass your API key as a Bearer token in the Authorization header.

Claude Desktop (Connectors):

Add a remote MCP server in Claude Desktop settings with:

  • URL: https://app.keepsake.place/api/mcp
  • Authentication: Bearer token with your ksk_ API key

Any MCP client (Streamable HTTP):

{
  "mcpServers": {
    "keepsake": {
      "type": "streamable-http",
      "url": "https://app.keepsake.place/api/mcp",
      "headers": {
        "Authorization": "Bearer ksk_YOUR_API_KEY"
      }
    }
  }
}

Option B: Local (stdio)

Runs locally via npx. Useful for Claude Code, Cursor, and local development.

Claude Desktop:

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "keepsake": {
      "command": "npx",
      "args": ["-y", "keepsake-mcp"],
      "env": {
        "KEEPSAKE_API_KEY": "ksk_YOUR_API_KEY"
      }
    }
  }
}

Claude Code:

claude mcp add keepsake -- npx -y keepsake-mcp

Then set KEEPSAKE_API_KEY in your environment.

Cursor:

Add to .cursor/mcp.json in your project:

{
  "mcpServers": {
    "keepsake": {
      "command": "npx",
      "args": ["-y", "keepsake-mcp"],
      "env": {
        "KEEPSAKE_API_KEY": "ksk_YOUR_API_KEY"
      }
    }
  }
}

Available tools (58)

Contacts

ToolDescription
list_contactsList all contacts with pagination and sorting
get_contactGet a contact with recent interactions, tags, and stats
create_contactCreate a new contact
update_contactUpdate contact fields
delete_contactPermanently delete a contact
search_contactsAccent-insensitive search by name, email, company
get_contact_timelineUnified chronological feed of all items for a contact

Companies

ToolDescription
list_companiesList all companies
get_companyGet company with linked contacts and tags
create_companyCreate a new company
update_companyUpdate company fields
delete_companySoft-delete (or permanent delete) a company
search_companiesAccent-insensitive company search

Entries (Interactions)

ToolDescription
list_entriesList interactions (calls, emails, meetings, etc.)
create_entryLog a new interaction — supports #tag# and [[tag]] syntax
update_entryUpdate an interaction
delete_entryDelete an interaction

Tasks

ToolDescription
list_tasksList tasks with status/date filters
create_taskCreate a task — supports #tag# and [[tag]] syntax
update_taskUpdate task fields
delete_taskDelete a task
complete_taskMark as completed (auto-creates next occurrence for recurring tasks)
uncomplete_taskMark as pending again
snooze_taskReschedule to a new date
get_tasks_todayToday's tasks: overdue + due today + ASAP
get_tasks_overdueOnly overdue tasks

QuickNotes

ToolDescription
list_notesList notes (filter by pinned/archived)
create_noteCreate a note — supports #tag# and [[tag]] syntax
update_noteUpdate note content
delete_noteSoft-delete (or permanent)
pin_notePin to top
archive_noteArchive a note
restore_noteRestore a deleted/archived note

Daily Journal

ToolDescription
list_daysList journal entries by date range
get_dayGet a specific day's journal
update_dayCreate or update a day's journal (upsert)

Tags

ToolDescription
list_tagsList all tags
get_tagGet a tag by ID with all properties (color, icon, view mode, etc.)
create_tagCreate a new tag
update_tagUpdate a tag (name, description, color, icon, view mode, favorite)
delete_tagPermanently delete a tag and all its links
get_tag_itemsGet everything linked to a tag
link_tagLink any entity to a tag
unlink_tagRemove a tag link

Task Headers (Sections)

ToolDescription
list_task_headersList all task headers (section separators)
get_task_headerGet a task header by ID
create_task_headerCreate a task header (section)
update_task_headerUpdate a task header (name, description, collapsed)
delete_task_headerPermanently delete a task header

Contact Links

ToolDescription
link_note_contactLink a contact to a note
unlink_note_contactRemove a contact link from a note
link_entry_contactLink a contact to an entry
unlink_entry_contactRemove a contact link from an entry
link_task_contactLink a contact to a task
unlink_task_contactRemove a contact link from a task

Utilities

ToolDescription
searchGlobal search across all data types
get_changelogItems modified since a timestamp (for sync)
get_agent_instructionsBest practices for AI agents

Tool annotations

All tools include MCP safety annotations:

  • Read-only tools (list_*, get_*, search_*): marked readOnlyHint: true
  • Create tools: marked destructiveHint: false
  • Update tools: marked destructiveHint: false, idempotentHint: true
  • Delete tools: marked destructiveHint: true, idempotentHint: true

Activity tracking

Every write operation (create, update, delete) performed through the API is recorded in an Activity Feed visible to the user inside Keepsake. Each action shows the entity type, a content preview, and which API key was used.

This means your user can see everything you do. Be transparent and precise. If you make a mistake, let the user know so they can verify in the activity feed.

Call get_agent_instructions at the start of each session for the full best practices guide.

Environment variables

VariableRequiredDescription
KEEPSAKE_API_KEYYesYour API key (starts with ksk_)
KEEPSAKE_API_URLNoCustom API URL (default: https://app.keepsake.place/api/v1)

Rate limits

60 requests per minute per API key. Rate limit headers are included in responses.

API documentation

Full REST API docs: keepsake.place/api

Privacy

Keepsake MCP server only communicates with the Keepsake API (app.keepsake.place). It does not send data to any third-party service. Your data stays between your MCP client and your Keepsake account.

All API calls are authenticated with your personal API key and scoped to your account via Row Level Security. No other user's data is accessible.

See our privacy policy at keepsake.place/privacy.

License

MIT

View source on GitHub