PageSourceSearch

https://docs.karakeep.app/assets/js/edb82c38.5d3ad021.js

js karakeep.app collected 2026-10-03 23:35:58 UTC 4,297 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunk_karakeep_docs||=[]).push([[18482],{56912(e,n,s){s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"integrations/mcp","title":"Model Context Protocol Server (MCP)","description":"Karakeep comes with a Model Context Protocol server that can be used to interact with it through LLMs.","source":"@site/versioned_docs/version-v0.32.0/05-integrations/03-mcp.md","sourceDirName":"05-integrations","slug":"/integrations/mcp","permalink":"/v0.32.0/integrations/mcp","draft":false,"unlisted":false,"editUrl":"https://github.com/karakeep-app/karakeep/tree/main/docs/versioned_docs/version-v0.32.0/05-integrations/03-mcp.md","tags":[],"version":"v0.32.0","sidebarPosition":3,"frontMatter":{},"sidebar":"sidebar","previous":{"title":"Command Line Tool (CLI)","permalink":"/v0.32.0/integrations/command-line"},"next":{"title":"Using Karakeep with SingleFile Extension","permalink":"/v0.32.0/integrations/singlefile"}}');var r=s(62540),i=s(43023);const o={},a="Model Context Protocol Server (MCP)",d={},c=[{value:"Supported Tools",id:"supported-tools",level:2},{value:"Usage with Claude Desktop",id:"usage-with-claude-desktop",level:2},{value:"Demo",id:"demo",level:3},{value:"Search",id:"search",level:4},{value:"Adding Text Bookmarks",id:"adding-text-bookmarks",level:4},{value:"Adding URL Bookmarks",id:"adding-url-bookmarks",level:4}];function l(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"model-context-protocol-server-mcp",children:"Model Context Protocol Server (MCP)"})}),"\n",(0,r.jsx)(n.p,{children:"Karakeep comes with a Model Context Protocol server that can be used to interact with it through LLMs."}),"\n",(0,r.jsx)(n.h2,{id:"supported-tools",children:"Supported Tools"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Searching bookmarks"}),"\n",(0,r.jsx)(n.li,{children:"Adding and removing bookmarks from lists"}),"\n",(0,r.jsx)(n.li,{children:"Attaching and detaching tags to bookmarks"}),"\n",(0,r.jsx)(n.li,{children:"Creating new lists"}),"\n",(0,r.jsx)(n.li,{children:"Creating text and URL bookmarks"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"usage-with-claude-desktop",children:"Usage with Claude Desktop"}),"\n",(0,r.jsx)(n.p,{children:"From NPM:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n  "mcpServers": {\n    "karakeep": {\n      "command": "npx",\n      "args": [\n        "@karakeep/mcp"\n      ],\n      "env": {\n        "KARAKEEP_API_ADDR": "https://<YOUR_SERVER_ADDR>",\n        "KARAKEEP_API_KEY": "<YOUR_TOKEN>"\n      }\n    }\n  }\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:"From Docker:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n  "mcpServers": {\n    "karakeep": {\n      "command": "docker",\n      "args": [\n        "run",\n        "-e",\n        "KARAKEEP_API_ADDR=https://<YOUR_SERVER_ADDR>",\n        "-e",\n        "KARAKEEP_API_KEY=<YOUR_TOKEN>",\n        "ghcr.io/karakeep-app/karakeep-mcp:latest"\n      ]\n    }\n  }\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"demo",children:"Demo"}),"\n",(0,r.jsx)(n.h4,{id:"search",children:"Search"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"mcp-1",src:s(37572).A+"",width:"750",height:"800"})}),"\n",(0,r.jsx)(n.h4,{id:"adding-text-bookmarks",children:"Adding Text Bookmarks"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"mcp-2",src:s(90091).A+"",width:"750",height:"800"})}),"\n",(0,r.jsx)(n.h4,{id:"adding-url-bookmarks",children:"Adding URL Bookmarks"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"mcp-2",src:s(65666).A+"",width:"750",height:"800"})})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},37572(e,n,s){const t=s.p+"assets/images/mcp-1-20db2882698216f2cfb7e7787a514e9c.gif";s.d(n,["A",0,t])},90091(e,n,s){const t=s.p+"assets/images/mcp-2-b26648bef01dccc338a27375e6aaf9d4.gif";s.d(n,["A",0,t])},65666(e,n,s){const t=s.p+"assets/images/mcp-3-c9af4eeeee68c0003b422009e918a629.gif";s.d(n,["A",0,t])}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.