Public MCP

Streethenge MCP server

A read-only JSON-RPC MCP endpoint for agents that need to search places, inspect nearby roads, calculate geometric street alignments, and link users back to Streethenge.

Endpoint: https://www.streethenge.com/mcp

Descriptor: /mcp.json

Transport: JSON-RPC 2.0 over HTTP POST

Rate limit: 60 requests per minute per client IP on the public endpoint.

Tools

search_place

Use this when the user gives a street, address, landmark, or place name and you need candidate coordinates before looking up roads or calculating alignments. Returns Nominatim place candidates; next usually call lookup_roads for the chosen candidate.

lookup_roads

Use this when latitude and longitude are known and the user needs nearby street candidates or a bearing for a selected point. Returns raw road geometries plus summarized candidate segments with direction labels. If several rows share a name, show their bearings and distances before choosing.

calculate_alignment

Use this when latitude, longitude, and a street bearing are already known. Returns geometric sunrise/sunset or moonrise/moonset alignment windows, best events, timezone, and map/lite URLs. This does not search streets; call lookup_roads first if the bearing is unknown.

scan_alignments_nearby

Use this when the user asks for possible alignment opportunities near an area rather than for one known street. This is heavier than calculate_alignment because it calls Overpass to scan named nearby streets; keep radius modest and explain that third-party availability may affect results.

build_alignment_urls

Use this when you already have coordinates and bearing and only need shareable Streethenge URLs. Returns the full map URL and lower-bandwidth lite URL; it does not calculate dates.

build_scan_urls

Use this when you already have area coordinates and only need shareable URLs for the nearby-scan flow. Returns the full map URL and lower-bandwidth lite URL; it does not call Overpass.

render_alignment_card

Use this only after calculate_alignment when you already have one selected street alignment with complete display fields. Pass schemaVersion: 1, card, and urls. Do not call it with partial data or placeholders.

render_road_choice_panel

Use this only after lookup_roads when several candidate segments share a street name or the geometry is curved. Do not call it until you have the real road list to show.

render_nearby_scan_panel

Use this only after scan_alignments_nearby when you already have the real ranked event list. Do not call it with placeholders or before the scan result is available.

Example requests

Send these as HTTP POST requests to /mcp with Content-Type: application/json.

Initialize

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {}
}

Calculate one known street

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "calculate_alignment",
    "arguments": {
      "lat": 40.7534,
      "lon": -73.9807,
      "bearing": 299.1,
      "body": "sun",
      "streetName": "West 42nd Street",
      "placeName": "Manhattan, New York"
    }
  }
}

Scan nearby named streets

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "scan_alignments_nearby",
    "arguments": {
      "lat": 54.68783,
      "lon": 25.27555,
      "radius": 1200,
      "body": "sun",
      "placeName": "Vilnius, Lithuania"
    }
  }
}

Caveats and privacy

Streethenge calculates geometric alignments. It does not model local horizon elevation, building blockage, trees, weather, safety, or access. Place search uses Nominatim, road lookup and nearby scans use Overpass API, map display uses OpenStreetMap tiles on the website, and hosting is on Vercel.

The public MCP endpoint is read-only. It does not create accounts, save searches on the server, upload files, or send email. For issues, contact [email protected]. See also Privacy.