Skip to main content
Glama
folder-notes.ts1.89 kB
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; import { NotesCache } from "../cache"; import { ContentConverter } from "../converter"; import { buildNotesListItem } from "../note"; export function registerFolderNotesResource( server: McpServer, cache: NotesCache, converter: ContentConverter, ): void { const template = new ResourceTemplate("minote://folders/{id}/notes", { list: async () => { const folders = cache.getFolders(); const resources = folders.map((folder) => ({ name: folder.subject || folder.id, title: folder.subject || folder.id, uri: `minote://folders/${folder.id}/notes`, description: `文件夹 ID: ${folder.id}`, mimeType: "text/plain", })); return { resources }; }, }); server.registerResource( "folder-notes", template, { title: "文件夹内的笔记", description: "按文件夹返回笔记列表", mimeType: "text/plain", }, async (_uri, variables) => { const value = variables.id; const folderId = Array.isArray(value) ? value[0] : value; if (!folderId) { throw new Error("缺少文件夹 ID"); } const items = cache .getNotes() .filter((note) => note.folderId === folderId) .map((note, index) => { const item = buildNotesListItem(note, converter); const modified = new Date(item.modifyDate).toISOString(); return `${index + 1}. [${item.id}] ${item.title} (${modified})`; }); const text = items.length > 0 ? items.join("\n") : "该文件夹暂无笔记"; return { contents: [ { uri: `minote://folders/${folderId}/notes`, text, }, ], }; }, ); }

Latest Blog Posts

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/LaelLuo/mi_note_mcp'

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