[DO NOT MERGE] GeoUI Intent MCP Tool - #107
Open
sanzog03 wants to merge 49 commits into
Open
Conversation
…deduplication instead of using umm.Name. 1. Prefer BestAvailableExternalIdentifier when set and non-junk 2. Fall back to umm.Name with _v\d+_(STD|NRT) suffix stripped Add _dedupe_layers() to collapse duplicate (layer_id, viz_type) pairs that CMR returns for NRT/STD revisions or test-provider duplicates, preferring higher-quality sources and richer metadata.
…zation compatibility while preserving the fixed-length invariant via Pydantic validators Switch and fields in WorldviewPermalinkInputSchema from to with min_length/max_length=4 constraints.
…R collection concept_id and returns a URL opening that dataset's landing page on search.earthdata.nasa.gov.
The dotted filename was unimportable as a Python module — Python treats dots as package separators, not file-name parts — so in agents/__init__.py raised ModuleNotFoundError and the whole agents package failed to load. Rename to ieso_worldview.py and update the matching import line in agents/__init__.py. No behavior change beyond making the package importable.
Introduce a portable application-state schema (GeoIntent) for
geospatial-visualization UIs, plus a variant IESO Worldview agent
that emits and consumes GeoIntent instead of raw permalink params.
New module :
- core.py — GeoIntent, LayerRef, Viewport, TimeWindow with a
STAC-style URI-identified extension mechanism
- extensions/{compare,chart,raster_styling}.py — three opt-in
extensions covering Worldview's compare mode, charting, and
per-layer styling
- adapter.py + url_parser.py — bidirectional translation between
GeoIntent and the existing WorldviewPermalinkInputSchema; the
permalink tool itself is reused unchanged
- tools.py — local AKD BaseTool wrappers (GeoUIRenderIntentTool,
GeoUIGetStateTool) plus a smoke test
- agent.py — IESOWorldviewGeoUIAgent: drops the permalink MCP and
wires the two local tools; system prompt rewrites Step 7 around
GeoIntent and adds Step 6.5 for state observation when iterating
- spec.md — GeoUI Protocol v1.0.0 specification
- benchmark/workflows.md — three candidate iterative-analysis
workflows for the schema-vs-VLM comparison
2. currently earthdata is broken, so commenting the dependent tools. 3. vector db mcp authorization issue, so commenting it out for now.
Wire Playwright MCP into IESOWorldviewGeoUIAgent so it opens rendered Worldview URLs in a headed Chromium via browser_navigate and reads the live URL back through browser_evaluate before each refinement, so the user can pan, zoom, or scrub directly between turns. The Marimo notebook pre-enters the stdio server once via AsyncExitStack — MCPServer.__aenter__'s reference counting keeps a single Chromium alive across the whole conversation instead of cold-starting per turn.
The handler was threading forward each turn, turning pydantic_ai's per-run into a session-wide cap that tripped after ~5 tool-heavy turns. Pass to so each turn starts fresh (AKD's base validator hard-caps at 50, so this can't be fixed via the config field) and track cumulative usage manually in the session dict. refactor(ieso_w_geoui): attach Playwright MCP via CDP, drop pre-enter Holding open across marimo cell tasks raised an anyio cross-task , so launch Chromium externally with and let each create a fresh MCP that attaches via — the MCP's scope stays inside the arun task, while Chromium state survives outside Python. Add to manage the external Chromium, auto-installing Playwright's bundled Chromium on first run.
Wrap the chat handler's in a that cancels and awaits the task on any exit path so hitting marimo's stop button actually stops the agent — previously a detached arun kept firing tools in the background, which is how a ~50-call loop in one turn surprised the user with continued activity and corrupted state going into the next turn. Drop the polling interval from 150 ms to 500 ms and batch all newly-fired tool names into one yield per tick, cutting chunk count ~10× to reduce the chances of marimo's chat protocol raising under heavy tool use.
… way of loading auth key for mcp. i.e. with bearer
Move the GeoUI Protocol (core schema, Worldview adapter, URL parser, extensions) into akd_ext/tools/geoui and register the render-intent and get-state tools with @mcp_tool, since only akd_ext* is packaged. ieso_w_geoui keeps working via re-export shims; round-trip and registration tests added.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
pr to trigger the fast-mcp-cloud preview deployment.