Skip to content

MCP Tools for PDS - #30

Open
iamsims wants to merge 21 commits into
NASA-IMPACT:developfrom
iamsims:develop
Open

MCP Tools for PDS #30
iamsims wants to merge 21 commits into
NASA-IMPACT:developfrom
iamsims:develop

Conversation

@iamsims

@iamsims iamsims commented Feb 13, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

Comment thread docs/testing_instruction.md
@NISH1001

Copy link
Copy Markdown
Collaborator

@iamsims also provide better descirption for PR.

@NISH1001 NISH1001 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1st pass:
Couple of observations

  • You can avoid usingAnnotated to primite types like float, int, str etc and direclty use Field(...) level constraints there
  • Use loguru
  • Use base url from env. the comment says env but env is not impleented

Comment thread akd_ext/tools/pds/sbn/list_sources.py Outdated
Comment thread akd_ext/tools/pds/sbn/search_coordinates.py Outdated
Comment thread akd_ext/tools/pds/sbn/search_coordinates.py Outdated
Comment thread akd_ext/tools/pds/img/count.py Outdated
Comment thread akd_ext/tools/pds/sbn/list_sources.py Outdated
Comment thread akd_ext/tools/pds/sbn/search_coordinates.py Outdated
- Add tools for 6 PDS APIs: IMG, ODE, OPUS, PDS4, PDS Catalog, and SBN
- Add Literal types derived from sde-data-agents resources (without resources)
- Validate parity extensively for IMG, ODE, OPUS, PDS4, and PDS Catalog

Note: SBN parity validation still TODO
- Move testing instructions to md
- Add loading base url from env with defaults
- Use loguru for logging
- Remove annotated type and use field type
iamsims and others added 11 commits February 26, 2026 22:56
Several PDS4/img/opus/pds_catalog search tools had hardcoded le=25/le=50
caps on their limit params, which could return large enough payloads to
overflow orchestrator context on heavy per-record responses. Replace
bare literals with named MAX_*_LIMIT constants and lower the ones with
the heaviest per-record payload or biggest cap (pds4 products/bundles/
collections, img search rows, opus search, pds_catalog search/list),
while keeping lighter context-lookup tools (investigations/targets/
instruments/instrument_hosts, facets) at their existing cap since a
smaller max there would hurt legitimate keyword-browsing use.

Also add akd_ext/tools/pds/README.md documenting every PDS tool's
default/max limit for future reference.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ator

Add a cap-and-pagination sentence to every capped search/list tool's
docstring so the orchestrator knows, without guessing, whether hitting
the limit means "page with offset/startobs" or "no pagination exists,
narrow the query instead."

Fix a silent-truncation gap in pds_catalog list_missions/list_targets:
they had no total-count signal at all, so if there were more than 30
missions/targets the orchestrator got a truncated list with no way to
detect it. CatalogIndex/PDSCatalogClient.list_missions/list_targets
now return (items, total) instead of just items, and the tools expose
total_available + has_more in their output schemas.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
akd_ext's MCP server transitively imports bs4 via akd-core's
web_scrapers module, but it was never declared directly, so
environments without it as an incidental transitive dep (like the
Docker build) fail fastmcp inspect with ModuleNotFoundError.
akd-core's develop branch deleted akd.tools.search.code_search
(SDECodeSearchTool and friends) with no replacement in commit 771d7c3,
which broke akd_ext's RepositorySearchTool (it subclasses
SDECodeSearchTool directly). Pin to f2713ba, the last akd-core commit
before that removal, until RepositorySearchTool is migrated or
reimplemented against whatever comes next upstream.
…endency

This server only hosts PDS MCP tools, so remove code_search
(RepositorySearchTool/CodeSignalsSearchTool, which depended on
akd.tools.search.code_search - deleted upstream in akd-core with no
replacement) and sde_search, along with their tests and the now-unused
PyGithub dependency. Revert akd-core back to tracking @develop since
we no longer need the pre-removal pin.

Verified locally with `docker build` mirroring the FastMCP Cloud build
steps (git+uv install, fastmcp inspect) end-to-end.
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.

2 participants