Skip to main content
@elanotes/mcp-local is a stdio MCP server. It indexes a markdown vault into a disposable SQLite FTS5 cache on the device. It indexes private/ notes. Without ELANOTES_API_URL it is offline — no Postgres, no OpenAI, no network. The tool registry is read-only: search_notes, grep_notes, read_note, list_notes, list_tags, query_notes, get_attachment, plus vault/index tools. It does not register write_note or edit_note. search_notes / grep_notes / list_notes / list_tags accept the same AIP-160 filter string as GET /v1/notes.

Run

Cursor / Claude Code

Prefer an absolute path to dist/cli.js so the client does not need your pnpm PATH.

Optional replica hydrate

Set ELANOTES_API_URL (API origin; /v1 is on each path) and ELANOTES_API_TOKEN to hydrate from /v1/sync. Sync mutations need notes.write on a suitable session credential. Personal access tokens cannot mutate replicas. ELANOTES_E2EE_PASSPHRASE is not sent to the server.

Cloud MCP

Cloud MCP serves the same read tools over authenticated HTTP, and adds write_note and edit_note with notes.write and connected write storage (or open local mode): MCP cloud. Arguments: MCP tools.

Failures

Tool failures return isError: true and a JSON object in content[].text containing reason, message, and a hint naming the next tool call. For example, a missing note returns NOTE_NOT_FOUND and points to list_notes. This server remains read-only: unsupported write_note or edit_note calls return UNKNOWN_TOOL and point to tools/list.