searchMemos
Retrieve specific memos by searching with keywords and filtering by date range. Simplify memo management with precise query and date parameters for effective organization.
Instructions
Search memos by keyword and date range
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| categoryId | No | ||
| end | No | End date for the search range use ISO 8601 format. ex: 2020-02-01T00:00:00+09:00 | |
| query | No | ||
| start | No | Start date for the search range use ISO 8601 format. ex: 2020-01-01T00:00:00+09:00 |
Implementation Reference
- src/repository/memos.ts:64-87 (handler)The core handler function that searches memos by filtering on query, categoryId, and date range (start/end). Reads from db and returns matching memos.export const searchMemos = async (params: SearchMemosParams) => { const { categoryId, end, query, start } = params await db.read() return db.data.memos.filter((memo) => { if (query && !memo.content.includes(query) && !memo.title.includes(query)) { return false } if (categoryId && memo.categoryId !== categoryId) { return false } const updatedAt = new Date(memo.updatedAt).getTime() if (start && updatedAt < start.getTime()) { return false } if (end && updatedAt > end.getTime()) { return false } return true }) }
- src/schemas/memos.ts:42-67 (schema)Zod schema defining the input parameters for the searchMemos tool: optional categoryId, query, start and end dates.export const SearchMemosSchema = z.object({ categoryId: z.string().optional(), end: z .string() .datetime({ message: "Invalid date format. Please use ISO 8601 format.", offset: true, }) .transform((date) => new Date(date)) .optional() .describe( "End date for the search range use ISO 8601 format. ex: 2020-02-01T00:00:00+09:00", ), query: z.string().optional(), start: z .string() .datetime({ message: "Invalid date format. Please use ISO 8601 format.", offset: true, }) .transform((date) => new Date(date)) .optional() .describe( "Start date for the search range use ISO 8601 format. ex: 2020-01-01T00:00:00+09:00", ), })
- src/server/tools.ts:142-157 (registration)Registers the searchMemos tool with the MCP server, using SearchMemosSchema for input, array of MemoSchema for output, and a thin wrapper that calls the repository searchMemos function.server.registerTool( "searchMemos", { description: "Search memos by keyword and date range", inputSchema: SearchMemosSchema.shape, outputSchema: { memos: z.array(MemoSchema) }, title: "Search Memos", }, async (params) => { const memos = await searchMemos(params) return { content: [{ text: JSON.stringify(memos), type: "text" }], structuredContent: { memos }, } }, )