spedas-codex — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited spedas-codex (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
spedas_mcp is the SPEDAS organization MCP server for agentic heliophysics workflows. It presents one SPEDAS-facing data layer and organizes capabilities by data source category instead of by the internal backend packages used to implement them.
The current design follows Jason's A+B direction:
cdaweb, pds, and spice/geometry.The xhelio-* packages are implementation backends. They should stay visible to maintainers, but they should not be the user's first mental model.
spedas-mcpspedas_mcpStart here when the user asks for data, datasets, parameters, products, archives, or cache status.
browse_data_sources(source_type="all", query=None) — browse SPEDAS data source categories, or drill into one category.load_data_source(source_type, source_id) — load source context, e.g. a CDAWeb observatory, PDS mission, or SPICE mission/frame context.browse_data_parameters(source_type, dataset_id, dataset_ids=None) — browse parameters/metadata for CDAWeb or PDS datasets; for SPICE, returns geometry/frame context.fetch_data_product(source_type, dataset_id, parameters, start=None, stop=None, output_dir=None, format="csv", limit=None) — unified measurement/archive data fetch for CDAWeb/PDS. SPICE requests are routed to geometry tools instead. limit is currently a CDAWeb-oriented safety control; PDS fetches should be narrowed by time/parameters.manage_data_cache(source_type="all", action="status", cache_dir=None, mission=None) — unified cache status/maintenance for the source categories. Per-call cache_dir is reported as guidance only; backend cache roots are configured by the MCP server environment.Supported source_type values:
| source_type | Use for | Main data-layer path |
|---|---|---|
cdaweb | heliophysics observatory time-series, plasma/fields/particles, solar wind, CDF-like intervals | browse_data_sources → load_data_source → browse_data_parameters → fetch_data_product |
pds | Planetary Plasma Interactions archives, planetary mission datasets, PDS metadata/products | browse_data_sources → load_data_source → browse_data_parameters → fetch_data_product |
spice | geometry, ephemeris, trajectory, distance, coordinate frames/transforms | browse_data_sources → load_data_source → geometry tools |
Start here for open-ended science requests.
spedas_overview() — compact map of capability groups and recommended workflow.search_spedas_data_sources(question, target=None, observables=None) — recommend which data source categories should lead a request.plan_spedas_observation(science_goal, start=None, stop=None, target=None, observables=None, data_sources=None) — produce a source-specific plan before fetching data.compare_cdaweb_pds_spice(science_goal="") — explain source boundaries and choose the right source family.create_spedas_analysis_bundle(study_name, output_dir, ...) — create a request/provenance scaffold with requests/, data/, plots/, provenance/, and notes/ folders.SPICE is exposed as a data source category, but geometry operations are clearer as explicit tools:
list_spice_missions()get_ephemeris(mission, target, start, stop, step="1h", frame="J2000", observer=None)compute_distance(mission, target, observer, start, stop, step="1h")transform_coordinates(mission, coordinates, from_frame, to_frame, epoch=None)list_coordinate_frames(mission=None)manage_spice_kernels(action, mission=None, cache_dir=None)These remain available for clients that already know the source-specific operations:
browse_observatories, load_observatory, browse_parameters, fetch_data, manage_cdaweb_cachebrowse_pds_missions, load_pds_mission, browse_pds_parameters, fetch_pds_data, manage_pds_cachemanage_spice_kernelsCompatibility tools are supported for existing clients, but their MCP descriptions now mark them as compatibility entries and point to the unified alternatives. Hiding, renaming, or moving them would be a breaking API pass and should not happen without maintainer review. See docs/public_api_strategy.md for the compatibility map and deprecation guidance.
spedas_overview().search_spedas_data_sources(...) or plan_spedas_observation(...).browse_data_sources(source_type="all")browse_data_sources(source_type="cdaweb" | "pds" | "spice")load_data_source(...)browse_data_parameters(...)fetch_data_product(...) for CDAWeb/PDS measurement/archive productscreate_spedas_analysis_bundle(...) and write fetched files under the generated data/ directory.git clone https://github.com/spedas/spedas_mcp.git
cd spedas_mcp
uv sync --extra dev --extra mcp
uv run --extra mcp python -m spedas_mcpRun tests and smoke checks:
uv run --extra dev --extra mcp python -m pytest -q
uv run --extra mcp python scripts/smoke_mcp_list_tools.py --json
uv run --extra dev --extra mcp python scripts/validate_plugin_packages.pyThe list-tools smoke starts the stdio MCP server with isolated temporary cache directories, performs MCP initialize + list_tools, and verifies the expected advertised tool names. It does not fetch CDAWeb/PDS data or download SPICE kernels.
Example stdio configuration:
{
"mcpServers": {
"spedas": {
"command": "uv",
"args": ["run", "--extra", "mcp", "python", "-m", "spedas_mcp"],
"cwd": "/path/to/spedas_mcp"
}
}
}For plugin-style distribution, the canonical standalone wrappers now live in separate SPEDAS org repos:
The in-repo plugins/spedas-claude/ and .agents/plugins/spedas-codex/ directories remain lightweight development examples and compatibility fixtures; runtime-specific packaging should evolve in the standalone repos while this repository owns the MCP server itself.
spedas_mcp should be thick at the SPEDAS data/workflow layer and thin at the backend implementation layer:
data layer.See docs/maintainer_note.md and docs/examples/agent_workflow.md for the current framing.
docs/examples/juno_pds_spice_workflow.md — Juno MAG/PDS discovery plus SPICE geometry planning, including current caveats.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.