Skip to content

[DO NOT MERGE] GeoUI Intent MCP Tool - #107

Open
sanzog03 wants to merge 49 commits into
developfrom
feature/geoui-mcp-tools
Open

[DO NOT MERGE] GeoUI Intent MCP Tool#107
sanzog03 wants to merge 49 commits into
developfrom
feature/geoui-mcp-tools

Conversation

@sanzog03

Copy link
Copy Markdown
Collaborator

pr to trigger the fast-mcp-cloud preview deployment.

sanzog03 added 30 commits April 30, 2026 11:42
…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
sanzog03 added 19 commits May 13, 2026 00:07
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.
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