Add get_version_info tool — fleet identity attestation (v0.2.1)#1
Merged
Conversation
Implements the fleet rollout per IONIS-AI/ionis-devel#49. solar-mcp is the exemplar; same diff shape fans out to the other 9 public servers. The new tool returns a standardized envelope: { "service_name": "solar-mcp", "service_version": "0.2.1", "spec_version": "noaa-swpc-v1" } This is the minimum-viable identity attestation at the tool layer — agents can now confirm fleet alignment with a single call per server, without going outside the MCP protocol. Changes: - src/solar_mcp/__init__.py — add __spec_version__ Final constant, modernize to match the adif-mcp pattern (Final types, explicit PackageNotFoundError handling) - src/solar_mcp/server.py — add get_version_info tool + _version_info_payload helper for direct test access without FastMCP wrapping - tests/test_tools.py — add TestGetVersionInfo class with 5 unit tests (SOLAR-L2-041 through SOLAR-L2-045) - README.md — add tool to the tools table - CHANGELOG.md — new file, follows Keep a Changelog format - pyproject.toml — bump 0.2.0 → 0.2.1 Test count: 42 unit + 6 security = 48 tests, all green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Closes the CI gap noted on PR #1: solar-mcp previously had only publish.yml (tag-triggered), so PRs landed without automated test runs. Workflow runs on PRs and pushes to main: - Multi-Python matrix (3.10, 3.11, 3.12, 3.13) - Unit tests (tests/test_tools.py — 42 tests) - Security tests (tests/test_security.py — 6 tests) - ci-all-green aggregator gates branch protection Lint deferred — solar-mcp has no ruff/mypy config yet. If we want to standardize that across the fleet, treat it as a separate convention (fleet-wide pyproject.toml [tool.ruff] adoption). Pattern locks for fan-out: same ci.yml shape lands on the other 9 public MCP servers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
Implements the fleet rollout per IONIS-AI/ionis-devel#49. solar-mcp is the exemplar — same diff shape fans out to the other 9 public servers next.
The new tool returns a standardized envelope:
{ "service_name": "solar-mcp", "service_version": "0.2.1", "spec_version": "noaa-swpc-v1" }This is the minimum-viable identity attestation at the tool layer — agents can now confirm fleet alignment with a single call per server, without going outside the MCP protocol.
Why
Surfaced 2026-05-15 when Patton hit divergent values from
solar:solar_conditionsbetween Newton (9975WX) and Claude Desktop (M3). With no in-protocol way to ask "what version are you?", agents can't attribute divergence to version drift vs live-data timing vs config delta.get_version_infocloses that gap fleet-wide.Changes
src/solar_mcp/__init__.py— add__spec_version__Finalconstant, modernize to mirror theadif-mcppatternsrc/solar_mcp/server.py— addget_version_infotool +_version_info_payloadhelper for direct test access without FastMCP wrappingtests/test_tools.py—TestGetVersionInfoclass with 5 unit tests (SOLAR-L2-041 .. SOLAR-L2-045)README.md— tool added to the tools tableCHANGELOG.md— new file, Keep a Changelog formatpyproject.toml— version bump 0.2.0 → 0.2.1Test plan
pytest tests/test_tools.py)pytest tests/test_security.py)Convention reference
Locks the pattern for the remaining 9 public MCPs:
Plus inbox-mcp (private) and n1mm-mcp.