Skip to main content
Glama
index.ts3.16 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { loadConfig } from "./config"; import { XiaomiNoteClient } from "./client"; import { ContentConverter } from "./converter"; import { NotesCache } from "./cache"; import { registerListNotesTool } from "./tools/list-notes"; import { registerGetNoteTool } from "./tools/get-note"; import { registerCreateNoteTool } from "./tools/create-note"; import { registerUpdateNoteTool } from "./tools/update-note"; import { registerDeleteNoteTool } from "./tools/delete-note"; import { registerSearchNotesTool } from "./tools/search-notes"; import { registerUploadImageTool } from "./tools/upload-image"; import { registerListFoldersTool } from "./tools/list-folders"; import { registerCreateFolderTool } from "./tools/create-folder"; import { registerUpdateFolderTool } from "./tools/update-folder"; import { registerDeleteFolderTool } from "./tools/delete-folder"; import { registerMoveNoteTool } from "./tools/move-note"; import { registerNotesListResource } from "./resources/notes-list"; import { registerNoteDetailResource } from "./resources/note-detail"; import { registerFoldersListResource } from "./resources/folders-list"; import { registerFolderNotesResource } from "./resources/folder-notes"; async function bootstrap(): Promise<void> { const { config, save } = await loadConfig(); const server = new McpServer({ name: "mi-note-mcp", version: "0.1.0", websiteUrl: "https://i.mi.com/note/h5", }); const client = new XiaomiNoteClient(config, { onConfigUpdated: async (updated) => { try { await save(updated); } catch (error) { console.error(`保存配置失败:${(error as Error).message}`); } }, }); const converter = new ContentConverter(); const cache = new NotesCache(client, converter, { syncInterval: config.syncInterval, }); await cache.init(); registerListNotesTool(server, cache); registerGetNoteTool(server, client, converter, cache); registerCreateNoteTool(server, client, converter, cache); registerUpdateNoteTool(server, client, converter, cache); registerDeleteNoteTool(server, client, cache); registerSearchNotesTool(server, cache); registerUploadImageTool(server, client); registerListFoldersTool(server, cache); registerCreateFolderTool(server, client, cache); registerUpdateFolderTool(server, client, cache); registerDeleteFolderTool(server, client, cache); registerMoveNoteTool(server, client, cache); registerNotesListResource(server, cache); registerNoteDetailResource(server, client, converter, cache); registerFoldersListResource(server, cache); registerFolderNotesResource(server, cache, converter); const transport = new StdioServerTransport(); await server.connect(transport); console.error("mi-note-mcp server started"); const cleanup = () => cache.dispose(); process.once("SIGINT", cleanup); process.once("SIGTERM", cleanup); } bootstrap().catch((error) => { console.error("mi-note-mcp 启动失败:", error); process.exitCode = 1; });

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