Skip to content

feat: ground_location_tool renders as a live GL JS map#194

Closed
mattpodwysocki wants to merge 6 commits into
feat/map-matching-app-toolfrom
feat/ground-location-app-tool
Closed

feat: ground_location_tool renders as a live GL JS map#194
mattpodwysocki wants to merge 6 commits into
feat/map-matching-app-toolfrom
feat/ground-location-app-tool

Conversation

@mattpodwysocki
Copy link
Copy Markdown
Contributor

@mattpodwysocki mattpodwysocki commented May 27, 2026

Same pattern. Drops ground_location_app_tool; existing tool emits dual UI hints. 717 tests pass. Stacked on #193.

Sixth in the MCP Apps series. Reverse-geocodes a coordinate to a place
name and (if a query is given) finds matching nearby POIs, then renders
origin + POIs on a live Mapbox GL JS map. Origin gets a dark anchor
marker; POIs get numbered orange pins with name/category/address popups.

A focused, app-friendly sibling of the full ground_location_tool — same
"place + nearby" intent, optimized for visual rendering instead of text.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mattpodwysocki and others added 4 commits May 27, 2026 11:44
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…pp-tool

# Conflicts:
#	CHANGELOG.md
#	src/tools/index.ts
#	src/tools/toolRegistry.ts
Drops ground_location_app_tool. Existing ground_location_tool now emits
meta.ui + inline rawHtml using a shared renderGroundLocationAppHtml,
extracting origin + nearby_pois from its rich composite output.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mattpodwysocki mattpodwysocki changed the title feat: ground_location_app_tool — place context on an interactive map feat: ground_location_tool renders as a live GL JS map Jun 1, 2026
@mattpodwysocki mattpodwysocki marked this pull request as draft June 1, 2026 20:43
@mattpodwysocki
Copy link
Copy Markdown
Contributor Author

Superseded by #199.

This PR (and the rest of the per-tool app stack: #190, #191, #192, #193, #194, #195) declares its own meta.ui.resourceUri and emits inline createUIResource via @mcp-ui/server. In practice that approach has two blockers:

  1. Chained tool calls only render the last iframe. Claude Desktop dedupes/short-circuits earlier iframes in a chain, so geocode→directions or isochrone→union flows only paint the final tool's map.
  2. Depends on @mcp-ui/server, which feat: render_map_tool — single visualization primitive (server-side refs) #199 removes.

#199 funnels all rendering through one terminal render_map_tool primitive. Every data tool stores a MapAppPayload server-side and returns a mapbox://temp/map-payload-<uuid> ref; the LLM passes the refs to render_map_tool, which merges them and renders. Closing in favor of that approach.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant