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.
Files changed (2) hide show
  1. package/dist/index.js +17 -6
  2. 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
- overpassQuery = `[out:json][timeout:25];\n(${queryRaw}(around:${radiusMeters},${centerPoint.lat},${centerPoint.lng}););\nout center;`;
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
- overpassQuery = `[out:json][timeout:25][bbox:${bboxObj.lat1},${bboxObj.lng1},${bboxObj.lat2},${bboxObj.lng2}];\n(${queryRaw};);\nout center;`;
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
- acc.push({
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.2.6",
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",