
Research
/Security News
Popular npm Packages in the keyv and Cacheable Namespaces Compromised in Active Supply Chain Attack
Popular npm packages keyv and cacheable compromised.
keepsake-mcp
Advanced tools
MCP server for Keepsake personal CRM — connect your AI agent to your contacts, tasks, notes, and more
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.
Your AI assistant becomes a personal relationship manager. Ask it to:
Sign up at keepsake.place, then go to Account > API Keys to generate one.
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:
https://app.keepsake.place/api/mcpksk_ API keyAny MCP client (Streamable HTTP):
{
"mcpServers": {
"keepsake": {
"type": "streamable-http",
"url": "https://app.keepsake.place/api/mcp",
"headers": {
"Authorization": "Bearer ksk_YOUR_API_KEY"
}
}
}
}
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"
}
}
}
}
| Tool | Description |
|---|---|
list_contacts | List all contacts with pagination and sorting |
get_contact | Get a contact with recent interactions, tags, and stats |
create_contact | Create a new contact |
update_contact | Update contact fields |
delete_contact | Permanently delete a contact |
search_contacts | Accent-insensitive search by name, email, company |
get_contact_timeline | Unified chronological feed of all items for a contact |
| Tool | Description |
|---|---|
list_companies | List all companies |
get_company | Get company with linked contacts and tags |
create_company | Create a new company |
update_company | Update company fields |
delete_company | Soft-delete (or permanent delete) a company |
search_companies | Accent-insensitive company search |
| Tool | Description |
|---|---|
list_entries | List interactions (calls, emails, meetings, etc.) |
create_entry | Log a new interaction — supports #tag# and [[tag]] syntax |
update_entry | Update an interaction |
delete_entry | Delete an interaction |
| Tool | Description |
|---|---|
list_tasks | List tasks with status/date filters |
create_task | Create a task — supports #tag# and [[tag]] syntax |
update_task | Update task fields |
delete_task | Delete a task |
complete_task | Mark as completed (auto-creates next occurrence for recurring tasks) |
uncomplete_task | Mark as pending again |
snooze_task | Reschedule to a new date |
get_tasks_today | Today's tasks: overdue + due today + ASAP |
get_tasks_overdue | Only overdue tasks |
| Tool | Description |
|---|---|
list_notes | List notes (filter by pinned/archived) |
get_note | Get one note by ID with its tags, contacts, tasks and linked notes |
create_note | Create a note — supports #tag# and [[tag]] syntax |
update_note | Update note content |
delete_note | Soft-delete (or permanent) |
pin_note | Pin to top |
archive_note | Archive a note |
restore_note | Restore a deleted/archived note |
| Tool | Description |
|---|---|
list_days | List journal entries by date range |
get_day | Get a specific day's journal |
update_day | Create or update a day's journal (upsert) |
| Tool | Description |
|---|---|
list_tags | List tags (lightweight — ordering arrays omitted), with optional name search (q) |
get_tag | Get a tag by ID with all properties, including tasks_order (section markers h:<header_id>) |
create_tag | Create a new tag |
update_tag | Update a tag (name, description, color, icon, view mode, favorite) |
delete_tag | Permanently delete a tag and all its links |
get_tag_items | Get items linked to a tag — filter by types/status, summary mode, task sections included |
link_tag | Link any entity to a tag |
unlink_tag | Remove a tag link |
| Tool | Description |
|---|---|
list_task_headers | List all task headers (section separators) |
get_task_header | Get a task header by ID |
create_task_header | Create a task header (section) |
update_task_header | Update a task header (name, description, collapsed) |
delete_task_header | Permanently delete a task header |
| Tool | Description |
|---|---|
link_note_contact | Link a contact to a note |
unlink_note_contact | Remove a contact link from a note |
link_entry_contact | Link a contact to an entry |
unlink_entry_contact | Remove a contact link from an entry |
link_task_contact | Link a contact to a task |
unlink_task_contact | Remove a contact link from a task |
link_task_note | Link a note to a task (non-destructive, the note survives) |
unlink_task_note | Remove a note link from a task |
link_notes | Link two notes together (symmetric, non-destructive) |
unlink_notes | Remove the manual link between two notes |
| Tool | Description |
|---|---|
search | Global search across all data types |
get_changelog | Items modified since a timestamp (for sync) |
get_agent_instructions | Best practices for AI agents |
All tools include MCP safety annotations:
list_*, get_*, search_*): marked readOnlyHint: truedestructiveHint: falsedestructiveHint: false, idempotentHint: truedestructiveHint: true, idempotentHint: trueEvery 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.
| Variable | Required | Description |
|---|---|---|
KEEPSAKE_API_KEY | Yes | Your API key (starts with ksk_) |
KEEPSAKE_API_URL | No | Custom API URL (default: https://app.keepsake.place/api/v1) |
60 requests per minute per API key. Rate limit headers are included in responses.
Full REST API docs: keepsake.place/api
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.
MIT
FAQs
MCP server for Keepsake personal CRM — connect your AI agent to your contacts, tasks, notes, and more
We found that keepsake-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Popular npm packages keyv and cacheable compromised.

Security News
A misconfiguration gave three Anthropic models internet access, and one, believing it was in a simulation, shipped a credential-stealing package to PyPI.

Security News
/Company News
Socket has joined the new Composer and Packagist sponsorship program as a launch sponsor, supporting the team that keeps PHP's package ecosystem secure.