Search rangefind static indexes: full-text, geo, autocomplete, facets - no server, just files.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Rangefind is a static search engine for large sites that cannot or should not run a search server.
It builds a sparse inverted index into static files, then lets the browser query
that index with HTTP Range requests. The core idea is simple: keep the logical
search shards small, but pack them into a small number of static files so deploys
and cold starts stay practical.
This repository is the standalone extraction of a production prototype built for a large thesis corpus.
The list below is the compact overview. The complete feature guide explains every supported search lane, build mode, runtime, integration, feature combination, fallback, and deliberate boundary with runnable examples.
rangefind build ./dist indexes built HTML directly,
with data-rangefind-* attributes for body scoping, metadata, facets, and
sorts.terms/packs/*.bin.gz.dist/runtime.browser.js.rangefind/node) for MCP servers, CLIs, and SSR: same query
engine over local index directories (positional file reads) or remote
HTTP(S) indexes, with browser-equivalent caching β immutable
content-addressed objects cached on disk and in a memory LRU, manifests
revalidated with ETags.rangefind/mobile) for React Native/Hermes and other
embedded JS hosts: fully offline search over a bundled or downloaded index
via positional file reads, or remote HTTP(S) indexes with memory + persistent
caching β see docs/mobile.md (covers WebView, Flutter, and native apps
too).terms/directory-root.<hash>.bin.gz
and terms/directory-pages/*.bin.gz.Range coalescing and bounded overfetch.rangefind/route): a CRP/MLD
route graph built from OSM road networks into range-addressed cell and
overlay objects β point-to-point driving routes with geometry and named
steps, travel-time matrices, and multi-stop itinerary optimization, all
exact versus a full-graph Dijkstra and served from static files with a
bounded fetch set per query; sharded builds share one top overlay and
route identically to monolithic ones β see docs/route-graph.md.analysis config): per-document language detection
or an explicit language field, per-language light stemmers and stopwords
for 20+ languages, script-aware Unicode folding (Latin, Greek, Cyrillic,
Arabic, Hebrew, Devanagari), dictionary-free CJK bigram tokenization that
is deterministic across Node and every browser, cross-language query
expansion with index-evidence base-plan selection, and the whole profile
frozen into the manifest so query analysis always matches the index.rangefind build --update adds small delta
generations over an existing index β unchanged pack bytes keep their
content-addressed names (and CDN cache entries), replaced documents
tombstone their old version, and the runtime merges every lane (text,
sorted browse, geo, vector, hybrid, suggest, facets) across generations
with scores that stay exactly comparable. rangefind build --compact
folds generations back into a single index when they pile up.addr:interpolation ranges, structured forward and reverse
geocoding, bounded multi-provider civic/postal augmentation (including the
QuΓ©bec RQA adapter), reusable
rangefind/osm and rangefind/osm/node integration APIs, and exhaustive geo
oracles.opening_hours evaluation; route-aware place search; compact place details;
and simplified encoded area geometry for real polygon/line map rendering.scoringStats config + rangefind/scoring-stats), a tiny sharded root
manifest (rangefind/shards), lazy shard engines with bbox geo routing and
expanding nearest-first search, and merged lanes whose rankings match a
monolithic build of the same corpus exactly β see docs/sharded-osm.md.linkRank): the static-site crawler resolves internal
<a href> links into a document graph and folds a build-time PageRank prior
into a sortable numeric doc-value. Well-linked pages win near-ties in ranking
(an opt-out multiplicative boost, score *= 1 + boost*linkRank, applied as a
bounded window rerank with no change to the scoring hot loop), you can sort by
authority, and there is zero query-time graph traversal. Any corpus that knows
its own edges can opt in with the turnkey examples/link-graph-enrich.mjs
enricher (or the exported rangefind/link-graph helper); see
docs/link-graph.md.Most browser search libraries assume the browser downloads a whole index, or they optimize for smaller sites. Rangefind is for the case where you want:
Demos: https://rangefind.dev/ β an OpenStreetMap map search backed by the rolling public sharded index (autocomplete, viewport geo queries, and nearest-neighbor) and the minimal example, both served as pure static files.
The already-generated planet-scale OSM index is free to query directly from browsers or Nodeβno account or API key required:
See its live coverage and freshness at https://osm.rangefind.dev/. It is a
best-effort public service; self-host the index when you need guaranteed
capacity, version pinning, custom fields, or an operational SLA. OSM result
UIs must display
Β© OpenStreetMap contributors.
Open http://localhost:5178/.
Start with the guide that matches the job:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/rangefind)<a href="https://allmcps.com/mcp/rangefind"><img src="https://allmcps.com/api/badge/rangefind?style=directory" alt="Rangefind on AllMCPs" /></a>