keepsake-mcp
MCP server for Keepsake personal CRM that enables AI assistants to manage contacts, interactions, tasks, notes, daily journal, companies, and tags.
README
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
| 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 |
Companies
| 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 |
Entries (Interactions)
| 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 |
Tasks
| 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 |
QuickNotes
| Tool | Description |
|---|---|
list_notes |
List notes (filter by pinned/archived) |
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 |
Daily Journal
| 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) |
Tags
| Tool | Description |
|---|---|
list_tags |
List all tags |
get_tag |
Get a tag by ID with all properties (color, icon, view mode, etc.) |
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 everything linked to a tag |
link_tag |
Link any entity to a tag |
unlink_tag |
Remove a tag link |
Task Headers (Sections)
| 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 |
Contact Links
| 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 |
Utilities
| 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 |
Tool annotations
All tools include MCP safety annotations:
- Read-only tools (
list_*,get_*,search_*): markedreadOnlyHint: 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
| 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) |
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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。