bbox-mcp-server 1.2.6 → 1.3.0
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/dist/index.js +17 -6
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -619,6 +619,10 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
619
619
|
limit: {
|
|
620
620
|
type: "number",
|
|
621
621
|
description: "Maximum number of elements to return. Default is 100. Increase if you need more results."
|
|
622
|
+
},
|
|
623
|
+
return_geometry: {
|
|
624
|
+
type: "boolean",
|
|
625
|
+
description: "If true, returns the full geometry (polygon/polyline) for ways and relations instead of just the center point. Necessary for area or length calculations. Defaults to false."
|
|
622
626
|
}
|
|
623
627
|
},
|
|
624
628
|
required: ["query"],
|
|
@@ -843,6 +847,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
843
847
|
const queryRaw = args.query;
|
|
844
848
|
const limit = args.limit || 100;
|
|
845
849
|
const radiusMeters = args.radius_meters;
|
|
850
|
+
const returnGeometry = args.return_geometry || false;
|
|
846
851
|
const useCircle = typeof radiusMeters === 'number' && radiusMeters > 0;
|
|
847
852
|
if (!queryRaw) {
|
|
848
853
|
return { content: [{ type: "text", text: "Error: 'query' is required (e.g. `node[\"amenity\"=\"restaurant\"]`)." }], isError: true };
|
|
@@ -881,7 +886,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
881
886
|
else {
|
|
882
887
|
return { content: [{ type: "text", text: "Error: Either 'location' or 'bbox' argument must be provided." }], isError: true };
|
|
883
888
|
}
|
|
884
|
-
|
|
889
|
+
const outDirective = returnGeometry ? "out geom;" : "out center;";
|
|
890
|
+
overpassQuery = `[out:json][timeout:25];\n(${queryRaw}(around:${radiusMeters},${centerPoint.lat},${centerPoint.lng}););\n${outDirective}`;
|
|
885
891
|
searchModeLabel = `circle — ${radiusMeters}m radius around (${centerPoint.lat.toFixed(5)}, ${centerPoint.lng.toFixed(5)})`;
|
|
886
892
|
}
|
|
887
893
|
else {
|
|
@@ -906,7 +912,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
906
912
|
else {
|
|
907
913
|
return { content: [{ type: "text", text: "Error: Either 'location' or 'bbox' argument must be provided." }], isError: true };
|
|
908
914
|
}
|
|
909
|
-
|
|
915
|
+
const outDirective = returnGeometry ? "out geom;" : "out center;";
|
|
916
|
+
overpassQuery = `[out:json][timeout:25][bbox:${bboxObj.lat1},${bboxObj.lng1},${bboxObj.lat2},${bboxObj.lng2}];\n(${queryRaw};);\n${outDirective}`;
|
|
910
917
|
searchModeLabel = `bounding box`;
|
|
911
918
|
}
|
|
912
919
|
log('info', `search_overpass starting`, { query: queryRaw, mode: useCircle ? 'circle' : 'bbox', radius_meters: radiusMeters });
|
|
@@ -961,16 +968,20 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
961
968
|
if (seenIds.has(e.id))
|
|
962
969
|
return acc;
|
|
963
970
|
seenIds.add(e.id);
|
|
964
|
-
const lat = e.lat ?? e.center?.lat;
|
|
965
|
-
const lon = e.lon ?? e.center?.lon;
|
|
971
|
+
const lat = e.lat ?? e.center?.lat ?? e.geometry?.[0]?.lat;
|
|
972
|
+
const lon = e.lon ?? e.center?.lon ?? e.geometry?.[0]?.lon;
|
|
966
973
|
if (lat !== undefined && lon !== undefined) {
|
|
967
|
-
|
|
974
|
+
const el = {
|
|
968
975
|
id: e.id,
|
|
969
976
|
type: e.type,
|
|
970
977
|
name: e.tags?.name || "Unnamed",
|
|
971
978
|
coordinates: { lat, lon },
|
|
972
979
|
tags: e.tags || {}
|
|
973
|
-
}
|
|
980
|
+
};
|
|
981
|
+
if (returnGeometry && e.geometry) {
|
|
982
|
+
el.geometry = e.geometry;
|
|
983
|
+
}
|
|
984
|
+
acc.push(el);
|
|
974
985
|
}
|
|
975
986
|
return acc;
|
|
976
987
|
}, []);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bbox-mcp-server",
|
|
3
3
|
"mcpName": "io.github.iamvibhorsingh/bbox-mcp-server",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.3.0",
|
|
5
5
|
"description": "The geospatial toolkit for AI agents — query, convert, and verify spatial data with zero config. 6 tools for bounding boxes, coordinate projection, H3 indexing, OpenStreetMap queries, and shareable map verification links.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "MIT",
|