import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import type { XiaomiNoteClient } from "../client";
import { NotesCache } from "../cache";
import type { WriteNoteEntry } from "../types";
export function registerMoveNoteTool(
server: McpServer,
client: XiaomiNoteClient,
cache: NotesCache,
): void {
server.registerTool(
"move_note",
{
description: "将笔记移动到指定文件夹",
inputSchema: {
noteId: z.string().min(1, "笔记 ID 不能为空"),
folderId: z.string().min(1, "目标文件夹 ID 不能为空"),
},
},
async ({ noteId, folderId }: { noteId: string; folderId: string }) => {
const detail = await client.getNote(noteId);
const note = detail.data.entry;
if (note.folderId === folderId) {
return {
content: [
{
type: "text" as const,
text: "笔记已在目标文件夹中。",
},
],
};
}
const updatedEntry: WriteNoteEntry = {
...note,
content: note.content ?? "",
folderId,
modifyDate: Date.now(),
};
await client.updateNote(noteId, updatedEntry);
const refreshed = await client.getNote(noteId);
cache.upsertNote(refreshed.data.entry);
await server.server.sendResourceUpdated({ uri: `minote://folders/${note.folderId}/notes` });
await server.server.sendResourceUpdated({ uri: `minote://folders/${folderId}/notes` });
return {
content: [
{
type: "text" as const,
text: `笔记 ${noteId} 已移动到文件夹 ${folderId}。`,
},
],
};
},
);
}