aboutsummaryrefslogtreecommitdiffstats
path: root/apps/mcp/src
diff options
context:
space:
mode:
Diffstat (limited to 'apps/mcp/src')
-rw-r--r--apps/mcp/src/bookmarks.ts14
-rw-r--r--apps/mcp/src/lists.ts18
-rw-r--r--apps/mcp/src/utils.ts98
3 files changed, 55 insertions, 75 deletions
diff --git a/apps/mcp/src/bookmarks.ts b/apps/mcp/src/bookmarks.ts
index 62893f2f..747bcd18 100644
--- a/apps/mcp/src/bookmarks.ts
+++ b/apps/mcp/src/bookmarks.ts
@@ -57,13 +57,13 @@ machine learning is:fav`),
}
return {
content: [
- ...res.data.bookmarks.map((bookmark) => ({
- type: "text" as const,
- text: JSON.stringify(compactBookmark(bookmark)),
- })),
{
type: "text",
- text: `Next cursor: ${res.data.nextCursor ? `'${res.data.nextCursor}'` : "no more pages"}`,
+ text: `
+${res.data.bookmarks.map(compactBookmark).join("\n\n")}
+
+Next cursor: ${res.data.nextCursor ? `'${res.data.nextCursor}'` : "no more pages"}
+`,
},
],
};
@@ -94,7 +94,7 @@ mcpServer.tool(
content: [
{
type: "text",
- text: JSON.stringify(compactBookmark(res.data)),
+ text: compactBookmark(res.data),
},
],
};
@@ -137,7 +137,7 @@ mcpServer.tool(
content: [
{
type: "text",
- text: JSON.stringify(compactBookmark(res.data)),
+ text: compactBookmark(res.data),
},
],
};
diff --git a/apps/mcp/src/lists.ts b/apps/mcp/src/lists.ts
index 36eb6661..242229cb 100644
--- a/apps/mcp/src/lists.ts
+++ b/apps/mcp/src/lists.ts
@@ -13,10 +13,20 @@ mcpServer.tool(
return toMcpToolError(res.error);
}
return {
- content: res.data.lists.map((list) => ({
- type: "text",
- text: JSON.stringify(list),
- })),
+ content: [
+ {
+ type: "text",
+ text: res.data.lists
+ .map(
+ (list) => `
+List ID: ${list.id}
+Name: ${list.icon} ${list.name}
+Description: ${list.description ?? ""}
+Parent ID: ${list.parentId}`,
+ )
+ .join("\n\n"),
+ },
+ ],
};
},
);
diff --git a/apps/mcp/src/utils.ts b/apps/mcp/src/utils.ts
index 26a86436..6d7d8ad5 100644
--- a/apps/mcp/src/utils.ts
+++ b/apps/mcp/src/utils.ts
@@ -16,77 +16,47 @@ export function toMcpToolError(
};
}
-interface CompactBookmark {
- id: string;
- createdAt: string;
- title: string;
- summary: string;
- note: string;
- content:
- | {
- type: "link";
- url: string;
- description: string;
- author: string;
- publisher: string;
- }
- | {
- type: "text";
- sourceUrl: string;
- }
- | {
- type: "media";
- assetId: string;
- assetType: string;
- sourceUrl: string;
- }
- | {
- type: "unknown";
- };
- tags: string[];
-}
-
export function compactBookmark(
bookmark: KarakeepAPISchemas["Bookmark"],
-): CompactBookmark {
- let content: CompactBookmark["content"];
+): string {
+ let content: string;
if (bookmark.content.type === "link") {
- content = {
- type: "link",
- url: bookmark.content.url,
- description: bookmark.content.description ?? "",
- author: bookmark.content.author ?? "",
- publisher: bookmark.content.publisher ?? "",
- };
+ content = `
+Bookmark type: link
+urk: ${bookmark.content.url}
+description: ${bookmark.content.description ?? ""}
+author: ${bookmark.content.author ?? ""}
+publisher: ${bookmark.content.publisher ?? ""}
+`;
} else if (bookmark.content.type === "text") {
- content = {
- type: "text",
- sourceUrl: bookmark.content.sourceUrl ?? "",
- };
+ content = `
+ Bookmark type: text
+ Source URL: ${bookmark.content.sourceUrl ?? ""}
+`;
} else if (bookmark.content.type === "asset") {
- content = {
- type: "media",
- assetId: bookmark.content.assetId,
- assetType: bookmark.content.assetType,
- sourceUrl: bookmark.content.sourceUrl ?? "",
- };
+ content = `
+Bookmark type: media
+Asset ID: ${bookmark.content.assetId}
+Asset type: ${bookmark.content.assetType}
+Source URL: ${bookmark.content.sourceUrl ?? ""}
+`;
} else {
- content = {
- type: "unknown",
- };
+ content = `
+Bookmark type: unknown
+`;
}
- return {
- id: bookmark.id,
- createdAt: bookmark.createdAt,
- title: bookmark.title
+ return `
+ Bookmark ID: ${bookmark.id}
+ Created at: ${bookmark.createdAt}
+ Title: ${
+ bookmark.title
? bookmark.title
- : ((bookmark.content.type === "link"
- ? bookmark.content.title
- : undefined) ?? ""),
- summary: bookmark.summary ?? "",
- note: bookmark.note ?? "",
- content,
- tags: bookmark.tags.map((t) => t.name),
- };
+ : ((bookmark.content.type === "link" ? bookmark.content.title : "") ?? "")
+ }
+ Summary: ${bookmark.summary ?? ""}
+ Note: ${bookmark.note ?? ""}
+ ${content}
+ Tags: ${bookmark.tags.map((t) => t.name).join(", ")}
+ `;
}