You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking issue for the Karakeep MCP gap-fill work — expanding the MCP server from 20 → 32 tools across four waves. Each wave/PR is its own ticket below; this issue holds the overview and tracks progress. (Originally drafted as apps/mcp/ROADMAP.md, but a planning doc doesn't belong in the source tree — it lives here in the backlog instead.)
This backlog turns six researched PR specs into an ordered, PR-by-PR implementation plan for expanding the Karakeep MCP server (apps/mcp). Work each PR in the order listed; waves and PR ordering are load-bearing (dependencies flow forward within Wave 3).
Current coverage: The MCP server ships 20 tools today, spanning bookmarks (create/get/update, content, search), lists (get, create, add/remove membership), and tags (get, attach/detach, update/delete). Notable gaps: no way to browse bookmarks without a search query, no way to enumerate a list's contents, no reverse lookups (which lists/highlights a bookmark has), no Feeds surface at all, no Assets surface at all, and no explicit tag creation.
What these waves add (20 → 32 tools):
Wave
Adds
Tools
W1 — Bookmarks
Read/browse + sub-resource lookups
5
W2 — Feeds
Full RSS feed CRUD + fetch
6
W3 — Assets
Upload/fetch + attach/replace/detach
5
W4 — Tags
Explicit tag creation
1
All tools follow the established apps/mcp conventions: typed karakeepClient calls (openapi-fetch), pickDefined for optional query/body assembly, toMcpToolError on failure, shared formatting helpers (compactBookmark, compactTag, formatList), the nextCursor → "Next page cursor:" pagination convention, and exported input-schema + handler pairs so every tool is unit-testable by direct import.
Dependency note: Only W3-PR2 has a soft dependency — it consumes the assetId produced by W3-PR1's upload-asset and references the same UploadedAsset shape in its curl instructions. The code is self-contained (both edit apps/mcp/src/assets.ts), so W3-PR1 should land first to avoid a merge conflict and keep the upload→attach story coherent. Everything else is independent.
Out of scope / future
These waves deliberately skip the following (verified absent, deferred, or intentionally excluded):
Full Highlights CRUD suite — W1-PR2 adds only read (get-bookmark-highlights). Create/update/delete highlight tools are deferred.
summarize-bookmark — excluded on purpose; the model can summarize fetched content itself, so a server-side summarize tool adds little.
users/me + user stats — no account/profile or usage-stats tools in these waves.
Backups — no backup/export tooling.
Admin jobs — no admin/maintenance/job-management tools.
Signed-URL asset uploads — the pre-signed upload endpoints (POST /bookmarks/{bookmarkId}/assets/request-upload, PUT /assets/upload) do not exist in the current OpenAPI spec or SDK. W3-PR2 works around this with an out-of-band bearer-auth curl flow; a true signed-upload flow is a backend dependency, not an MCP-only PR.
Tracking issue for the Karakeep MCP gap-fill work — expanding the MCP server from 20 → 32 tools across four waves. Each wave/PR is its own ticket below; this issue holds the overview and tracks progress. (Originally drafted as
apps/mcp/ROADMAP.md, but a planning doc doesn't belong in the source tree — it lives here in the backlog instead.)Tickets
list-bookmarks,get-list-bookmarks,check-bookmark-url(PR feat(mcp): add list-bookmarks, get-list-bookmarks, check-bookmark-url (W1-PR1) #9)get-bookmark-lists,get-bookmark-highlightsupload-asset,get-assetcreate-tagOverview
This backlog turns six researched PR specs into an ordered, PR-by-PR implementation plan for expanding the Karakeep MCP server (
apps/mcp). Work each PR in the order listed; waves and PR ordering are load-bearing (dependencies flow forward within Wave 3).Current coverage: The MCP server ships 20 tools today, spanning bookmarks (create/get/update, content, search), lists (get, create, add/remove membership), and tags (get, attach/detach, update/delete). Notable gaps: no way to browse bookmarks without a search query, no way to enumerate a list's contents, no reverse lookups (which lists/highlights a bookmark has), no Feeds surface at all, no Assets surface at all, and no explicit tag creation.
What these waves add (20 → 32 tools):
All tools follow the established
apps/mcpconventions: typedkarakeepClientcalls (openapi-fetch),pickDefinedfor optional query/body assembly,toMcpToolErroron failure, shared formatting helpers (compactBookmark,compactTag,formatList), thenextCursor→ "Next page cursor:" pagination convention, and exported input-schema + handler pairs so every tool is unit-testable by direct import.Summary Table
list-bookmarks,get-list-bookmarks,check-bookmark-urlget-bookmark-lists,get-bookmark-highlightslist-feeds,create-feed,get-feed,update-feed,delete-feed,fetch-feedupload-asset,get-assetattach-bookmark-asset,replace-bookmark-asset,detach-bookmark-assetcreate-tagOut of scope / future
These waves deliberately skip the following (verified absent, deferred, or intentionally excluded):
get-bookmark-highlights). Create/update/delete highlight tools are deferred.summarize-bookmark— excluded on purpose; the model can summarize fetched content itself, so a server-side summarize tool adds little.users/me+ user stats — no account/profile or usage-stats tools in these waves.POST /bookmarks/{bookmarkId}/assets/request-upload,PUT /assets/upload) do not exist in the current OpenAPI spec or SDK. W3-PR2 works around this with an out-of-band bearer-auth curl flow; a true signed-upload flow is a backend dependency, not an MCP-only PR.🤖 Posted on behalf of
@joestumpby Claude.