apps/mcp/README.md
This is the Karakeep MCP server, which is a server that can be used to interact with Karakeep from other tools.
Bookmarks
search-bookmarks)get-bookmark, get-bookmark-content)get-bookmark-lists)create-bookmark)update-bookmark)delete-bookmark)Lists
get-lists)get-list)create-list)update-list) — name, icon, description, parentId, query, public; field constraints (length caps, smart-query validation) are inherited from the shared schemadelete-list) — child lists are NOT deleted with the parent; they become root-level listsget-list-bookmarks)add-bookmark-to-list, remove-bookmark-from-list)Tags
get-tags)get-tag)update-tag)delete-tag) — bookmarks that had the tag are not deletedget-tag-bookmarks)attach-tag-to-bookmark, detach-tag-from-bookmark)Assets
get-asset)Highlights
list-highlights)get-bookmark-highlights)get-highlight)create-highlight, update-highlight, delete-highlight)Currently, the MCP server only exposes tools (no resources).
From NPM:
{
"mcpServers": {
"karakeep": {
"command": "npx",
"args": [
"@karakeep/mcp"
],
"env": {
"KARAKEEP_API_ADDR": "https://<YOUR_SERVER_ADDR>",
"KARAKEEP_API_KEY": "<YOUR_TOKEN>",
"KARAKEEP_CUSTOM_HEADERS": "{\"CF-Access-Client-Id\": \"...\", \"CF-Access-Client-Secret\": \"...\"}"
}
}
}
}
From Docker:
{
"mcpServers": {
"karakeep": {
"command": "docker",
"args": [
"run",
"-e",
"KARAKEEP_API_ADDR=https://<YOUR_SERVER_ADDR>",
"-e",
"KARAKEEP_API_KEY=<YOUR_TOKEN>",
"-e",
"KARAKEEP_CUSTOM_HEADERS={\"CF-Access-Client-Id\": \"...\", \"CF-Access-Client-Secret\": \"...\"}",
"ghcr.io/karakeep-app/karakeep-mcp:latest"
]
}
}
}