Skip to main content
Glama

Karakeep MCP server

by karakeep-app
SavePage.tsx2.38 kB
import { useEffect, useState } from "react"; import { Navigate } from "react-router-dom"; import { BookmarkTypes, ZNewBookmarkRequest, zNewBookmarkRequestSchema, } from "@karakeep/shared/types/bookmarks"; import { NEW_BOOKMARK_REQUEST_KEY_NAME } from "./background/protocol"; import Spinner from "./Spinner"; import { api } from "./utils/trpc"; export default function SavePage() { const [error, setError] = useState<string | undefined>(undefined); const { data, mutate: createBookmark, status, } = api.bookmarks.createBookmark.useMutation({ onError: (e) => { setError("Something went wrong: " + e.message); }, }); useEffect(() => { async function getNewBookmarkRequestFromBackgroundScriptIfAny(): Promise<ZNewBookmarkRequest | null> { const { [NEW_BOOKMARK_REQUEST_KEY_NAME]: req } = await chrome.storage.session.get(NEW_BOOKMARK_REQUEST_KEY_NAME); if (!req) { return null; } // Delete the request immediately to avoid issues with lingering values await chrome.storage.session.remove(NEW_BOOKMARK_REQUEST_KEY_NAME); return zNewBookmarkRequestSchema.parse(req); } async function runSave() { let newBookmarkRequest = await getNewBookmarkRequestFromBackgroundScriptIfAny(); if (!newBookmarkRequest) { const [currentTab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true, }); if (currentTab?.url) { newBookmarkRequest = { type: BookmarkTypes.LINK, url: currentTab.url, title: currentTab.title, source: "extension", }; } else { setError("Couldn't find the URL of the current tab"); return; } } createBookmark({ ...newBookmarkRequest, source: newBookmarkRequest.source || "extension", }); } runSave(); }, [createBookmark]); switch (status) { case "error": { return <div className="text-red-500">{error}</div>; } case "success": { return <Navigate to={`/bookmark/${data.id}`} />; } case "pending": { return ( <div className="flex justify-between text-lg"> <span>Saving Bookmark </span> <Spinner /> </div> ); } case "idle": { return <div />; } } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/karakeep-app/karakeep'

If you have feedback or need assistance with the MCP directory API, please join our Discord server