
Lupa — local file search for your Mac
io.github.paeyoungpark-webPublished by GitHub account paeyoungpark-webv0.2.0Updated Oct 24, 2026
Search your Mac's files by name and by text inside documents. Local index, Korean-aware.
Overview
Lets an AI assistant search the documents on a Mac by file name and by text inside them, using the local Lupa app's index.
- What you can do
- Search files by name and by content, with ranked paths and matching snippets
- Read a document's extracted text without opening the file
- Filter queries by name, content, folder, extension, kind, size and date, with Korean and Chinese prefixes
- Search inside PDF, Word, Excel, PowerPoint, plain text, Hangul HWP/HWPX and OCR'd scanned PDFs
- When to use it
- Useful when an assistant needs to find or quote documents stored on a Mac — contracts, reports, spreadsheets — without being given file system access. Best for macOS users who already keep their folders indexed in the Lupa app.
- Requirements
- macOS only, with the Lupa app installed from the Mac App Store and folders added and indexed; Lupa 2.0 or later for reading document text. Runs locally via npx (Node.js). No account, API key or configuration. GUI clients may need a login shell such as /bin/zsh -lc so npx is found; LUPA_SEARCH_PATH can point to the lupa-search binary if Lupa is installed unusually.
Installation
In SourceWeft
- Open Lupa — local file search for your Mac in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
lupa-mcp
Let your AI agent search the documents on your Mac — by what's written inside them.
An MCP server for Lupa, a macOS file search app with its own index. Your agent asks Lupa; Lupa answers from a local index in ~30 ms. Nothing touches the network.
Searches file names and document contents: PDF, Word, Excel, PowerPoint, plain text, Hangul HWP/HWPX, and scanned PDFs read with OCR.
Why this instead of find/grep
That last row is the point. Your agent gets document contents without you granting it access to your disk.
Requirements
The Lupa app must be installed — this server reads the index that Lupa builds; it does not index anything itself.
- Install Lupa (free) from the Mac App Store: https://lupa.kr
- Open it, add the folders you want searchable, and let indexing finish.
macOS only.
Install
Claude Code
Claude Desktop / Cursor / any MCP client — add to the client's MCP config:
That's it. No API key, no account, no configuration.
Why
/bin/zsh -lc? GUI apps don't inherit your shell's PATH, so a bare"command": "npx"fails to start withenv: npx: No such file or directory(measured on Claude Desktop and Aside). A login shell findsnpxwherever it lives — Homebrew, nvm, or a system install. In a terminal-based client (Claude Code, Codex) plainnpx -y lupa-mcpis fine.
Agents: don't run
lupa-searchthrough your shell. Sandboxed agent shells (Aside, Codex) kill the App Store-signed CLI at launch — exit code 133 or 134. Register this MCP server instead; it starts outside that sandbox. Full guide: https://lupa.kr/agents.html
Tools
lupa_search
lupa_read
Returns the text Lupa already extracted from a file — cheaper than reading the original, and it works for formats your agent cannot parse. Requires Lupa 2.0 or later.
Query syntax
Korean and Chinese prefixes work too (종류: 크기: 날짜: / 种类: 大小: 日期:).
Korean is handled properly — partial words inside compounds and attached particles both match, which is what Spotlight gets wrong.
Audit log
Every tool call is recorded on your Mac so you can see what an agent searched for and which files it was shown:
Each line has the time, the calling client (e.g. Claude Code, Cursor), the tool, the query or path, the paths returned, and whether it succeeded. Snippets and document text are not logged. The file is readable only by you (0600) and never leaves the Mac.
Lines are hash-chained: each entry includes the hash of the previous one, so editing or removing a line is detected. This makes the log tamper-evident, not tamper-proof — deleting the whole file and starting over is still possible.
Turn it off with LUPA_MCP_AUDIT=off, or move it with LUPA_MCP_AUDIT_PATH=/path/to/file.jsonl.
Privacy
Everything runs on your Mac. Lupa has no network code at all, and this server only launches Lupa's bundled command-line tool and passes the results to your agent. Nothing is uploaded, and there is no telemetry.
Notes
- Lupa's free index covers up to 50,000 files. This server inherits whatever the app indexed — there is no separate limit or paywall here.
- Only the beginning of each document is indexed, so
lupa_readtruncates long files. - If Lupa is installed somewhere unusual, set
LUPA_SEARCH_PATHto thelupa-searchbinary inside the app bundle.
Troubleshooting
License
MIT
Source: README.md at commit be21b24
Tools
0Version history
1- v0.2.0LatestSep 21, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts

