# WhyNote MCP A zero-dependency, read-only [Model Context Protocol](https://modelcontextprotocol.io/) server for searching and reading the notes in one WhyNote account. ## Install Generate a read-only token in WhyNote settings, then configure your MCP client to run `npx -y why-note-mcp` with `NOTE_URL` and `NOTE_TOKEN`. Generic project configuration: ```json { "mcpServers": { "note": { "command": "npx", "args": ["-y", "why-note-mcp"], "env": { "NOTE_URL": "https://note.example.com", "NOTE_TOKEN": "" } } } } ``` Claude Code: ```bash claude mcp add --scope user note \ -e NOTE_URL=https://note.example.com \ -e NOTE_TOKEN='' \ -- npx -y why-note-mcp ``` Codex CLI: ```bash codex mcp add note \ --env NOTE_URL=https://note.example.com \ --env NOTE_TOKEN='' \ -- npx -y why-note-mcp ``` Values written directly in a command may be retained in shell history. Edit the client configuration instead if that is a concern. Node.js 18 or newer is required. ## Tools - `search`: search note lines by case-insensitive substring - `todos`: list incomplete or all todo items - `read_day`: read one date's complete note and etag - `recent_days`: read existing note days around an anchor date ## Security The server reads `NOTE_URL` and `NOTE_TOKEN` only from its environment. It sends the token only as a Bearer credential to the configured WhyNote URL. It never receives the account password and exposes no write tool. Changing the WhyNote account password revokes its read-only tokens. Generate a new token in WhyNote settings when a token expires or is revoked. ## Development ```bash npm ci npm test npm run pack:check ``` The test suite uses a local fake HTTP service; it does not require a WhyNote account, network access, or third-party dependencies. ## License [MIT](LICENSE)