@cyanheads/openstreetmap-mcp-server 0.2.3 → 0.2.4
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/CLAUDE.md +1 -1
- package/README.md +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-geocode.tool.d.ts +3 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-geocode.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-geocode.tool.js +13 -0
- package/dist/mcp-server/tools/definitions/openstreetmap-geocode.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-query-bbox.tool.d.ts +7 -2
- package/dist/mcp-server/tools/definitions/openstreetmap-query-bbox.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-query-bbox.tool.js +26 -5
- package/dist/mcp-server/tools/definitions/openstreetmap-query-bbox.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-query-nearby.tool.d.ts +7 -2
- package/dist/mcp-server/tools/definitions/openstreetmap-query-nearby.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-query-nearby.tool.js +26 -5
- package/dist/mcp-server/tools/definitions/openstreetmap-query-nearby.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-query-raw.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-query-raw.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-query-raw.tool.js +24 -3
- package/dist/mcp-server/tools/definitions/openstreetmap-query-raw.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-tag-input.js +1 -1
- package/dist/mcp-server/tools/definitions/openstreetmap-tag-input.js.map +1 -1
- package/dist/services/overpass/overpass-service.d.ts +11 -0
- package/dist/services/overpass/overpass-service.d.ts.map +1 -1
- package/dist/services/overpass/overpass-service.js +30 -17
- package/dist/services/overpass/overpass-service.js.map +1 -1
- package/package.json +1 -1
- package/server.json +5 -5
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** @cyanheads/openstreetmap-mcp-server
|
|
4
|
-
**Version:** 0.2.
|
|
4
|
+
**Version:** 0.2.4
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.16`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/openstreetmap-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/openstreetmap-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
13
13
|
|
|
14
14
|
</div>
|
|
15
15
|
|
|
@@ -55,5 +55,7 @@ export declare const openstreetmapGeocode: import("@cyanheads/mcp-ts-core").Tool
|
|
|
55
55
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
56
56
|
readonly when: "Both query and structured fields are provided, or neither is provided.";
|
|
57
57
|
readonly recovery: "Provide either the query parameter (free-form) or structured address fields (street, city, etc.), not both.";
|
|
58
|
-
}],
|
|
58
|
+
}], {
|
|
59
|
+
readonly effectiveQuery: z.ZodString;
|
|
60
|
+
}>;
|
|
59
61
|
//# sourceMappingURL=openstreetmap-geocode.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openstreetmap-geocode.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-geocode.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAMjE,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"openstreetmap-geocode.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-geocode.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAMjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyQ/B,CAAC"}
|
|
@@ -112,6 +112,13 @@ export const openstreetmapGeocode = tool('openstreetmap_geocode', {
|
|
|
112
112
|
.string()
|
|
113
113
|
.describe('Required data attribution: Data © OpenStreetMap contributors, ODbL 1.0.'),
|
|
114
114
|
}),
|
|
115
|
+
// Agent-facing context: the effective query sent to Nominatim.
|
|
116
|
+
// Reaches both structuredContent and content[] without a format() entry.
|
|
117
|
+
enrichment: {
|
|
118
|
+
effectiveQuery: z
|
|
119
|
+
.string()
|
|
120
|
+
.describe('The effective query sent to Nominatim — the free-form query string, or a reconstructed string from the provided structured address fields.'),
|
|
121
|
+
},
|
|
115
122
|
errors: [
|
|
116
123
|
{
|
|
117
124
|
reason: 'no_results',
|
|
@@ -160,6 +167,12 @@ export const openstreetmapGeocode = tool('openstreetmap_geocode', {
|
|
|
160
167
|
throw ctx.fail('no_results', `No places found for "${input.query ?? [input.city, input.state, input.country].filter(Boolean).join(', ')}"`, { ...ctx.recoveryFor('no_results') });
|
|
161
168
|
}
|
|
162
169
|
ctx.log.info('Geocode results', { count: results.length });
|
|
170
|
+
const effectiveQuery = input.query
|
|
171
|
+
? input.query
|
|
172
|
+
: [input.street, input.city, input.county, input.state, input.country, input.postalcode]
|
|
173
|
+
.filter(Boolean)
|
|
174
|
+
.join(', ');
|
|
175
|
+
ctx.enrich({ effectiveQuery });
|
|
163
176
|
return {
|
|
164
177
|
results: results.map((r) => ({
|
|
165
178
|
place_id: r.place_id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openstreetmap-geocode.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-geocode.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openstreetmap-geocode.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-geocode.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,13 +38,18 @@ export declare const openstreetmapQueryBbox: import("@cyanheads/mcp-ts-core").To
|
|
|
38
38
|
readonly reason: "invalid_tag";
|
|
39
39
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
40
40
|
readonly when: "Both amenity and tag_key/tag_value are provided, or neither is provided.";
|
|
41
|
-
readonly recovery: "Provide either amenity (e.g., \"hospital\") or tag_key
|
|
41
|
+
readonly recovery: "Provide either amenity (e.g., \"hospital\") or both tag_key and tag_value (e.g., tag_key=\"leisure\", tag_value=\"park\"). tag_key without tag_value is not valid.";
|
|
42
42
|
}, {
|
|
43
43
|
readonly reason: "query_timeout";
|
|
44
44
|
readonly code: JsonRpcErrorCode.Timeout;
|
|
45
45
|
readonly when: "The Overpass query exceeded the timeout.";
|
|
46
|
-
readonly retryable:
|
|
46
|
+
readonly retryable: false;
|
|
47
47
|
readonly recovery: "Reduce the bounding box area, add more specific tag filters, or increase timeout_seconds and retry.";
|
|
48
|
+
}, {
|
|
49
|
+
readonly reason: "result_too_large";
|
|
50
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
51
|
+
readonly when: "Overpass ran out of memory — the result set exceeds the server memory limit.";
|
|
52
|
+
readonly recovery: "Narrow the query: reduce the bounding box area, add more specific tag filters, or limit element_types.";
|
|
48
53
|
}, {
|
|
49
54
|
readonly reason: "rate_limited";
|
|
50
55
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openstreetmap-query-bbox.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-bbox.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"openstreetmap-query-bbox.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-bbox.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAM3E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmPjC,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @module mcp-server/tools/definitions/openstreetmap-query-bbox.tool
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
|
-
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
6
|
+
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { getOverpassService } from '../../../services/overpass/overpass-service.js';
|
|
8
8
|
import { resolveTagInput } from './openstreetmap-tag-input.js';
|
|
9
9
|
const ATTRIBUTION = 'Data © OpenStreetMap contributors, ODbL 1.0';
|
|
@@ -106,15 +106,21 @@ export const openstreetmapQueryBbox = tool('openstreetmap_query_bbox', {
|
|
|
106
106
|
reason: 'invalid_tag',
|
|
107
107
|
code: JsonRpcErrorCode.ValidationError,
|
|
108
108
|
when: 'Both amenity and tag_key/tag_value are provided, or neither is provided.',
|
|
109
|
-
recovery: 'Provide either amenity (e.g., "hospital") or tag_key
|
|
109
|
+
recovery: 'Provide either amenity (e.g., "hospital") or both tag_key and tag_value (e.g., tag_key="leisure", tag_value="park"). tag_key without tag_value is not valid.',
|
|
110
110
|
},
|
|
111
111
|
{
|
|
112
112
|
reason: 'query_timeout',
|
|
113
113
|
code: JsonRpcErrorCode.Timeout,
|
|
114
114
|
when: 'The Overpass query exceeded the timeout.',
|
|
115
|
-
retryable:
|
|
115
|
+
retryable: false,
|
|
116
116
|
recovery: 'Reduce the bounding box area, add more specific tag filters, or increase timeout_seconds and retry.',
|
|
117
117
|
},
|
|
118
|
+
{
|
|
119
|
+
reason: 'result_too_large',
|
|
120
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
121
|
+
when: 'Overpass ran out of memory — the result set exceeds the server memory limit.',
|
|
122
|
+
recovery: 'Narrow the query: reduce the bounding box area, add more specific tag filters, or limit element_types.',
|
|
123
|
+
},
|
|
118
124
|
{
|
|
119
125
|
reason: 'rate_limited',
|
|
120
126
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
@@ -128,7 +134,7 @@ export const openstreetmapQueryBbox = tool('openstreetmap_query_bbox', {
|
|
|
128
134
|
if ('error' in resolved) {
|
|
129
135
|
throw ctx.fail('invalid_tag', resolved.error === 'both'
|
|
130
136
|
? 'Cannot combine amenity with tag_key/tag_value.'
|
|
131
|
-
: 'Provide either amenity or tag_key
|
|
137
|
+
: 'Provide either amenity or both tag_key and tag_value (both are required).', { ...ctx.recoveryFor('invalid_tag') });
|
|
132
138
|
}
|
|
133
139
|
const { tagKey, tagValue } = resolved;
|
|
134
140
|
const service = getOverpassService();
|
|
@@ -142,7 +148,22 @@ export const openstreetmapQueryBbox = tool('openstreetmap_query_bbox', {
|
|
|
142
148
|
elementTypes: input.element_types,
|
|
143
149
|
timeoutSeconds: input.timeout_seconds,
|
|
144
150
|
});
|
|
145
|
-
const response = await service.query(ql, ctx)
|
|
151
|
+
const response = await service.query(ql, ctx).catch((err) => {
|
|
152
|
+
if (err instanceof McpError) {
|
|
153
|
+
const data = err.data;
|
|
154
|
+
const reason = data?.reason;
|
|
155
|
+
// fetchWithTimeout throws RateLimited (no reason) for HTTP 429 — remap to rate_limited
|
|
156
|
+
if (!reason && data?.statusCode === 429) {
|
|
157
|
+
throw ctx.fail('rate_limited', err.message, { ...ctx.recoveryFor('rate_limited') });
|
|
158
|
+
}
|
|
159
|
+
if (reason === 'query_timeout' ||
|
|
160
|
+
reason === 'result_too_large' ||
|
|
161
|
+
reason === 'rate_limited') {
|
|
162
|
+
throw ctx.fail(reason, err.message, { ...ctx.recoveryFor(reason) });
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
throw err;
|
|
166
|
+
});
|
|
146
167
|
const allPois = service.normalizeElements(response.elements);
|
|
147
168
|
const limited = allPois.slice(0, input.limit);
|
|
148
169
|
const dataTimestamp = response.osm3s?.timestamp_osm_base ?? new Date().toISOString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openstreetmap-query-bbox.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-bbox.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"openstreetmap-query-bbox.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-bbox.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,13 +38,18 @@ export declare const openstreetmapQueryNearby: import("@cyanheads/mcp-ts-core").
|
|
|
38
38
|
readonly reason: "invalid_tag";
|
|
39
39
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
40
40
|
readonly when: "Both amenity and tag_key/tag_value are provided, or neither is provided.";
|
|
41
|
-
readonly recovery: "Provide either amenity (e.g., \"hospital\") or tag_key
|
|
41
|
+
readonly recovery: "Provide either amenity (e.g., \"hospital\") or both tag_key and tag_value (e.g., tag_key=\"leisure\", tag_value=\"park\"). tag_key without tag_value is not valid.";
|
|
42
42
|
}, {
|
|
43
43
|
readonly reason: "query_timeout";
|
|
44
44
|
readonly code: JsonRpcErrorCode.Timeout;
|
|
45
45
|
readonly when: "The Overpass query exceeded the timeout.";
|
|
46
|
-
readonly retryable:
|
|
46
|
+
readonly retryable: false;
|
|
47
47
|
readonly recovery: "Reduce radius_meters, add more specific tag filters, or increase timeout_seconds and retry.";
|
|
48
|
+
}, {
|
|
49
|
+
readonly reason: "result_too_large";
|
|
50
|
+
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
51
|
+
readonly when: "Overpass ran out of memory — the result set exceeds the server memory limit.";
|
|
52
|
+
readonly recovery: "Narrow the query: reduce radius_meters, add more specific tag filters, or limit element_types.";
|
|
48
53
|
}, {
|
|
49
54
|
readonly reason: "rate_limited";
|
|
50
55
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openstreetmap-query-nearby.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-nearby.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"openstreetmap-query-nearby.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-nearby.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAM3E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiRnC,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @module mcp-server/tools/definitions/openstreetmap-query-nearby.tool
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
|
-
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
6
|
+
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { getOverpassService, haversineMeters } from '../../../services/overpass/overpass-service.js';
|
|
8
8
|
import { resolveTagInput } from './openstreetmap-tag-input.js';
|
|
9
9
|
const ATTRIBUTION = 'Data © OpenStreetMap contributors, ODbL 1.0';
|
|
@@ -115,15 +115,21 @@ export const openstreetmapQueryNearby = tool('openstreetmap_query_nearby', {
|
|
|
115
115
|
reason: 'invalid_tag',
|
|
116
116
|
code: JsonRpcErrorCode.ValidationError,
|
|
117
117
|
when: 'Both amenity and tag_key/tag_value are provided, or neither is provided.',
|
|
118
|
-
recovery: 'Provide either amenity (e.g., "hospital") or tag_key
|
|
118
|
+
recovery: 'Provide either amenity (e.g., "hospital") or both tag_key and tag_value (e.g., tag_key="leisure", tag_value="park"). tag_key without tag_value is not valid.',
|
|
119
119
|
},
|
|
120
120
|
{
|
|
121
121
|
reason: 'query_timeout',
|
|
122
122
|
code: JsonRpcErrorCode.Timeout,
|
|
123
123
|
when: 'The Overpass query exceeded the timeout.',
|
|
124
|
-
retryable:
|
|
124
|
+
retryable: false,
|
|
125
125
|
recovery: 'Reduce radius_meters, add more specific tag filters, or increase timeout_seconds and retry.',
|
|
126
126
|
},
|
|
127
|
+
{
|
|
128
|
+
reason: 'result_too_large',
|
|
129
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
130
|
+
when: 'Overpass ran out of memory — the result set exceeds the server memory limit.',
|
|
131
|
+
recovery: 'Narrow the query: reduce radius_meters, add more specific tag filters, or limit element_types.',
|
|
132
|
+
},
|
|
127
133
|
{
|
|
128
134
|
reason: 'rate_limited',
|
|
129
135
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
@@ -137,7 +143,7 @@ export const openstreetmapQueryNearby = tool('openstreetmap_query_nearby', {
|
|
|
137
143
|
if ('error' in resolved) {
|
|
138
144
|
throw ctx.fail('invalid_tag', resolved.error === 'both'
|
|
139
145
|
? 'Cannot combine amenity with tag_key/tag_value.'
|
|
140
|
-
: 'Provide either amenity or tag_key
|
|
146
|
+
: 'Provide either amenity or both tag_key and tag_value (both are required).', { ...ctx.recoveryFor('invalid_tag') });
|
|
141
147
|
}
|
|
142
148
|
const { tagKey, tagValue } = resolved;
|
|
143
149
|
const service = getOverpassService();
|
|
@@ -150,7 +156,22 @@ export const openstreetmapQueryNearby = tool('openstreetmap_query_nearby', {
|
|
|
150
156
|
elementTypes: input.element_types,
|
|
151
157
|
timeoutSeconds: input.timeout_seconds,
|
|
152
158
|
});
|
|
153
|
-
const response = await service.query(ql, ctx)
|
|
159
|
+
const response = await service.query(ql, ctx).catch((err) => {
|
|
160
|
+
if (err instanceof McpError) {
|
|
161
|
+
const data = err.data;
|
|
162
|
+
const reason = data?.reason;
|
|
163
|
+
// fetchWithTimeout throws RateLimited (no reason) for HTTP 429 — remap to rate_limited
|
|
164
|
+
if (!reason && data?.statusCode === 429) {
|
|
165
|
+
throw ctx.fail('rate_limited', err.message, { ...ctx.recoveryFor('rate_limited') });
|
|
166
|
+
}
|
|
167
|
+
if (reason === 'query_timeout' ||
|
|
168
|
+
reason === 'result_too_large' ||
|
|
169
|
+
reason === 'rate_limited') {
|
|
170
|
+
throw ctx.fail(reason, err.message, { ...ctx.recoveryFor(reason) });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
throw err;
|
|
174
|
+
});
|
|
154
175
|
const allPois = service.normalizeElements(response.elements);
|
|
155
176
|
// Attach great-circle distance from the query center, then sort nearest-first
|
|
156
177
|
// BEFORE truncating so `limit` keeps the closest matches, not the lowest element IDs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openstreetmap-query-nearby.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-nearby.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"openstreetmap-query-nearby.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-nearby.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export declare const openstreetmapQueryRaw: import("@cyanheads/mcp-ts-core").Too
|
|
|
21
21
|
readonly reason: "query_timeout";
|
|
22
22
|
readonly code: JsonRpcErrorCode.Timeout;
|
|
23
23
|
readonly when: "The query exceeded its timeout (Overpass runtime error in response body).";
|
|
24
|
-
readonly retryable:
|
|
24
|
+
readonly retryable: false;
|
|
25
25
|
readonly recovery: "Add [timeout:N] to the query string with a higher value, or simplify the query (smaller bbox, fewer element types, more specific tags).";
|
|
26
26
|
}, {
|
|
27
27
|
readonly reason: "result_too_large";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openstreetmap-query-raw.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-raw.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"openstreetmap-query-raw.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-raw.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAK3E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyLhC,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @module mcp-server/tools/definitions/openstreetmap-query-raw.tool
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
|
-
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
6
|
+
import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { getOverpassService } from '../../../services/overpass/overpass-service.js';
|
|
8
8
|
const ATTRIBUTION = 'Data © OpenStreetMap contributors, ODbL 1.0';
|
|
9
9
|
export const openstreetmapQueryRaw = tool('openstreetmap_query_raw', {
|
|
@@ -63,7 +63,7 @@ export const openstreetmapQueryRaw = tool('openstreetmap_query_raw', {
|
|
|
63
63
|
reason: 'query_timeout',
|
|
64
64
|
code: JsonRpcErrorCode.Timeout,
|
|
65
65
|
when: 'The query exceeded its timeout (Overpass runtime error in response body).',
|
|
66
|
-
retryable:
|
|
66
|
+
retryable: false,
|
|
67
67
|
recovery: 'Add [timeout:N] to the query string with a higher value, or simplify the query (smaller bbox, fewer element types, more specific tags).',
|
|
68
68
|
},
|
|
69
69
|
{
|
|
@@ -93,7 +93,28 @@ export const openstreetmapQueryRaw = tool('openstreetmap_query_raw', {
|
|
|
93
93
|
}
|
|
94
94
|
ctx.log.info('Overpass raw query', { queryLength: ql.length });
|
|
95
95
|
const service = getOverpassService();
|
|
96
|
-
const response = await service.query(ql, ctx)
|
|
96
|
+
const response = await service.query(ql, ctx).catch((err) => {
|
|
97
|
+
if (err instanceof McpError) {
|
|
98
|
+
const data = err.data;
|
|
99
|
+
const reason = data?.reason;
|
|
100
|
+
if (!reason) {
|
|
101
|
+
// fetchWithTimeout throws without a reason for HTTP status errors — remap by statusCode
|
|
102
|
+
if (data?.statusCode === 400) {
|
|
103
|
+
throw ctx.fail('query_error', err.message, { ...ctx.recoveryFor('query_error') });
|
|
104
|
+
}
|
|
105
|
+
if (data?.statusCode === 429) {
|
|
106
|
+
throw ctx.fail('rate_limited', err.message, { ...ctx.recoveryFor('rate_limited') });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else if (reason === 'query_error' ||
|
|
110
|
+
reason === 'query_timeout' ||
|
|
111
|
+
reason === 'result_too_large' ||
|
|
112
|
+
reason === 'rate_limited') {
|
|
113
|
+
throw ctx.fail(reason, err.message, { ...ctx.recoveryFor(reason) });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
throw err;
|
|
117
|
+
});
|
|
97
118
|
const dataTimestamp = response.osm3s?.timestamp_osm_base;
|
|
98
119
|
ctx.log.info('Overpass raw results', { count: response.elements.length });
|
|
99
120
|
ctx.enrich({ effectiveQuery: ql });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openstreetmap-query-raw.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-raw.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"openstreetmap-query-raw.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-query-raw.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,MAAM,WAAW,GAAG,6CAA6C,CAAC;AAElE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,EAAE;IACnE,KAAK,EAAE,iCAAiC;IACxC,WAAW,EACT,wGAAwG;QACxG,uGAAuG;QACvG,6CAA6C;QAC7C,qCAAqC;QACrC,sGAAsG;QACtG,4DAA4D;QAC5D,sIAAsI;IACxI,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IAE9E,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CACP,2NAA2N,CAC5N;QACH,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,gHAAgH,CACjH;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC;aACR,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aACxC,QAAQ,CACP,uIAAuI,CACxI;QACH,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACnE,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,kGAAkG,CACnG;QACH,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,QAAQ,CAAC,yEAAyE,CAAC;KACvF,CAAC;IAEF,4EAA4E;IAC5E,yEAAyE;IACzE,UAAU,EAAE;QACV,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,QAAQ,CAAC,0EAA0E,CAAC;QACvF,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,8HAA8H,CAC/H;KACJ;IAED,MAAM,EAAE;QACN;YACE,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,IAAI,EAAE,yDAAyD;YAC/D,QAAQ,EACN,2FAA2F;SAC9F;QACD;YACE,MAAM,EAAE,eAAe;YACvB,IAAI,EAAE,gBAAgB,CAAC,OAAO;YAC9B,IAAI,EAAE,2EAA2E;YACjF,SAAS,EAAE,KAAK;YAChB,QAAQ,EACN,yIAAyI;SAC5I;QACD;YACE,MAAM,EAAE,kBAAkB;YAC1B,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,+FAA+F;YACrG,QAAQ,EACN,uIAAuI;SAC1I;QACD;YACE,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,yEAAyE;YAC/E,SAAS,EAAE,IAAI;YACf,QAAQ,EACN,uHAAuH;SAC1H;KACF;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAE5B,4DAA4D;QAC5D,+FAA+F;QAC/F,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG,CAAC,IAAI,CACZ,aAAa,EACb,qHAAqH,CACtH,CAAC;QACJ,CAAC;QAED,0DAA0D;QAC1D,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,sBAAsB,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;QAChF,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1D,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,IAA2C,CAAC;gBAC7D,MAAM,MAAM,GAAG,IAAI,EAAE,MAA4B,CAAC;gBAClD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,wFAAwF;oBACxF,IAAI,IAAI,EAAE,UAAU,KAAK,GAAG,EAAE,CAAC;wBAC7B,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBACpF,CAAC;oBACD,IAAI,IAAI,EAAE,UAAU,KAAK,GAAG,EAAE,CAAC;wBAC7B,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;oBACtF,CAAC;gBACH,CAAC;qBAAM,IACL,MAAM,KAAK,aAAa;oBACxB,MAAM,KAAK,eAAe;oBAC1B,MAAM,KAAK,kBAAkB;oBAC7B,MAAM,KAAK,cAAc,EACzB,CAAC;oBACD,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;QAEzD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAE1E,GAAG,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,MAAM,CACf,mHAAmH,CACpH,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,QAAqC;YACxD,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;YACxC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,WAAW,EAAE,WAAW;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAa;YACtB,KAAK,MAAM,CAAC,cAAc,WAAW,MAAM,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,aAAa;SACzF,CAAC;QACF,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,EAAE,CAAC,IAA0C,CAAC;YAC3D,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;qBAChC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;qBAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;QACtC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -12,7 +12,7 @@ export function resolveTagInput(input) {
|
|
|
12
12
|
const hasTagValue = Boolean(input.tag_value?.trim());
|
|
13
13
|
if (hasAmenity && (hasTagKey || hasTagValue))
|
|
14
14
|
return { error: 'both' };
|
|
15
|
-
if (!hasAmenity && !hasTagKey)
|
|
15
|
+
if (!hasAmenity && (!hasTagKey || !hasTagValue))
|
|
16
16
|
return { error: 'neither' };
|
|
17
17
|
return {
|
|
18
18
|
tagKey: hasAmenity ? 'amenity' : (input.tag_key ?? ''),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openstreetmap-tag-input.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-tag-input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAI/B;IACC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAErD,IAAI,UAAU,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACvE,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"openstreetmap-tag-input.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/openstreetmap-tag-input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAI/B;IACC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAErD,IAAI,UAAU,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACvE,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAE7E,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACtD,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;KACvE,CAAC;AACJ,CAAC"}
|
|
@@ -6,6 +6,17 @@ import type { Context } from '@cyanheads/mcp-ts-core';
|
|
|
6
6
|
import type { AppConfig } from '@cyanheads/mcp-ts-core/config';
|
|
7
7
|
import type { StorageService } from '@cyanheads/mcp-ts-core/storage';
|
|
8
8
|
import type { OverpassAroundParams, OverpassBboxParams, OverpassElement, OverpassPoi, OverpassResponse } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Returns false for query-deterministic failures so withRetry does not re-submit
|
|
11
|
+
* a query that will fail identically every time. Exported for unit testing.
|
|
12
|
+
*
|
|
13
|
+
* Deterministic cases:
|
|
14
|
+
* - reason 'query_timeout' / 'result_too_large' — thrown by the service after
|
|
15
|
+
* parsing a JSON remark from Overpass (HTTP 200 with embedded error).
|
|
16
|
+
* - statusCode 400 — thrown by fetchWithTimeout with InvalidParams code before
|
|
17
|
+
* the service's manual 400 check runs (fetchWithTimeout intercepts non-2xx).
|
|
18
|
+
*/
|
|
19
|
+
export declare function isTransientOverpassError(error: unknown): boolean;
|
|
9
20
|
/**
|
|
10
21
|
* Great-circle distance in meters between two WGS84 coordinates (haversine).
|
|
11
22
|
* Accurate to well within a meter at the ≤50km radius this server supports —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overpass-service.d.ts","sourceRoot":"","sources":["../../../src/services/overpass/overpass-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"overpass-service.d.ts","sourceRoot":"","sources":["../../../src/services/overpass/overpass-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAM/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAcpB;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQhE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAS9F;AAED,qBAAa,eAAe;gBAEd,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAExD,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,aAAa;IAKrB,gDAAgD;IAChD,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM;IActD,8CAA8C;IAC9C,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM;YAepC,YAAY;IAkE1B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAK1D,2DAA2D;IAC3D,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE;CAe9D;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAEpF;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* @module services/overpass/overpass-service
|
|
4
4
|
*/
|
|
5
5
|
import { createHash } from 'node:crypto';
|
|
6
|
-
import { serviceUnavailable, timeout as timeoutError } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
-
import { withRetry } from '@cyanheads/mcp-ts-core/utils';
|
|
6
|
+
import { McpError, serviceUnavailable, timeout as timeoutError, } from '@cyanheads/mcp-ts-core/errors';
|
|
7
|
+
import { fetchWithTimeout, withRetry } from '@cyanheads/mcp-ts-core/utils';
|
|
8
8
|
import { getServerConfig } from '../../config/server-config.js';
|
|
9
9
|
/** Cache TTL for Overpass results: 10 minutes (more volatile than geocoding). */
|
|
10
10
|
const CACHE_TTL_SECONDS = 600;
|
|
@@ -12,6 +12,29 @@ const CACHE_TTL_SECONDS = 600;
|
|
|
12
12
|
const OVERPASS_TIMEOUT_PATTERN = /runtime error|query timed out|timed out/i;
|
|
13
13
|
/** Overpass out-of-memory error patterns. */
|
|
14
14
|
const OVERPASS_OOM_PATTERN = /out of memory|query run out/i;
|
|
15
|
+
/** Client-side deadline per attempt (Overpass queries can run long). */
|
|
16
|
+
const OVERPASS_CLIENT_TIMEOUT_MS = 90_000;
|
|
17
|
+
/**
|
|
18
|
+
* Returns false for query-deterministic failures so withRetry does not re-submit
|
|
19
|
+
* a query that will fail identically every time. Exported for unit testing.
|
|
20
|
+
*
|
|
21
|
+
* Deterministic cases:
|
|
22
|
+
* - reason 'query_timeout' / 'result_too_large' — thrown by the service after
|
|
23
|
+
* parsing a JSON remark from Overpass (HTTP 200 with embedded error).
|
|
24
|
+
* - statusCode 400 — thrown by fetchWithTimeout with InvalidParams code before
|
|
25
|
+
* the service's manual 400 check runs (fetchWithTimeout intercepts non-2xx).
|
|
26
|
+
*/
|
|
27
|
+
export function isTransientOverpassError(error) {
|
|
28
|
+
if (error instanceof McpError) {
|
|
29
|
+
const reason = error.data?.reason;
|
|
30
|
+
if (reason === 'query_timeout' || reason === 'result_too_large')
|
|
31
|
+
return false;
|
|
32
|
+
// fetchWithTimeout throws InvalidParams for HTTP 400 — malformed query, never transient
|
|
33
|
+
if (error.data?.statusCode === 400)
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
15
38
|
/**
|
|
16
39
|
* Great-circle distance in meters between two WGS84 coordinates (haversine).
|
|
17
40
|
* Accurate to well within a meter at the ≤50km radius this server supports —
|
|
@@ -73,7 +96,7 @@ export class OverpassService {
|
|
|
73
96
|
return cached;
|
|
74
97
|
}
|
|
75
98
|
const result = await withRetry(async () => {
|
|
76
|
-
const response = await
|
|
99
|
+
const response = await fetchWithTimeout(this.endpoint(), OVERPASS_CLIENT_TIMEOUT_MS, ctx, {
|
|
77
100
|
method: 'POST',
|
|
78
101
|
headers: {
|
|
79
102
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
@@ -82,20 +105,9 @@ export class OverpassService {
|
|
|
82
105
|
body: `data=${encodeURIComponent(query)}`,
|
|
83
106
|
signal: ctx.signal,
|
|
84
107
|
});
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
if (response.status === 400) {
|
|
91
|
-
const body = await response.text();
|
|
92
|
-
throw serviceUnavailable(`Overpass API returned HTTP 400 — malformed query syntax. ${body.slice(0, 200)}`, { reason: 'query_error' });
|
|
93
|
-
}
|
|
94
|
-
if (!response.ok) {
|
|
95
|
-
throw serviceUnavailable(`Overpass API returned HTTP ${response.status}`, {
|
|
96
|
-
status: response.status,
|
|
97
|
-
});
|
|
98
|
-
}
|
|
108
|
+
// fetchWithTimeout already handles all non-2xx responses (429 → RateLimited,
|
|
109
|
+
// 400 → InvalidParams, 5xx → ServiceUnavailable) and throws before reaching here.
|
|
110
|
+
// The response arriving here is always HTTP 2xx.
|
|
99
111
|
const text = await response.text();
|
|
100
112
|
if (/^\s*<(!DOCTYPE\s+html|html[\s>])/i.test(text)) {
|
|
101
113
|
throw serviceUnavailable('Overpass returned an HTML page instead of JSON — likely rate-limited.');
|
|
@@ -119,6 +131,7 @@ export class OverpassService {
|
|
|
119
131
|
operation: 'overpass.query',
|
|
120
132
|
context: ctx,
|
|
121
133
|
baseDelayMs: 2000,
|
|
134
|
+
isTransient: isTransientOverpassError,
|
|
122
135
|
signal: ctx.signal,
|
|
123
136
|
});
|
|
124
137
|
await ctx.state.set(cacheKey, result, { ttl: CACHE_TTL_SECONDS });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overpass-service.js","sourceRoot":"","sources":["../../../src/services/overpass/overpass-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,
|
|
1
|
+
{"version":3,"file":"overpass-service.js","sourceRoot":"","sources":["../../../src/services/overpass/overpass-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/openstreetmap-mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"mcpName": "io.github.cyanheads/openstreetmap-mcp-server",
|
|
5
5
|
"description": "Geocode, reverse geocode, and run Overpass spatial queries on OpenStreetMap data via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
package/server.json
CHANGED
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
"url": "https://openstreetmap.caseyjhand.com/mcp"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
|
-
"version": "0.2.
|
|
15
|
+
"version": "0.2.4",
|
|
16
16
|
"packages": [
|
|
17
17
|
{
|
|
18
18
|
"registryType": "npm",
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/openstreetmap-mcp-server",
|
|
21
21
|
"runtimeHint": "bun",
|
|
22
|
-
"version": "0.2.
|
|
22
|
+
"version": "0.2.4",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"description": "User-Agent sent to Nominatim and Overpass. Required by usage policy.",
|
|
44
44
|
"format": "string",
|
|
45
45
|
"isRequired": false,
|
|
46
|
-
"default": "openstreetmap-mcp-server/0.2.
|
|
46
|
+
"default": "openstreetmap-mcp-server/0.2.4"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
"name": "OSM_OVERPASS_BASE_URL",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
70
70
|
"identifier": "@cyanheads/openstreetmap-mcp-server",
|
|
71
71
|
"runtimeHint": "bun",
|
|
72
|
-
"version": "0.2.
|
|
72
|
+
"version": "0.2.4",
|
|
73
73
|
"packageArguments": [
|
|
74
74
|
{
|
|
75
75
|
"type": "positional",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
"description": "User-Agent sent to Nominatim and Overpass. Required by usage policy.",
|
|
128
128
|
"format": "string",
|
|
129
129
|
"isRequired": false,
|
|
130
|
-
"default": "openstreetmap-mcp-server/0.2.
|
|
130
|
+
"default": "openstreetmap-mcp-server/0.2.4"
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
133
|
"name": "OSM_OVERPASS_BASE_URL",
|