atlasfetch-mcp 0.1.2 → 0.1.3
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 +2 -2
- package/dist/server.js +65 -29
- package/dist/server.js.map +1 -1
- package/package.json +5 -2
- package/server.json +2 -2
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# atlasfetch-mcp
|
|
2
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
|
+
|
|
3
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.
|
|
4
6
|
|
|
5
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.
|
|
@@ -23,8 +25,6 @@ country: United Kingdom (GB) · region: England (GB-ENG) · municipal: City of W
|
|
|
23
25
|
|
|
24
26
|
## Install
|
|
25
27
|
|
|
26
|
-
No signup needed to try it: without a key it falls back to a shared public demo key.
|
|
27
|
-
|
|
28
28
|
### Claude Code
|
|
29
29
|
|
|
30
30
|
```bash
|
package/dist/server.js
CHANGED
|
@@ -13,7 +13,7 @@ import { ApiError, DEMO_KEY_NOTICE, request, usingDemoKey, } from './api.js';
|
|
|
13
13
|
* choosing a tool reads only these. The two that cause real mistakes:
|
|
14
14
|
* `municipal` is not always a city, and grid codes are output only.
|
|
15
15
|
*/
|
|
16
|
-
const VERSION = '0.1.
|
|
16
|
+
const VERSION = '0.1.3';
|
|
17
17
|
/** Every successful result carries the demo-key warning while one is in use. */
|
|
18
18
|
function ok(text) {
|
|
19
19
|
const body = usingDemoKey() ? `${text}\n\n${DEMO_KEY_NOTICE}` : text;
|
|
@@ -118,9 +118,9 @@ export function createServer() {
|
|
|
118
118
|
// ── Boundary sets ──────────────────────────────────────────────────────────
|
|
119
119
|
server.registerTool('list_boundary_sets', {
|
|
120
120
|
title: 'List the boundary sets on this account',
|
|
121
|
-
description: 'Lists the boundary sets on this account with their boundary counts and the API
|
|
122
|
-
'each is granted to. A set only matches during a lookup when it is available AND
|
|
123
|
-
'to the key making the call.',
|
|
121
|
+
description: 'Lists the boundary sets on this account with their boundary counts and the API keys (id ' +
|
|
122
|
+
'and label) each is granted to. A set only matches during a lookup when it is available AND ' +
|
|
123
|
+
'granted to the key making the call.',
|
|
124
124
|
inputSchema: {},
|
|
125
125
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
126
126
|
}, async () => {
|
|
@@ -148,7 +148,11 @@ export function createServer() {
|
|
|
148
148
|
'the user to finish that at https://atlasfetch.xyz/dashboard.',
|
|
149
149
|
].join('\n'),
|
|
150
150
|
inputSchema: {
|
|
151
|
-
name: z
|
|
151
|
+
name: z
|
|
152
|
+
.string()
|
|
153
|
+
.regex(/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,31}$/)
|
|
154
|
+
.describe('A short name, used to reference the set in lookups: 1-32 letters, digits, hyphens or ' +
|
|
155
|
+
'underscores, starting with a letter or digit.'),
|
|
152
156
|
},
|
|
153
157
|
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
154
158
|
}, async ({ name }) => {
|
|
@@ -162,37 +166,69 @@ export function createServer() {
|
|
|
162
166
|
return fail(error);
|
|
163
167
|
}
|
|
164
168
|
});
|
|
169
|
+
// Rules transcribed from the API's boundaryService (validatePolygon,
|
|
170
|
+
// validateProps, createBoundary) and plans.ts. The geometry schema is typed
|
|
171
|
+
// rather than a free record, so a MultiPolygon or a whole Feature is refused
|
|
172
|
+
// by the client before any request, and the schema itself tells the model
|
|
173
|
+
// what shape to build.
|
|
165
174
|
server.registerTool('add_boundary', {
|
|
166
|
-
title: 'Add a
|
|
167
|
-
description:
|
|
168
|
-
'
|
|
169
|
-
'
|
|
175
|
+
title: 'Add a polygon to a boundary set',
|
|
176
|
+
description: [
|
|
177
|
+
'Adds ONE polygon to an existing boundary set on this account, so that lookup_location',
|
|
178
|
+
'reports when a point falls inside it — delivery zones, service areas, sales territories.',
|
|
179
|
+
'Each call creates a new boundary: calling twice with the same name stores two.',
|
|
180
|
+
'',
|
|
181
|
+
'Before calling: the set must already exist (create_boundary_set). A set matches nothing in',
|
|
182
|
+
'lookups until it is switched on and granted to an API key in the dashboard at',
|
|
183
|
+
'https://atlasfetch.xyz/dashboard, which this server cannot do.',
|
|
184
|
+
'',
|
|
185
|
+
'geometry must be a single GeoJSON Polygon — not a MultiPolygon, Feature or',
|
|
186
|
+
'FeatureCollection. Positions are [longitude, latitude]. Each ring needs at least 4',
|
|
187
|
+
'positions and must be closed (last position equals the first); extra rings are holes.',
|
|
188
|
+
'Self-intersecting shapes are rejected. To store a MultiPolygon, add each part separately.',
|
|
189
|
+
'',
|
|
190
|
+
'Plan limits cap vertices per polygon (every position counts, including the closing one),',
|
|
191
|
+
'properties per boundary and boundaries per set; a limit hit is refused with a message naming',
|
|
192
|
+
'it. WITHOUT YOUR OWN KEY, the shared demo key is on the Public plan: at most 5 positions per',
|
|
193
|
+
'polygon (a closed quadrilateral), properties only category (zone, area, route, place,',
|
|
194
|
+
'other), color (green, blue, red, yellow, purple, orange) and priority (low, medium, high),',
|
|
195
|
+
'and one set shared with every demo user, where adding to a full set silently deletes its',
|
|
196
|
+
'oldest boundary. Never upload anything private with the demo key.',
|
|
197
|
+
'',
|
|
198
|
+
'Returns the stored boundary: id, set, name, properties, pointCount and createdAt.',
|
|
199
|
+
].join('\n'),
|
|
170
200
|
inputSchema: {
|
|
171
|
-
set: z
|
|
172
|
-
|
|
201
|
+
set: z
|
|
202
|
+
.string()
|
|
203
|
+
.regex(/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,31}$/)
|
|
204
|
+
.describe('Name of an existing set on this account (see list_boundary_sets).'),
|
|
205
|
+
name: z
|
|
206
|
+
.string()
|
|
207
|
+
.min(1)
|
|
208
|
+
.max(100)
|
|
209
|
+
.describe('Label returned when a looked-up point falls inside this polygon, e.g. "Zone A".'),
|
|
173
210
|
geometry: z
|
|
174
|
-
.
|
|
175
|
-
.
|
|
176
|
-
|
|
211
|
+
.object({
|
|
212
|
+
type: z.literal('Polygon'),
|
|
213
|
+
coordinates: z
|
|
214
|
+
.array(z.array(z.array(z.number()).min(2).max(3)).min(4))
|
|
215
|
+
.min(1)
|
|
216
|
+
.describe('Rings of [longitude, latitude] positions. The first ring is the outline; any further ' +
|
|
217
|
+
'rings are holes. Each ring is closed: its last position repeats its first.'),
|
|
218
|
+
})
|
|
219
|
+
.describe('A GeoJSON Polygon, e.g. {"type":"Polygon","coordinates":[[[18.40,-33.93],[18.40,-33.90],' +
|
|
220
|
+
'[18.44,-33.90],[18.44,-33.93],[18.40,-33.93]]]}.'),
|
|
177
221
|
properties: z
|
|
178
|
-
.record(z.string(), z.
|
|
222
|
+
.record(z.string().max(32), z.union([z.string().max(256), z.number(), z.boolean()]))
|
|
179
223
|
.optional()
|
|
180
|
-
.describe('
|
|
224
|
+
.describe('Optional flat key/value pairs returned with every match: keys up to 32 characters, values ' +
|
|
225
|
+
'a string (up to 256 characters), number or boolean. The demo key accepts only category, ' +
|
|
226
|
+
'color and priority, from fixed lists.'),
|
|
181
227
|
},
|
|
182
|
-
|
|
228
|
+
// destructiveHint is true because of the Public plan: adding to its full,
|
|
229
|
+
// shared set deletes the oldest boundary, which may be someone else's.
|
|
230
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: true },
|
|
183
231
|
}, async ({ set, name, geometry, properties }) => {
|
|
184
|
-
// Caught here rather than at the API, so the message can name the actual
|
|
185
|
-
// mistake — passing a whole Feature is the common one.
|
|
186
|
-
if (typeof geometry.type !== 'string' || !('coordinates' in geometry)) {
|
|
187
|
-
return {
|
|
188
|
-
content: [{
|
|
189
|
-
type: 'text',
|
|
190
|
-
text: 'geometry must be a GeoJSON geometry object with "type" and "coordinates" — a ' +
|
|
191
|
-
'Feature or FeatureCollection is not accepted. Coordinates are [longitude, latitude].',
|
|
192
|
-
}],
|
|
193
|
-
isError: true,
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
232
|
try {
|
|
197
233
|
const created = await request('/boundaries', {
|
|
198
234
|
method: 'POST',
|
package/dist/server.js.map
CHANGED
|
@@ -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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACL,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,GAEjD,MAAM,UAAU,CAAA;AAEjB;;;;;;;;;;;GAWG;AAEH,MAAM,OAAO,GAAG,OAAO,CAAA;AAQvB,gFAAgF;AAChF,SAAS,EAAE,CAAC,IAAY;IACtB,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACpE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AACpD,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,MAAM,OAAO,GAAG,KAAK,YAAY,QAAQ;QACvC,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,KAAK,YAAY,KAAK;YACtB,CAAC,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE;YAChD,CAAC,CAAC,gBAAgB,CAAA;IACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AACtE,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAE/D,oGAAoG;AACpG,SAAS,SAAS,CAAC,MAAsB;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAC7D,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY,CACxF,CAAA;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;SACzC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,EACxC;QACE,YAAY,EACV,oFAAoF;YACpF,2FAA2F;YAC3F,2FAA2F;YAC3F,6CAA6C;KAChD,CACF,CAAA;IAED,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,gDAAgD;QACvD,WAAW,EAAE;YACX,qFAAqF;YACrF,0FAA0F;YAC1F,mEAAmE;YACnE,EAAE;YACF,4FAA4F;YAC5F,+CAA+C;YAC/C,2FAA2F;YAC3F,+EAA+E;YAC/E,EAAE;YACF,oFAAoF;YACpF,0FAA0F;YAC1F,yFAAyF;YACzF,2FAA2F;YAC3F,mEAAmE;YACnE,EAAE;YACF,yFAAyF;YACzF,wCAAwC;SACzC,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACjE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACtE,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;iBACjD,QAAQ,EAAE;iBACV,QAAQ,CAAC,2DAA2D,CAAC;YACxE,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CAAC,gFAAgF,CAAC;YAC7F,MAAM,EAAE,CAAC;iBACN,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;iBACjC,QAAQ,EAAE;iBACV,QAAQ,CACP,mFAAmF;gBACjF,gFAAgF,CACnF;YACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YAC1G,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC;gBACL,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;aAC1E,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,8DAA8D,CAAC;SAC5E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAiB,kBAAkB,EAAE;gBAC/D,KAAK,EAAE;oBACL,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;oBAChB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;oBAChB,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;oBACrB,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;oBACpB,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC;oBACzB,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBACtD,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;iBAC7D;aACF,CAAC,CAAA;YAEF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBACtC,CAAC,CAAC,uDACE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrE,CAAC,CAAC,EAAE,CAAA;YAEN,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC,CAAA;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EACT,0FAA0F;YAC1F,6FAA6F;YAC7F,qCAAqC;QACvC,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAA0B,kBAAkB,CAAC,CAAA;YACzE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,EAAE,CAAC,6EAA6E,CAAC,CAAA;YAC1F,CAAC;YACD,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE;YACX,sFAAsF;YACtF,oBAAoB;YACpB,EAAE;YACF,yFAAyF;YACzF,2FAA2F;YAC3F,2FAA2F;YAC3F,2FAA2F;YAC3F,8DAA8D;SAC/D,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,KAAK,CAAC,kCAAkC,CAAC;iBACzC,QAAQ,CACP,uFAAuF;gBACrF,+CAA+C,CAClD;SACJ;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KACzG,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAc,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YAC9F,OAAO,EAAE,CACP,oBAAoB,GAAG,CAAC,IAAI,8DAA8D;gBACxF,oFAAoF;gBACpF,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CACrB,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,qEAAqE;IACrE,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE;YACX,uFAAuF;YACvF,0FAA0F;YAC1F,gFAAgF;YAChF,EAAE;YACF,4FAA4F;YAC5F,+EAA+E;YAC/E,gEAAgE;YAChE,EAAE;YACF,4EAA4E;YAC5E,oFAAoF;YACpF,uFAAuF;YACvF,2FAA2F;YAC3F,EAAE;YACF,0FAA0F;YAC1F,8FAA8F;YAC9F,8FAA8F;YAC9F,uFAAuF;YACvF,4FAA4F;YAC5F,0FAA0F;YAC1F,mEAAmE;YACnE,EAAE;YACF,mFAAmF;SACpF,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,WAAW,EAAE;YACX,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,KAAK,CAAC,kCAAkC,CAAC;iBACzC,QAAQ,CAAC,mEAAmE,CAAC;YAChF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,iFAAiF,CAAC;YAC9F,QAAQ,EAAE,CAAC;iBACR,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC1B,WAAW,EAAE,CAAC;qBACX,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACxD,GAAG,CAAC,CAAC,CAAC;qBACN,QAAQ,CACP,uFAAuF;oBACrF,4EAA4E,CAC/E;aACJ,CAAC;iBACD,QAAQ,CACP,0FAA0F;gBACxF,kDAAkD,CACrD;YACH,UAAU,EAAE,CAAC;iBACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBACnF,QAAQ,EAAE;iBACV,QAAQ,CACP,4FAA4F;gBAC1F,0FAA0F;gBAC1F,uCAAuC,CAC1C;SACJ;QACD,0EAA0E;QAC1E,uEAAuE;QACvE,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAU,aAAa,EAAE;gBACpD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE;aAC1C,CAAC,CAAA;YACF,OAAO,EAAE,CAAC,UAAU,IAAI,aAAa,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CACF,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "atlasfetch-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"mcpName": "xyz.atlasfetch/atlasfetch",
|
|
5
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.",
|
|
6
6
|
"keywords": [
|
|
@@ -42,14 +42,17 @@
|
|
|
42
42
|
"build": "tsc",
|
|
43
43
|
"prepublishOnly": "npm run build",
|
|
44
44
|
"start": "node dist/stdio.js",
|
|
45
|
-
"typecheck": "tsc --noEmit"
|
|
45
|
+
"typecheck": "tsc --noEmit",
|
|
46
|
+
"pack:mcpb": "npm run build && node scripts/pack-mcpb.mjs"
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
49
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
49
50
|
"zod": "^4.6.5"
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|
|
53
|
+
"@anthropic-ai/mcpb": "2.1.2",
|
|
52
54
|
"@types/node": "^24.0.0",
|
|
55
|
+
"fflate": "0.8.3",
|
|
53
56
|
"typescript": "^5.9.0"
|
|
54
57
|
}
|
|
55
58
|
}
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "xyz.atlasfetch/atlasfetch",
|
|
4
4
|
"title": "AtlasFetch",
|
|
5
5
|
"description": "Reverse geocode a coordinate to country, region and municipality, and match your own geofences.",
|
|
6
|
-
"version": "0.1.
|
|
6
|
+
"version": "0.1.3",
|
|
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.
|
|
16
|
+
"version": "0.1.3",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|
|
19
19
|
},
|