README
LM Studio TypeScript plugin port of the Python exif-sniffer MCP server: filesystem tools under a configurable Base Directory, remote media download with SSRF guards, and image metadata extraction ({path, value} rows).
npm run dev runs lms dev, which validates manifest.json, installs dependencies if needed, and watches for changes.
manifest.json uses "owner": "jason"; change it if your LM Studio Hub username differs.
lms push rejects nested .gitignore files anywhere under the plugin folder. The vendored reference/exif-sniffer/ tree must not include its own .gitignore (only the repo root file is allowed).
lms push talks to the LM Studio app on your machine (it starts or connects to the local daemon). Run:
Optional: lms push -y --description "Short public description" and --write-revision to bump revision in manifest.json after a successful upload. See Sharing Plugins.
Runs tsc then Node’s built-in test runner against tests/*.cjs (imports compiled dist/).
src/ — plugin sources (index.ts, toolsProvider.ts, metadata/fs/fetch helpers).reference/exif-sniffer/ — read-only copy of the Python project for parity while porting (see PORTING.md).cd /home/jason/Projects/LMEXIF-Sniffer
npm install
npm run build
npm run dev
cd /home/jason/Projects/LMEXIF-Sniffer
npm run build
lms push -y
npm test