import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import type { XiaomiNoteClient } from "../client";
import { NotesCache } from "../cache";
interface DeleteNoteArgs {
id: string;
purge?: boolean;
}
export function registerDeleteNoteTool(
server: McpServer,
client: XiaomiNoteClient,
cache: NotesCache,
): void {
server.registerTool(
"delete_note",
{
description: "删除指定 ID 的笔记",
inputSchema: {
id: z.string().min(1, "笔记 ID 不能为空"),
purge: z.boolean().optional().describe("是否永久删除"),
},
},
async ({ id, purge = false }: DeleteNoteArgs) => {
const cached = cache.getNote(id);
const tag = cached?.tag ?? (await client.getNote(id)).data.entry.tag;
await client.deleteNote(id, tag, purge);
cache.removeNote(id);
server.sendResourceListChanged();
await server.server.sendResourceUpdated({ uri: `minote://notes/${id}` });
return {
content: [
{
type: "text" as const,
text: purge ? `笔记 ${id} 已永久删除。` : `笔记 ${id} 已移至回收站。`,
},
],
};
},
);
}