Looking a fish up by name is the easy half; the interesting call is the feature search, where size range, saltwater, deepwater and dangerous combine into questions like "large dangerous saltwater fish" that no name index answers. The Japanese coverage is real — 5,204 Japanese names indexed with FTS5 — which is the reason to pick this over a generic species lookup.
A local server over a FishBase extract, built for Japanese-language search. It holds 35,731 species and 81,808 name records — 5,204 Japanese and 76,604 English — in SQLite with an FTS5 full-text index, so hiragana, katakana, kanji and English queries all resolve against the same data.
- `search_fish_by_name` finds fish by Japanese or English name; `limit` defaults to 10 and `includeImages` defaults to false
- `search_fish_by_features` searches by characteristics instead: `minLength` and `maxLength` in cm, plus `dangerous`, `saltwater`, `deepwater` and `commercial` flags, with `limit` defaulting to 20
- Photos come from the iNaturalist API when `includeImages` is set
Node.js 18.0.0 or newer, plus npm or yarn. Clone the repository, run `npm install` and `npm run build`, then load the data — `npm run load-sample-data` for a test set, or `npm run load-data` for the full FishBase import. Point your client at `node` with the path to `dist/index.js`; set `FISH_DB_PATH` to the absolute path of `fish.db` if you want to pin it rather than let the server find it. No account and no key.
