atlasfetch-mcp 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,90 +1,106 @@
1
- # atlasfetch-mcp
2
-
3
- **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](https://atlasfetch.xyz/dashboard).
4
-
5
- An [MCP](https://modelcontextprotocol.io) server for [AtlasFetch](https://atlasfetch.xyz) — **reverse geocoding to administrative boundaries, and geofencing**, as tools your AI assistant can call directly.
6
-
7
- 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.
8
-
9
- ```
10
- country: United Kingdom (GB) · region: England (GB-ENG) · municipal: City of Westminster (GB-WSM)
11
- ```
12
-
13
- ## What it does
14
-
15
- | Tool | What it does |
16
- | --- | --- |
17
- | `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 returns the point as an H3 cell or Google Plus Code. |
18
- | `list_boundary_sets` | Lists your boundary sets, their counts, and which API keys may query them. |
19
- | `create_boundary_set` | Creates an empty set for your own polygons. |
20
- | `add_boundary` | Adds one GeoJSON polygon, with properties returned on every match. |
21
-
22
- **Good for:** reverse geocoding to administrative areas, geofencing against your own delivery zones or service areas, jurisdiction and region checks, tagging location data with region codes.
23
-
24
- **Not for:** street addresses or postcodes (this is not forward geocoding — results stop at the municipality), routing, distances, map tiles, or downloading boundary geometry.
25
-
26
- ## Install
27
-
28
- ### Claude Code
29
-
30
- ```bash
31
- claude mcp add atlasfetch -- npx -y atlasfetch-mcp
32
- ```
33
-
34
- ### Claude Desktop, Cursor, VS Code and other clients
35
-
36
- Add to your MCP config (`claude_desktop_config.json`, `.cursor/mcp.json`, or your client's equivalent):
37
-
38
- ```json
39
- {
40
- "mcpServers": {
41
- "atlasfetch": {
42
- "command": "npx",
43
- "args": ["-y", "atlasfetch-mcp"],
44
- "env": {
45
- "ATLASFETCH_API_KEY": "your-key-here"
46
- }
47
- }
48
- }
49
- }
50
- ```
51
-
52
- Requires Node 20 or newer.
53
-
54
- ## Getting a key
55
-
56
- The demo key is shared by **every** anonymous user on the internet — one pooled quota and rate limit. Fine for a first look, wrong for anything real.
57
-
58
- Create your own at [atlasfetch.xyz/dashboard](https://atlasfetch.xyz/dashboard) and set `ATLASFETCH_API_KEY`. The free Personal plan needs no card.
59
-
60
- | Variable | Default | Purpose |
61
- | --- | --- | --- |
62
- | `ATLASFETCH_API_KEY` | *(demo key)* | Your API key. |
63
- | `ATLASFETCH_API_URL` | `https://api.atlasfetch.xyz` | Override only for local or staging APIs. |
64
-
65
- ## Two things that surprise people
66
-
67
- **`municipal` is the finest unit available, not a consistent kind of thing.** Los Angeles returns a city; rural Kansas returns a county; some places return a district. Where a country's fine tier is patchy, a coarser complete tier answers instead, because a county beats `null` for most uses. Don't assume the value names a city.
68
-
69
- **A new boundary set cannot be made queryable from here.** Sets are created switched off and granted to no key, and granting is addressed by API key *id* — which only a signed-in browser session can list. So this server can create a set and fill it, but the last step happens in the [dashboard](https://atlasfetch.xyz/dashboard). `create_boundary_set` says so in its response rather than leaving you with a set that silently matches nothing.
70
-
71
- ## Billing
72
-
73
- One call is one lookup, however many layers, sets or grid codes it touches. Metering happens before matching, so a lookup that matches nothing still counts. Requests rejected as invalid or rate-limited are not billed.
74
-
75
- ## Development
76
-
77
- ```bash
78
- npm install
79
- npm run build
80
- node scripts/smoke.mjs # drives the built server with a real MCP client, against the live API
81
- ```
82
-
83
- ## Links
84
-
85
- - [Documentation](https://atlasfetch.xyz/docs) · [OpenAPI spec](https://api.atlasfetch.xyz/openapi.json) · [llms.txt](https://atlasfetch.xyz/llms.txt)
86
- - [Playground](https://atlasfetch.xyz/playground) — try a lookup with no signup
87
-
88
- ## Licence
89
-
90
- MIT for this server. Reference boundaries derive from OpenStreetMap under the [ODbL](https://atlasfetch.xyz/attribution); attribution and share-alike obligations pass through to you. Coordinates you look up are not stored.
1
+ # atlasfetch-mcp
2
+
3
+ **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](https://atlasfetch.xyz/dashboard).
4
+
5
+ An [MCP](https://modelcontextprotocol.io) server for [AtlasFetch](https://atlasfetch.xyz) — **reverse geocoding to administrative boundaries and streets, and geofencing**, as tools your AI assistant can call directly.
6
+
7
+ 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.
8
+
9
+ ```
10
+ country: United Kingdom (GB) · region: England (GB-ENG) · municipal: City of Westminster (GB-WSM)
11
+ ```
12
+
13
+ ## What it does
14
+
15
+ | Tool | What it does |
16
+ | --- | --- |
17
+ | `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. |
18
+ | `list_boundary_sets` | Lists your boundary sets, their counts, and which API keys may query them. |
19
+ | `create_boundary_set` | Creates an empty set for your own polygons. |
20
+ | `add_boundary` | Adds one GeoJSON polygon, with properties returned on every match. |
21
+
22
+ **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.
23
+
24
+ **Not for:** forward geocoding or place search (an address to a coordinate), routing, distances, map tiles, or downloading boundary geometry.
25
+
26
+ ### Streets
27
+
28
+ Add the `street` layer and the answer includes the nearest street, and the house number where one is mapped. It is **worldwide**, and **opt-in** — not part of the default `country, region, municipal`.
29
+
30
+ You always get three answers — for 5 m, 20 m and unlimited — because "the nearest street" depends on how far you are willing to look:
31
+
32
+ ```json
33
+ "street": [
34
+ { "radiusMeters": 5, "streetNumber": null, "streetName": "Adderley Street", "postcode": null, "distanceMeters": 2.7 },
35
+ { "radiusMeters": 20, "streetNumber": "25", "streetName": "Adderley Street", "postcode": "8001", "distanceMeters": 9.6 },
36
+ { "radiusMeters": null, "streetNumber": "25", "streetName": "Adderley Street", "postcode": "8001", "distanceMeters": 9.6 }
37
+ ]
38
+ ```
39
+
40
+ **Two nulls that mean different things:** `"street": null` means there is no street data for that country, while an entry whose fields are null means nothing was within that radius. `streetNumber` and `postcode` are strings (`44A`, `12-14`, `0181`); house numbers are rare outside well-mapped areas; no street geometry is returned.
41
+
42
+ ## Install
43
+
44
+ ### Claude Code
45
+
46
+ ```bash
47
+ claude mcp add atlasfetch -- npx -y atlasfetch-mcp
48
+ ```
49
+
50
+ ### Claude Desktop, Cursor, VS Code and other clients
51
+
52
+ Add to your MCP config (`claude_desktop_config.json`, `.cursor/mcp.json`, or your client's equivalent):
53
+
54
+ ```json
55
+ {
56
+ "mcpServers": {
57
+ "atlasfetch": {
58
+ "command": "npx",
59
+ "args": ["-y", "atlasfetch-mcp"],
60
+ "env": {
61
+ "ATLASFETCH_API_KEY": "your-key-here"
62
+ }
63
+ }
64
+ }
65
+ }
66
+ ```
67
+
68
+ Requires Node 20 or newer.
69
+
70
+ ## Getting a key
71
+
72
+ The demo key is shared by **every** anonymous user on the internet — one pooled quota and rate limit. Fine for a first look, wrong for anything real.
73
+
74
+ Create your own at [atlasfetch.xyz/dashboard](https://atlasfetch.xyz/dashboard) and set `ATLASFETCH_API_KEY`. The free Personal plan needs no card.
75
+
76
+ | Variable | Default | Purpose |
77
+ | --- | --- | --- |
78
+ | `ATLASFETCH_API_KEY` | *(demo key)* | Your API key. |
79
+ | `ATLASFETCH_API_URL` | `https://api.atlasfetch.xyz` | Override only for local or staging APIs. |
80
+
81
+ ## Two things that surprise people
82
+
83
+ **`municipal` is the finest unit available, not a consistent kind of thing.** Los Angeles returns a city; rural Kansas returns a county; some places return a district. Where a country's fine tier is patchy, a coarser complete tier answers instead, because a county beats `null` for most uses. Don't assume the value names a city.
84
+
85
+ **A new boundary set cannot be made queryable from here.** Sets are created switched off and granted to no key, and granting is addressed by API key *id* — which only a signed-in browser session can list. So this server can create a set and fill it, but the last step happens in the [dashboard](https://atlasfetch.xyz/dashboard). `create_boundary_set` says so in its response rather than leaving you with a set that silently matches nothing.
86
+
87
+ ## Billing
88
+
89
+ One call is one lookup, however many layers, sets or grid codes it touches. Metering happens before matching, so a lookup that matches nothing still counts. Requests rejected as invalid or rate-limited are not billed.
90
+
91
+ ## Development
92
+
93
+ ```bash
94
+ npm install
95
+ npm run build
96
+ node scripts/smoke.mjs # drives the built server with a real MCP client, against the live API
97
+ ```
98
+
99
+ ## Links
100
+
101
+ - [Documentation](https://atlasfetch.xyz/docs) · [OpenAPI spec](https://api.atlasfetch.xyz/openapi.json) · [llms.txt](https://atlasfetch.xyz/llms.txt)
102
+ - [Playground](https://atlasfetch.xyz/playground) — try a lookup with no signup
103
+
104
+ ## Licence
105
+
106
+ MIT for this server. Reference boundaries derive from OpenStreetMap under the [ODbL](https://atlasfetch.xyz/attribution); attribution and share-alike obligations pass through to you. Coordinates you look up are not stored.
package/dist/api.d.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  * only `atlasfetch-mcp/<version>` from it — never the rest, and never anything
12
12
  * about the user. See src/lib/clientId.ts in the API.
13
13
  */
14
- export declare const USER_AGENT = "atlasfetch-mcp/0.1.4 (+https://github.com/atlasfetch-dev/atlasfetch-mcp)";
14
+ export declare const USER_AGENT = "atlasfetch-mcp/0.1.6 (+https://github.com/atlasfetch-dev/atlasfetch-mcp)";
15
15
  export declare function baseUrl(): string;
16
16
  /** A failure the caller should be told about verbatim, not retried blindly. */
17
17
  export declare class ApiError extends Error {
@@ -49,8 +49,26 @@ export interface LayerHit {
49
49
  code: string | null;
50
50
  name: string;
51
51
  }
52
+ /**
53
+ * One street answer. The lookup returns exactly three of these when `street` is
54
+ * asked for — for 5 m, 20 m and unlimited, in that order.
55
+ */
56
+ export interface StreetAnswer {
57
+ /** 5, 20, or null for unlimited. */
58
+ radiusMeters: number | null;
59
+ /** A string, never a number: `44A`, `12-14`. Only when an address matched. */
60
+ streetNumber: string | null;
61
+ streetName: string | null;
62
+ postcode: string | null;
63
+ distanceMeters: number | null;
64
+ }
52
65
  export interface LookupResponse {
53
- base: Record<string, LayerHit | null>;
66
+ /**
67
+ * `country`, `region` and `municipal` are a single hit or null; `street` is
68
+ * three answers, or null when there is no street data for the point's country.
69
+ * Those two nulls mean different things — see the tool description.
70
+ */
71
+ base: Record<string, LayerHit | StreetAnswer[] | null>;
54
72
  sets: Record<string, Array<{
55
73
  name: string;
56
74
  properties?: unknown;
package/dist/server.js CHANGED
@@ -16,9 +16,29 @@ function fail(error) {
16
16
  return { content: [{ type: 'text', text: message }], isError: true };
17
17
  }
18
18
  const json = (value) => JSON.stringify(value, null, 2);
19
+ /**
20
+ * The widest street answer worth showing: the unlimited entry if it found
21
+ * anything, else the first entry that did.
22
+ */
23
+ function summariseStreet(answers) {
24
+ const best = [...answers].reverse().find(a => a.streetName) ?? answers.find(a => a.streetName);
25
+ if (!best)
26
+ return 'street: covered, but nothing nearby';
27
+ const number = best.streetNumber ? `${best.streetNumber} ` : '';
28
+ const distance = best.distanceMeters === null ? '' : ` (${best.distanceMeters} m)`;
29
+ return `street: ${number}${best.streetName}${distance}`;
30
+ }
19
31
  /** `{ country: {...}, region: null }` becomes "country: United Kingdom (GB) · region: no match". */
20
32
  function summarise(result) {
21
- const parts = Object.entries(result.base).map(([layer, hit]) => hit ? `${layer}: ${hit.name}${hit.code ? ` (${hit.code})` : ''}` : `${layer}: no match`);
33
+ const parts = Object.entries(result.base).map(([layer, hit]) => {
34
+ // street is three answers, not one hit, and its null means "no data for
35
+ // this country" rather than "nothing matched here".
36
+ if (Array.isArray(hit))
37
+ return summariseStreet(hit);
38
+ if (layer === 'street')
39
+ return 'street: no street data for this area';
40
+ return hit ? `${layer}: ${hit.name}${hit.code ? ` (${hit.code})` : ''}` : `${layer}: no match`;
41
+ });
22
42
  const setNames = Object.entries(result.sets)
23
43
  .filter(([, matches]) => matches.length > 0)
24
44
  .map(([name, matches]) => `${name} -> ${matches.map(m => m.name).join(', ')}`);
@@ -29,22 +49,24 @@ function summarise(result) {
29
49
  export function createServer() {
30
50
  const server = new McpServer({ name: 'atlasfetch', version: VERSION }, {
31
51
  instructions: 'AtlasFetch answers "which place is this coordinate in?" — the country, region and ' +
32
- 'municipality containing a point, plus the boundaries the caller has uploaded themselves. ' +
33
- 'It does not do street addresses, postcodes, routing or distances, and it does not return ' +
34
- 'boundary geometry for the reference layers.',
52
+ 'municipality containing a point, the nearest street and house number (opt-in), ' +
53
+ 'plus the boundaries the caller has uploaded themselves. It does not do forward ' +
54
+ 'geocoding or place search, routing or distances, and it does not return boundary geometry ' +
55
+ 'for the reference layers.',
35
56
  });
36
57
  // ── The lookup ─────────────────────────────────────────────────────────────
37
58
  server.registerTool('lookup_location', {
38
59
  title: 'Look up the boundaries containing a coordinate',
39
60
  description: [
40
61
  'Reverse geocode a coordinate to the administrative areas that contain it — country,',
41
- 'region (state or province) and municipality — as names plus ISO 3166 codes, and match it',
42
- 'against boundary sets the account has uploaded, in the same call.',
62
+ 'region (state or province) and municipality — as names plus ISO 3166 codes, optionally the',
63
+ 'nearest street, and matches from boundary sets the account has uploaded: all in one call.',
43
64
  '',
44
- 'Use for: which country, region or municipality a point is in; geofence checks against your',
45
- 'own polygons; tagging data with region codes.',
46
- 'Do NOT use for: street addresses or postcodes (this is not forward geocoding, and results',
47
- 'stop at the municipality), routing, distances, or fetching boundary geometry.',
65
+ 'Use for: which country, region or municipality a point is in; which street a point is on',
66
+ '(add "street" to base); geofence checks against your own polygons; tagging data with region',
67
+ 'codes.',
68
+ 'Do NOT use for: forward geocoding or place search (an address to a coordinate), routing,',
69
+ 'distances, or fetching boundary geometry.',
48
70
  '',
49
71
  'Caveats worth repeating to the user: municipal is the finest unit AVAILABLE, not a',
50
72
  'consistent kind of thing — Los Angeles returns a city, rural Kansas returns a county, so',
@@ -52,6 +74,16 @@ export function createServer() {
52
74
  'array is always present: a boundary set that is unavailable or not granted to this key is',
53
75
  'skipped and reported there, while the call itself still succeeds.',
54
76
  '',
77
+ 'STREETS (opt-in via base, worldwide). base.street is ALWAYS three',
78
+ 'answers, for 5 m, 20 m and unlimited in that order,',
79
+ 'each with radiusMeters, streetNumber, streetName, postcode and distanceMeters. A numbered',
80
+ 'address within the radius wins over a nearer street (for the unlimited entry the address',
81
+ 'must still be within 20 m); otherwise the nearest named street; unnamed roads never answer.',
82
+ 'Two different nulls: base.street === null means there is no street data for the point’s',
83
+ 'country, while an entry whose fields are null means nothing was within that radius —',
84
+ 'never report them the same way. streetNumber and postcode are STRINGS (44A, 12-14, 0181),',
85
+ 'house numbers are rare outside well-mapped areas, and no street geometry is returned.',
86
+ '',
55
87
  'One call is one billed lookup however many layers, sets or grid codes it touches, and a',
56
88
  'call that matches nothing still bills.',
57
89
  ].join('\n'),
@@ -59,9 +91,10 @@ export function createServer() {
59
91
  lat: z.number().min(-90).max(90).describe('Latitude, -90 to 90.'),
60
92
  lng: z.number().min(-180).max(180).describe('Longitude, -180 to 180.'),
61
93
  base: z
62
- .array(z.enum(['country', 'region', 'municipal']))
94
+ .array(z.enum(['country', 'region', 'municipal', 'street']))
63
95
  .optional()
64
- .describe('Which reference layers to resolve. Defaults to all three.'),
96
+ .describe('Which reference layers to resolve. Defaults to country, region and municipal. ' +
97
+ '"street" is opt-in: add it explicitly to get the nearest street.'),
65
98
  sets: z
66
99
  .array(z.string().max(64))
67
100
  .optional()
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -4,4 +4,4 @@
4
4
  * package.json, server.json and manifest.json by scripts/release.mjs, which
5
5
  * refuses to release if they disagree.
6
6
  */
7
- export declare const VERSION = "0.1.4";
7
+ export declare const VERSION = "0.1.6";
package/dist/version.js CHANGED
@@ -4,5 +4,5 @@
4
4
  * package.json, server.json and manifest.json by scripts/release.mjs, which
5
5
  * refuses to release if they disagree.
6
6
  */
7
- export const VERSION = '0.1.4';
7
+ export const VERSION = '0.1.6';
8
8
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "atlasfetch-mcp",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "mcpName": "xyz.atlasfetch/atlasfetch",
5
- "description": "MCP server for AtlasFetch — reverse geocode a coordinate to its country, region and municipality (ISO 3166 codes), and match it against your own geofences.",
5
+ "description": "MCP server for AtlasFetch — reverse geocode a coordinate to its country, region and municipality (ISO 3166 codes), the nearest street and house number, and match it against your own geofences.",
6
6
  "keywords": [
7
7
  "mcp",
8
8
  "modelcontextprotocol",
@@ -13,7 +13,9 @@
13
13
  "administrative-boundaries",
14
14
  "iso-3166",
15
15
  "geojson",
16
- "gis"
16
+ "gis",
17
+ "street",
18
+ "address"
17
19
  ],
18
20
  "license": "MIT",
19
21
  "author": "ATLASIQ PTY LTD",
package/server.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
3
  "name": "xyz.atlasfetch/atlasfetch",
4
4
  "title": "AtlasFetch",
5
- "description": "Reverse geocode a coordinate to country, region and municipality, and match your own geofences.",
6
- "version": "0.1.4",
5
+ "description": "Reverse geocode a coordinate to country, region, municipality and street, plus your own geofences.",
6
+ "version": "0.1.6",
7
7
  "websiteUrl": "https://atlasfetch.xyz",
8
8
  "repository": {
9
9
  "url": "https://github.com/atlasfetch-dev/atlasfetch-mcp",
@@ -13,7 +13,7 @@
13
13
  {
14
14
  "registryType": "npm",
15
15
  "identifier": "atlasfetch-mcp",
16
- "version": "0.1.4",
16
+ "version": "0.1.6",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  },