Skip to main content
Glama
karakeep-app

Karakeep MCP server

by karakeep-app
README.md
# Karakeep MCP Server

This is the Karakeep MCP server, which is a server that can be used to interact
with Karakeep from other tools.

## Supported Tools

**Bookmarks**
- Searching bookmarks (`search-bookmarks`)
- Reading a bookmark (`get-bookmark`, `get-bookmark-content`)
- Listing the lists that contain a bookmark (`get-bookmark-lists`)
- Creating text and URL bookmarks (`create-bookmark`)
- Updating a bookmark (`update-bookmark`)
- Deleting a bookmark (`delete-bookmark`)

**Lists**
- Listing all lists (`get-lists`)
- Retrieving a single list (`get-list`)
- Creating a list (`create-list`)
- Updating a list (`update-list`) — name, icon, description, parentId, query, public; field constraints (length caps, smart-query validation) are inherited from the shared schema
- Deleting a list (`delete-list`) — child lists are NOT deleted with the parent; they become root-level lists
- Listing bookmarks in manual and smart lists (`get-list-bookmarks`)
- Adding and removing bookmarks from lists (`add-bookmark-to-list`, `remove-bookmark-from-list`)

**Tags**
- Listing tags with filters / pagination (`get-tags`)
- Retrieving a single tag with usage counts (`get-tag`)
- Renaming a tag (`update-tag`)
- Deleting a tag (`delete-tag`) — bookmarks that had the tag are not deleted
- Listing the bookmarks attached to a tag (`get-tag-bookmarks`)
- Attaching and detaching tags on bookmarks (`attach-tag-to-bookmark`, `detach-tag-from-bookmark`)

**Assets**
- Getting a temporary signed download URL for an asset (`get-asset`)

**Highlights**
- Listing highlights across all bookmarks (`list-highlights`)
- Listing highlights for a bookmark (`get-bookmark-highlights`)
- Retrieving a single highlight (`get-highlight`)
- Creating, updating, and deleting highlights (`create-highlight`, `update-highlight`, `delete-highlight`)

Currently, the MCP server only exposes tools (no resources).

## Usage with Claude Desktop

From NPM:

```json
{
  "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:

```json
{
  "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"
      ]
    }
  }
}
```

TDQS

A3.5/5.0

Scored across 29 tools

Disambiguation5/5

Each tool targets a specific resource and action (e.g., bookmarks, lists, tags, highlights). Though some names are similar (get-list vs get-lists), descriptions clearly distinguish retrieving a single list versus all lists. No two tools appear to perform the same function.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using hyphens (e.g., create-bookmark, delete-list, get-tags). There are no mixed conventions or vague verbs. The pattern is predictable across all 29 tools.

Tool Count2/5

With 29 tools, the server exceeds the 25-tool threshold that typically indicates an oversized surface. While the tools cover multiple related domains, the number feels heavy for an agent to navigate. A more minimal set might consolidate some list/tag bookmark interactions.

Completeness5/5

The server provides full CRUD coverage for bookmarks, lists, tags, and highlights, plus search and content retrieval. Attach/detach operations connect bookmarks to lists and tags, and deletion behavior is clearly documented. The only minor gap is the lack of explicit tag creation, but that may be implicit via attachment.

Maintenance

ActivityActive
ResponsivenessWithin a week