MCP server for AtlasFetch: reverse geocode coordinates to country, region and municipality (ISO 3166), and match your own geofences.
atlasfetch-mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**No signup needed to try it:** without a key it falls back to a shared public demo key, capped at 1,000 lookups a month across everyone using it. Get your own limits with a free sign-up at atlasfetch.xyz.
An MCP server for AtlasFetch — **reverse geocoding to administrative boundaries and streets, and geofencing**, as tools your AI assistant can call directly.
Ask "which municipality is -33.9249, 18.4241 in?" and get **Cape Town, Western Cape, South Africa** with ISO 3166 codes — from a real point-in-polygon lookup, not the model's memory.
What it does
| Tool | What it does |
| --- | --- |
| lookup_location | A coordinate becomes the country, region and municipality containing it, with ISO 3166-1 / 3166-2 codes, plus matches from your own boundary sets. Optionally the **nearest street** (ask for the street layer), and the point as an H3 cell or Google Plus Code. |
| geocode_address | An address becomes a point, in South Africa today, with a **precision** that says whether the house, the street or only the suburb was found — and what to do about it. |
| get_route | A route between 2 and 25 coordinates by car, bike, foot or truck, with turn-by-turn steps — optionally **around** your own zones, or **measuring** how far it runs inside them. |
| list_boundary_sets | Lists your boundary sets, their counts, and which API keys may query them. |
| create_boundary_set | Creates an empty set for your own polygons. |
| add_boundary | Adds one GeoJSON polygon, with properties returned on every match. |
| update_boundary | Moves or reshapes one boundary, keeping its id, name and properties. |
**Good for:** reverse geocoding to administrative areas, finding the street a point is on, geofencing against your own delivery zones or service areas, jurisdiction and region checks, tagging location data with region codes, geocoding delivery addresses in South Africa, and routing that keeps out of the areas you name.
**Not for:** geocoding outside South Africa (yet), searching for places by name, traffic-aware ETAs, distance matrices, isochrones, map tiles, or downloading boundary geometry.
Directions
get_route returns distance, duration and turn-by-turn steps between 2 and 25 coordinates, for car, bike, foot or truck.
Three things worth knowing before you wire it up:
- **A route costs 10 lookups**, not one. Everything it returns is included in that, but it is ten times a lookup.
- **Durations are free-flow** — the network at its own speed limits, with no live or historical traffic. They are not ETAs. For those, use a traffic-aware service.
- **The route line is off by default** (routeGeometry: "none"). An encoded polyline is thousands of characters an assistant cannot read; ask for polyline6 or geojson only when something will draw it.
**Your own zones, in a route.** avoidSets names boundary sets to route *around*; exposureSets names sets to *measure* against, leaving the route alone and reporting how many metres of it ran inside each zone. A zone containing one of your locations cannot be avoided for that route — it is skipped, and the answer says so.
Plan limits apply: 2 locations on the free plans and up to 25 on Pro, truck is Pro only, and alternatives need exactly 2 locations. Over a cap the answer is a 403 and nothing is billed; a location with no road near it is a 422, and that one **is** billed, because the route was attempted.
Geocoding
geocode_address turns one address into a point — q on one line, or address already split into parts. South Africa today.
**Read the precision before you use the point.** address is the house; interpolated is estimated between the numbers either side; intersection is a street corner ("Cnr Main Rd and Belmont Rd"); site is a named place such as a shopping centre, office park or hospital (pass the shop or unit number on to the driver); street is the right street but not the house; locality is only the suburb. The result line applies the API's own advice for deliveries: dispatch only on a house-, corner- or site-level answer that is not ambiguous, ask the recipient for a pin on a street-level one, and ask the customer when it is ambiguous. In South Africa most answers are street-level, because OpenStreetMap has house numbers on about 13% of street names.