# Project rules: my first MCP server ## What we are building A small MCP server in TypeScript that gives an AI assistant three tools over a local notes folder: list_notes, read_note and search_notes. It runs over stdio and is used from Claude Code or Claude Desktop. ## Stack - Node.js 20+, TypeScript, ES modules - @modelcontextprotocol/sdk (official TypeScript SDK) - zod for tool input schemas ## Rules - Never write to stdout except through the MCP transport. Use console.error for logs (stdout is the protocol channel). - Every tool validates input with zod and returns a clear text error instead of throwing. - Read-only: no tool may create, change or delete files. - Only files inside NOTES_DIR can be read. Resolve paths and reject anything outside it (no ../ escapes, no symlinks out). - Keep tool descriptions short and specific: the model chooses tools by reading them. - After each change run: npm run build. Fix type errors before moving on.