noaa-spaceweather-mcp-server
이 MCP로 할 수 있는 일
Provides NOAA space-weather conditions, alerts, geomagnetic indices, aurora forecasts, solar activity, and solar-wind measurements.
도구
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'active_only': {'type': 'boolean', 'default': True, 'description': 'When true (default), return only in-force Warnings, Watches, and Alerts. Excluded: Summaries and unrecognized products; products whose validity end has passed; cancellation notices; any product a later cancellation names by serial; and all but the newest record carrying the "THIS SUPERSEDES ANY/ALL PRIOR WATCHES IN EFFECT" line. Counts per reason ride in the exclusions enrichment field. Set false to return every product in the window, cancellations included (flagged by the cancelled field).'}, 'max_age_hours': {'type': 'number', 'default': 48, 'maximum': 720, 'minimum': 1, 'description': 'How far back to look for products, in hours (default 48). The SWPC feed retains all historical records, so this bounds the candidate set rather than declaring what is current. Under active_only=true a product whose validity end is still in the future is returned even when its issue time falls outside this window â\x80\x94 a multi-day Watch would otherwise disappear while a day it forecasts a storm for is still running. Under active_only=false it is literal and cuts at exactly the requested age.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['alerts', 'totalCount', 'activeOnly', 'fetchedAt']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['feed_unavailable', 'feed_moved'], 'description': 'Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'alerts': {'type': 'array', 'items': {'type': 'object', 'required': ['productId', 'messageCode', 'productType', 'level', 'noaaScale', 'cancelled', 'serialNumber', 'phenomenon', 'issueDatetime', 'validFrom', 'validTo', 'message'], 'properties': {'level': {'type': 'number', 'description': 'NOAA scale level 0â\x80\x935 stated in the body; 0 means no scale is stated, not zero severity.'}, 'message': {'type': 'string', 'description': 'Full plain-text message.'}, 'validTo': {'type': ['string', 'null'], 'description': 'ISO 8601 UTC validity end; for a Watch, the end of its last listed storm day. Null when nothing states or implies an end.'}, 'cancelled': {'type': 'boolean', 'description': 'True when this record cancels an earlier product; the cancelled product itself stays false. Always false under active_only=true, which drops both.'}, 'noaaScale': {'type': ['string', 'null'], 'description': 'NOAA scale stated in the body, e.g. "G1"; null when none.'}, 'productId': {'type': 'string', 'description': 'Short SWPC product ID, e.g. "K04W".'}, 'validFrom': {'type': ['string', 'null'], 'description': 'ISO 8601 UTC validity start stated in the body; null when none.'}, 'phenomenon': {'type': 'string', 'description': 'Phenomenon from the scale letter, e.g. "Geomagnetic".'}, 'messageCode': {'type': 'string', 'description': 'Full message code from the body, e.g. "WARK04".'}, 'productType': {'enum': ['Warning', 'Watch', 'Alert', 'Summary', 'Other'], 'type': 'string', 'description': 'Product type, from the code prefix.'}, 'serialNumber': {'type': ['string', 'null'], 'description': 'SWPC serial number, e.g. "1125"; null when absent. Unique only within messageCode; the Cancel, Extension to, and Continuation of Serial Number lines in message point at it.'}, 'issueDatetime': {'type': 'string', 'description': 'ISO 8601 issue time.'}}, 'description': 'One SWPC product.', 'additionalProperties': False}, 'description': 'Matching SWPC products.'}, 'notice': {'type': 'string', 'description': 'Set when no products were returned.'}, 'fetchedAt': {'type': 'string', 'description': 'ISO 8601 fetch time.'}, 'activeOnly': {'type': 'boolean', 'description': 'Echo of active_only: true for the in-force set, false for every product in the window.'}, 'exclusions': {'type': 'object', 'required': ['agedOut', 'productType', 'cancellationRecord', 'cancelledBySerial', 'superseded', 'validityElapsed'], 'properties': {'agedOut': {'type': 'number', 'description': 'Issued before the window, no validity end ahead.'}, 'superseded': {'type': 'number', 'description': 'Replaced by a newer superseding Watch.'}, 'productType': {'type': 'number', 'description': 'Summaries and unrecognized products.'}, 'validityElapsed': {'type': 'number', 'description': 'Validity end already passed.'}, 'cancelledBySerial': {'type': 'number', 'description': 'Named by a later cancellation.'}, 'cancellationRecord': {'type': 'number', 'description': 'Cancellation notices.'}}, 'description': 'Records active_only=true left out, each counted under its first reason in field order; with totalCount they sum to the feed total. Present only under active_only=true, when something was excluded.', 'additionalProperties': False}, 'totalCount': {'type': 'number', 'description': 'Records in alerts.'}, 'appliedCutoff': {'type': 'string', 'description': 'ISO 8601 UTC start of the applied window. Present only under active_only=true.'}, 'appliedWindowHours': {'type': 'number', 'description': 'max_age_hours as applied. Present only under active_only=true.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'latitude': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Geographic latitude in degrees (â\x88\x9290 to 90). Provide with longitude for a local aurora probability lookup.'}, 'longitude': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Geographic longitude in degrees (â\x88\x92180 to 180). Provide with latitude for a local aurora probability lookup.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['observationTime', 'forecastTime', 'localLookup', 'gridPointCount', 'topAuroraPercent', 'topAuroraRegion']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['feed_unavailable', 'feed_moved', 'invalid_coordinates'], 'description': 'Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a coordinate lookup finds no parseable Forecast Time in the feed. Fails in one attempt. `invalid_coordinates`: One coordinate provided without the other. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'localLookup': {'anyOf': [{'type': 'object', 'required': ['requestedLatitude', 'requestedLongitude', 'geomagneticLatitude', 'gridLatitude', 'gridLongitude', 'auroraPercent', 'minKpRequired', 'minGScale', 'sunElevationDeg', 'darkness', 'horizonMaxPercent', 'horizonMaxLatitude', 'horizonDistanceKm', 'verdict'], 'properties': {'verdict': {'type': 'string', 'description': 'Visibility verdict, e.g. "Good aurora chance (42%) â\x80\x94 Kpâ\x89¥6.67 (G3) needed at 51.2° geomagnetic."; opens "Not visible â\x80\x94 daylight" when darkness is day.'}, 'darkness': {'enum': ['day', 'civil_twilight', 'nautical_twilight', 'dark'], 'type': 'string', 'description': 'Sky state from sunElevationDeg: day â\x89¥ 0°, civil_twilight â\x89¥ â\x88\x926°, nautical_twilight â\x89¥ â\x88\x9212°, dark below.'}, 'minGScale': {'type': ['number', 'null'], 'description': 'G level for minKpRequired (1â\x80\x935); 0 inside the quiet-time oval; null below 40° geomagnetic, where no storm reaches.'}, 'gridLatitude': {'type': 'number', 'description': 'Nearest grid latitude, in degrees.'}, 'auroraPercent': {'type': 'number', 'description': 'Aurora probability at the nearest grid point (0â\x80\x93100%).'}, 'gridLongitude': {'type': 'number', 'description': 'Nearest grid longitude, in degrees.'}, 'minKpRequired': {'type': 'number', 'description': 'Minimum Kp for aurora here: 4.67, 5.67, 6.67, 7.67, or 9; 0 inside the quiet-time oval (above 65°). Also 9 where no storm reaches (minGScale null).'}, 'sunElevationDeg': {'type': 'number', 'description': 'Solar elevation here at forecastTime, in degrees to 0.1° (no refraction); negative below the horizon.'}, 'horizonDistanceKm': {'type': ['number', 'null'], 'description': 'Distance in km to the horizonMaxPercent cell; null when it is null.'}, 'horizonMaxPercent': {'type': ['number', 'null'], 'description': 'Highest aurora probability (0â\x80\x93100%) poleward of gridLatitude within ±2° longitude and 1000 km; null when no cell qualifies (gridLatitude ±90).'}, 'requestedLatitude': {'type': 'number', 'description': 'Requested geographic latitude, in degrees.'}, 'horizonMaxLatitude': {'type': ['number', 'null'], 'description': 'Grid latitude of horizonMaxPercent, in degrees (nearest on a tie); null when it is null.'}, 'requestedLongitude': {'type': 'number', 'description': 'Requested geographic longitude, in degrees.'}, 'geomagneticLatitude': {'type': 'number', 'description': 'Geomagnetic latitude of the request, in degrees (up to ±9.2° from geographic); minKpRequired and the verdict use it.'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Coordinate lookup; null when no coordinates were given.'}, 'forecastTime': {'type': 'string', 'description': 'ISO 8601 time the forecast is valid for.'}, 'gridPointCount': {'type': 'number', 'description': 'OVATION grid point count.'}, 'observationTime': {'type': 'string', 'description': 'ISO 8601 OVATION observation time.'}, 'topAuroraRegion': {'type': 'string', 'description': 'Location of the highest grid point, e.g. "67°N, 20°W"; "Unknown" when every cell is 0%.'}, 'topAuroraPercent': {'type': 'number', 'description': 'Highest aurora probability on the globe (0â\x80\x93100%).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'include_discussion': {'type': 'boolean', 'default': False, 'description': "Also fetch SWPC's forecaster-written Forecast Discussion, which explains why the forecast looks the way it does (CME versus coronal-hole stream, expected arrival). Costs one extra upstream request."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['observedAt', 'currentKp', 'currentGScale', 'auroraLatitude', 'yesterday', 'today', 'forecast', 'summary', 'discussion']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['feed_unavailable', 'feed_moved'], 'description': 'Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a feed answers without the shape it is documented to have â\x80\x94 the scales feed no longer carrying its "0" (today) period, or the forecast discussion carrying no topic section. Fails in one attempt. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'today': {'type': 'object', 'required': ['G', 'R', 'S'], 'properties': {'G': {'type': 'object', 'required': ['scale', 'text', 'label'], 'properties': {'text': {'type': 'string', 'description': 'Descriptor, e.g. "Moderate"; "none" at level 0.'}, 'label': {'type': 'string', 'description': 'Label, e.g. "G2".'}, 'scale': {'type': 'number', 'description': 'Level 0â\x80\x935.'}}, 'description': "Today's G level.", 'additionalProperties': False}, 'R': {'type': 'object', 'required': ['scale', 'text', 'label'], 'properties': {'text': {'type': 'string', 'description': 'Descriptor, e.g. "Moderate"; "none" at level 0.'}, 'label': {'type': 'string', 'description': 'Label, e.g. "G2".'}, 'scale': {'type': 'number', 'description': 'Level 0â\x80\x935.'}}, 'description': "Today's R level.", 'additionalProperties': False}, 'S': {'type': 'object', 'required': ['scale', 'text', 'label'], 'properties': {'text': {'type': 'string', 'description': 'Descriptor, e.g. "Moderate"; "none" at level 0.'}, 'label': {'type': 'string', 'description': 'Label, e.g. "G2".'}, 'scale': {'type': 'number', 'description': 'Level 0â\x80\x935.'}}, 'description': "Today's S level.", 'additionalProperties': False}}, 'description': 'Observed R/S/G levels for today.', 'additionalProperties': False}, 'summary': {'type': 'string', 'description': 'Plain-language status, e.g. "G2 moderate geomagnetic storm in progress."'}, 'forecast': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'G', 'R', 'S'], 'properties': {'G': {'type': 'object', 'required': ['scale', 'text', 'label'], 'properties': {'text': {'type': 'string', 'description': 'Descriptor, e.g. "Moderate"; "none" at level 0.'}, 'label': {'type': 'string', 'description': 'Label, e.g. "G2".'}, 'scale': {'type': 'number', 'description': 'Level 0â\x80\x935.'}}, 'description': 'Forecast G level.', 'additionalProperties': False}, 'R': {'type': 'object', 'required': ['scale', 'text', 'label', 'minorProbPercent', 'majorProbPercent'], 'properties': {'text': {'type': ['string', 'null'], 'description': 'R descriptor; null when no level was issued.'}, 'label': {'type': ['string', 'null'], 'description': 'Label, e.g. "R1"; null when no level was issued.'}, 'scale': {'type': ['number', 'null'], 'description': 'R level 0â\x80\x935; null when SWPC issued a probability, not a level.'}, 'majorProbPercent': {'type': ['number', 'null'], 'description': 'Chance (%) of an R3+ blackout this day; null when none issued.'}, 'minorProbPercent': {'type': ['number', 'null'], 'description': 'Chance (%) of an R1â\x80\x93R2 blackout this day; null when none issued.'}}, 'description': 'R outlook: a level, probabilities, or neither.', 'additionalProperties': False}, 'S': {'type': 'object', 'required': ['scale', 'text', 'label', 'probPercent'], 'properties': {'text': {'type': ['string', 'null'], 'description': 'S descriptor; null when no level was issued.'}, 'label': {'type': ['string', 'null'], 'description': 'Label, e.g. "S1"; null when no level was issued.'}, 'scale': {'type': ['number', 'null'], 'description': 'S level 0â\x80\x935; null when SWPC issued a probability, not a level.'}, 'probPercent': {'type': ['number', 'null'], 'description': 'Chance (%) of an S1+ radiation storm this day; null when none issued.'}}, 'description': 'S outlook: a level, a probability, or neither.', 'additionalProperties': False}, 'date': {'type': 'string', 'description': 'Forecast date, e.g. "2026-06-04".'}}, 'description': 'One forecast day.', 'additionalProperties': False}, 'description': '3-day scale forecast, oldest first; starts with today (the date of observedAt).'}, 'currentKp': {'type': 'number', 'description': 'Latest observed planetary K-index (0â\x80\x939).'}, 'yesterday': {'anyOf': [{'type': 'object', 'required': ['date', 'G', 'R', 'S'], 'properties': {'G': {'type': 'object', 'required': ['scale', 'text', 'label'], 'properties': {'text': {'type': 'string', 'description': 'Descriptor, e.g. "Moderate"; "none" at level 0.'}, 'label': {'type': 'string', 'description': 'Label, e.g. "G2".'}, 'scale': {'type': 'number', 'description': 'Level 0â\x80\x935.'}}, 'description': 'Assessed G level.', 'additionalProperties': False}, 'R': {'type': 'object', 'required': ['scale', 'text', 'label'], 'properties': {'text': {'type': 'string', 'description': 'Descriptor, e.g. "Moderate"; "none" at level 0.'}, 'label': {'type': 'string', 'description': 'Label, e.g. "G2".'}, 'scale': {'type': 'number', 'description': 'Level 0â\x80\x935.'}}, 'description': 'Assessed R level.', 'additionalProperties': False}, 'S': {'type': 'object', 'required': ['scale', 'text', 'label'], 'properties': {'text': {'type': 'string', 'description': 'Descriptor, e.g. "Moderate"; "none" at level 0.'}, 'label': {'type': 'string', 'description': 'Label, e.g. "G2".'}, 'scale': {'type': 'number', 'description': 'Level 0â\x80\x935.'}}, 'description': 'Assessed S level.', 'additionalProperties': False}, 'date': {'type': 'string', 'description': 'Previous UTC day, e.g. "2026-06-03".'}}, 'description': 'Levels SWPC assessed for the previous UTC day.', 'additionalProperties': False}, {'type': 'null'}], 'description': 'R/S/G levels assessed for the previous UTC day (a date, no time). Null when the feed lacks that period or a level; null never means level 0.'}, 'discussion': {'anyOf': [{'type': 'object', 'required': ['issued', 'sections'], 'properties': {'issued': {'type': ['string', 'null'], 'description': 'ISO 8601 UTC issue time from the ":Issued:" line; null when absent.'}, 'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['topic', 'summary', 'forecast'], 'properties': {'topic': {'type': 'string', 'description': 'Section heading, e.g. "Solar Activity".'}, 'summary': {'type': ['string', 'null'], 'description': 'Past-24 h summary text; null when the section has none.'}, 'forecast': {'type': ['string', 'null'], 'description': 'Next-3-day forecast text; null when the section has none.'}}, 'description': 'One topic section.', 'additionalProperties': False}, 'description': 'Topic sections, in product order.'}}, 'description': "SWPC forecaster's narrative behind the scales.", 'additionalProperties': False}, {'type': 'null'}], 'description': 'SWPC Forecast Discussion; null unless include_discussion is true.'}, 'observedAt': {'type': 'string', 'description': 'ISO 8601 UTC time of the scales data period, e.g. "2026-06-04T15:00:00Z".'}, 'currentGScale': {'type': 'number', 'description': 'G level (0â\x80\x935) for currentKp.'}, 'auroraLatitude': {'type': 'string', 'description': 'Aurora guidance for currentKp, e.g. "Aurora possible to ~55° geomagnetic latitude".'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'window_days': {'type': 'integer', 'default': 1, 'maximum': 7, 'minimum': 1, 'description': 'Number of past days of observed Kp to return (1â\x80\x937, default 1). Larger windows show trend context.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['observed', 'forecast', 'currentKp', 'currentGScale', 'auroraLatitude', 'observedCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['feed_unavailable', 'feed_moved'], 'description': 'Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'forecast': {'type': 'array', 'items': {'type': 'object', 'required': ['timeTag', 'kp', 'observed', 'noaaScale', 'gScale', 'gLabel'], 'properties': {'kp': {'type': 'number', 'description': 'Forecast Kp value (0â\x80\x939).'}, 'gLabel': {'type': 'string', 'description': 'G label, e.g. "G3".'}, 'gScale': {'type': 'number', 'description': 'G level (0â\x80\x935) derived from kp; matches noaaScale when stated.'}, 'timeTag': {'type': 'string', 'description': 'ISO 8601 forecast interval time tag.'}, 'observed': {'type': 'string', 'description': '"estimated" (near-real-time model) or "predicted".'}, 'noaaScale': {'type': ['string', 'null'], 'description': 'NOAA scale the feed states, e.g. "G1"; null when none.'}}, 'description': 'One Kp forecast interval.', 'additionalProperties': False}, 'description': 'Kp forecast series: estimated and predicted entries, no observed history.'}, 'observed': {'type': 'array', 'items': {'type': 'object', 'required': ['timeTag', 'kp', 'gScale', 'gLabel', 'auroraLatitude'], 'properties': {'kp': {'type': 'number', 'description': 'Kp value (0â\x80\x939).'}, 'gLabel': {'type': 'string', 'description': 'G label, e.g. "G3".'}, 'gScale': {'type': 'number', 'description': 'G level (0â\x80\x935) for this Kp; G1 starts at 4.67, G5 at 9.'}, 'timeTag': {'type': 'string', 'description': 'ISO 8601 3-hour interval time tag.'}, 'auroraLatitude': {'type': 'string', 'description': 'Aurora guidance for this Kp, in geomagnetic latitude.'}}, 'description': 'One observed 3-hour Kp interval.', 'additionalProperties': False}, 'description': 'Observed Kp in the window, oldest first.'}, 'currentKp': {'type': 'number', 'description': 'Latest observed Kp; 0 when the window has none.'}, 'currentGScale': {'type': 'number', 'description': 'G level (0â\x80\x935) for currentKp.'}, 'observedCount': {'type': 'number', 'description': 'Entries in observed.'}, 'auroraLatitude': {'type': 'string', 'description': 'Aurora guidance for currentKp.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'flare_hours': {'type': 'integer', 'default': 24, 'maximum': 168, 'minimum': 1, 'description': 'How far back to report discrete flare events, in hours before now, filtered on each flareâ\x80\x99s onset time (1â\x80\x93168, default 24). The feed keeps a rolling 7 days, so 168 returns everything it carries. When the window comes back empty, the response names the newest flare the feed holds.'}, 'include_regions': {'type': 'boolean', 'default': True, 'description': 'Include active solar region details (default true). Set false to skip region data and reduce response size.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['latestXray', 'recentXray', 'recentFlares', 'f107', 'probabilities', 'latestProton', 'sScale', 'sScaleText', 'activeRegions', 'fetchedAt']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'f107': {'anyOf': [{'type': 'object', 'required': ['observedTime', 'fluxSfu', 'ninetyDayMeanSfu', 'reportingSchedule'], 'properties': {'fluxSfu': {'type': 'number', 'description': '10.7 cm (2800 MHz) solar radio flux, in sfu.'}, 'observedTime': {'type': 'string', 'description': 'ISO 8601 UTC observation time; can be ~24 h old.'}, 'ninetyDayMeanSfu': {'type': ['number', 'null'], 'description': '90-day mean flux in sfu; null when the record carries none.'}, 'reportingSchedule': {'type': 'string', 'description': 'Penticton report: "Morning", "Noon", or "Afternoon".'}}, 'description': 'Daily F10.7 reading.', 'additionalProperties': False}, {'type': 'null'}], 'description': "Latest Noon report, SWPC's daily F10.7 value; null when the feed has none."}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['feed_unavailable', 'feed_moved'], 'description': 'Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Set when no flare began in the flare_hours window: names the newest flare in the feed, or says the feed has none.'}, 'sScale': {'type': 'number', 'description': 'Current S level (0â\x80\x935) from latestProton; 0 without a reading.'}, 'fetchedAt': {'type': 'string', 'description': 'ISO 8601 fetch time.'}, 'latestXray': {'anyOf': [{'type': 'object', 'required': ['timeTag', 'fluxWm2', 'fluxWm2Value', 'flareClass', 'flareClassFull', 'satellite'], 'properties': {'fluxWm2': {'type': 'string', 'description': 'Long-channel (0.1â\x80\x930.8 nm) X-ray flux for display, e.g. "1.4e-6 W/m²".'}, 'timeTag': {'type': 'string', 'description': 'ISO 8601 measurement time.'}, 'satellite': {'type': 'number', 'description': 'GOES satellite number.'}, 'flareClass': {'type': 'string', 'description': 'Flare class letter: A, B, C, M, or X.'}, 'fluxWm2Value': {'type': 'number', 'description': 'fluxWm2 as an unformatted number, in W/m².'}, 'flareClassFull': {'type': ['string', 'null'], 'description': 'Class with magnitude, e.g. "B2.5"; null below A1 (1e-8 W/m²), zero and negative readings included.'}}, 'description': 'One GOES X-ray reading.', 'additionalProperties': False}, {'type': 'null'}], 'description': 'Newest X-ray reading; null when the feed is empty.'}, 'recentXray': {'type': 'array', 'items': {'type': 'object', 'required': ['timeTag', 'fluxWm2', 'fluxWm2Value', 'flareClass', 'flareClassFull', 'satellite'], 'properties': {'fluxWm2': {'type': 'string', 'description': 'Long-channel (0.1â\x80\x930.8 nm) X-ray flux for display, e.g. "1.4e-6 W/m²".'}, 'timeTag': {'type': 'string', 'description': 'ISO 8601 measurement time.'}, 'satellite': {'type': 'number', 'description': 'GOES satellite number.'}, 'flareClass': {'type': 'string', 'description': 'Flare class letter: A, B, C, M, or X.'}, 'fluxWm2Value': {'type': 'number', 'description': 'fluxWm2 as an unformatted number, in W/m².'}, 'flareClassFull': {'type': ['string', 'null'], 'description': 'Class with magnitude, e.g. "B2.5"; null below A1 (1e-8 W/m²), zero and negative readings included.'}}, 'description': 'One GOES X-ray reading.', 'additionalProperties': False}, 'description': 'X-ray readings from the past hour, oldest first.'}, 'sScaleText': {'type': 'string', 'description': 'S level descriptor, e.g. "S2 moderate radiation storm".'}, 'latestProton': {'anyOf': [{'type': 'object', 'required': ['timeTag', 'fluxPfu', 'sScale', 'energy'], 'properties': {'energy': {'type': 'string', 'description': 'Energy channel, e.g. ">=10 MeV".'}, 'sScale': {'type': 'number', 'description': 'S level (0â\x80\x935) for this flux.'}, 'fluxPfu': {'type': 'number', 'description': 'â\x89¥10 MeV integral proton flux in pfu, to 3 significant figures.'}, 'timeTag': {'type': 'string', 'description': 'ISO 8601 measurement time.'}}, 'description': 'One GOES proton flux reading.', 'additionalProperties': False}, {'type': 'null'}], 'description': 'Newest â\x89¥10 MeV proton reading; null when the feed is empty.'}, 'recentFlares': {'type': 'array', 'items': {'type': 'object', 'required': ['beginTime', 'maxTime', 'endTime', 'beginClass', 'maxClass', 'endClass', 'peakFluxWm2', 'rScale', 'satellite'], 'properties': {'rScale': {'type': 'number', 'description': 'R level (0â\x80\x935) the peak flux implies; 0 is below R1.'}, 'endTime': {'type': ['string', 'null'], 'description': 'ISO 8601 UTC decay time; null while in progress.'}, 'maxTime': {'type': 'string', 'description': 'ISO 8601 UTC peak time.'}, 'endClass': {'type': ['string', 'null'], 'description': 'Class at decay; null while in progress.'}, 'maxClass': {'type': 'string', 'description': 'Peak class as SWPC publishes it, e.g. "M5.2".'}, 'beginTime': {'type': 'string', 'description': 'ISO 8601 UTC onset time.'}, 'satellite': {'type': 'number', 'description': 'GOES satellite number.'}, 'beginClass': {'type': 'string', 'description': 'Class at onset, e.g. "B4.2".'}, 'peakFluxWm2': {'type': 'number', 'description': 'Peak long-channel (0.1â\x80\x930.8 nm) flux, in W/m².'}}, 'description': 'One GOES X-ray flare event.', 'additionalProperties': False}, 'description': 'Flares with onset inside flare_hours, oldest first; empty when none began.'}, 'activeRegions': {'type': 'array', 'items': {'type': 'object', 'required': ['region', 'location', 'latitude', 'spotClass', 'numberSpots', 'magClass', 'areaMillionths', 'firstObserved', 'cFlareCount', 'mFlareCount', 'xFlareCount', 'cFlareProbability', 'mFlareProbability', 'xFlareProbability', 'protonProbability', 'observedDate'], 'properties': {'region': {'type': 'number', 'description': 'NOAA active region number.'}, 'latitude': {'type': 'string', 'description': 'Heliographic latitude, e.g. "N17".'}, 'location': {'type': 'string', 'description': 'Heliographic location, e.g. "N17E47".'}, 'magClass': {'type': 'string', 'description': 'Magnetic class, e.g. "B"; empty for a spotless region.'}, 'spotClass': {'type': 'string', 'description': 'Sunspot class, e.g. "Dsi"; empty for a spotless region (plage).'}, 'cFlareCount': {'type': 'number', 'description': 'C-class flares SWPC credited to this region on observedDate.'}, 'mFlareCount': {'type': 'number', 'description': 'M-class flares SWPC credited to this region on observedDate.'}, 'numberSpots': {'type': 'number', 'description': 'Sunspot count; 0 for a spotless region.'}, 'xFlareCount': {'type': 'number', 'description': 'X-class flares SWPC credited to this region on observedDate.'}, 'observedDate': {'type': 'string', 'description': 'UTC observation date: the flare counts cover it, the probabilities the next day.'}, 'firstObserved': {'type': 'string', 'description': 'ISO 8601 UTC time SWPC first recorded this region.'}, 'areaMillionths': {'type': ['number', 'null'], 'description': 'Sunspot area in millionths of the hemisphere; null for a spotless region.'}, 'cFlareProbability': {'type': 'number', 'description': 'C-class flare chance (%) for the UTC day after observedDate.'}, 'mFlareProbability': {'type': 'number', 'description': 'M-class flare chance (%) for the UTC day after observedDate.'}, 'protonProbability': {'type': 'number', 'description': 'Proton event chance (%) for the UTC day after observedDate.'}, 'xFlareProbability': {'type': 'number', 'description': 'X-class flare chance (%) for the UTC day after observedDate.'}}, 'description': 'One active solar region.', 'additionalProperties': False}, 'description': 'Active regions; empty when include_regions=false or none are active.'}, 'probabilities': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'cClass1Day', 'cClassProbability', 'mClass1Day', 'mClassProbability', 'xClass1Day', 'xClassProbability', 'protons1Day', 'protonEventProbability'], 'properties': {'date': {'type': 'string', 'description': 'Forecast date.'}, 'cClass1Day': {'type': 'number', 'description': 'Deprecated: use cClassProbability (same value).'}, 'mClass1Day': {'type': 'number', 'description': 'Deprecated: use mClassProbability (same value).'}, 'xClass1Day': {'type': 'number', 'description': 'Deprecated: use xClassProbability (same value).'}, 'protons1Day': {'type': 'number', 'description': 'Deprecated: use protonEventProbability (same value).'}, 'cClassProbability': {'type': 'number', 'description': 'C-class flare chance (%) for this date.'}, 'mClassProbability': {'type': 'number', 'description': 'M-class flare chance (%) for this date.'}, 'xClassProbability': {'type': 'number', 'description': 'X-class flare chance (%) for this date.'}, 'protonEventProbability': {'type': 'number', 'description': 'â\x89¥10 MeV proton event chance (%) for this date.'}}, 'description': 'Flare probabilities for one day.', 'additionalProperties': False}, 'description': '3-day flare probability forecast.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'resolution': {'enum': ['summary', 'reduced', 'full'], 'type': 'string', 'default': 'reduced', 'description': 'Detail level of the returned plasma and mag series. "summary" returns both series empty and keeps every headline field â\x80\x94 about 2 KB whatever the window. "reduced" (default) bounds each series to at most 200 records: the window is bucketed by record count and one real measurement is emitted per bucket â\x80\x94 the bucket\'s fastest speed for plasma, its most southward Bz for mag â\x80\x94 with the newest record in the window always last. A series already inside the bound is returned untouched, so a default 3-hour call is unaffected. "full" returns every record in the window (~1,400 per series over 24 hours, a ~540 KB response). The headline fields â\x80\x94 latestPlasma, latestMag, bzStatus, bzMinInWindow, and the window maxima and southward-Bz minutes â\x80\x94 are computed from the full window at every resolution.'}, 'window_hours': {'type': 'integer', 'default': 3, 'maximum': 168, 'minimum': 1, 'description': 'Hours of recent solar wind history to return (1â\x80\x93168, default 3). Records update ~every 1 min, but the feed only carries roughly the last 24 hours â\x80\x94 a larger window returns the whole feed, not more history, and at the default resolution the returned series stay bounded to 200 records each rather than growing with the window. When a window comes back empty, feedStalenessHours and latestFeedPlasmaTime/latestFeedMagTime report how current the feed actually is.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['plasma', 'mag', 'latestPlasma', 'latestMag', 'bzStatus', 'plasmaCount', 'magCount', 'bzMinInWindow', 'bzMinTimeTag', 'bzSouthMinutesInWindow', 'speedMaxInWindow', 'speedMaxTimeTag', 'densityMaxInWindow', 'btMaxInWindow', 'latestFeedPlasmaTime', 'latestFeedMagTime', 'feedStalenessHours']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'mag': {'type': 'array', 'items': {'type': 'object', 'required': ['timeTag', 'source', 'bxGsm', 'byGsm', 'bzGsm', 'bt'], 'properties': {'bt': {'type': ['number', 'null'], 'description': 'Total field Bt in nT; null when missing.'}, 'bxGsm': {'type': ['number', 'null'], 'description': 'Bx, GSM, in nT; null when missing.'}, 'byGsm': {'type': ['number', 'null'], 'description': 'By, GSM, in nT; null when missing.'}, 'bzGsm': {'type': ['number', 'null'], 'description': 'Bz, GSM, in nT; negative (southward) drives storms; null when missing.'}, 'source': {'type': 'string', 'description': 'Reporting spacecraft, e.g. "SOLAR1".'}, 'timeTag': {'type': 'string', 'description': 'ISO 8601 measurement time.'}}, 'description': 'One L1 magnetic field record.', 'additionalProperties': False}, 'description': 'Mag records in the window, oldest first. "reduced": at most 200, each its bucket\'s most southward Bz; the last equals latestMag. Empty under "summary".'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['feed_unavailable', 'feed_moved'], 'description': 'Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'What shaped the response: an empty window (with the newest feed record), series bounded to 200 records, or series omitted under "summary".'}, 'plasma': {'type': 'array', 'items': {'type': 'object', 'required': ['timeTag', 'source', 'densityPerCm3', 'speedKmS', 'temperatureK'], 'properties': {'source': {'type': 'string', 'description': 'Reporting spacecraft, e.g. "SOLAR1".'}, 'timeTag': {'type': 'string', 'description': 'ISO 8601 measurement time.'}, 'speedKmS': {'type': ['number', 'null'], 'description': 'Solar wind speed in km/s; null when missing.'}, 'temperatureK': {'type': ['number', 'null'], 'description': 'Proton temperature in K; null when missing.'}, 'densityPerCm3': {'type': ['number', 'null'], 'description': 'Proton density in particles/cm³; null when missing.'}}, 'description': 'One L1 plasma record.', 'additionalProperties': False}, 'description': 'Plasma records in the window, oldest first. "reduced": at most 200, each its bucket\'s fastest speed, newest last. Empty under "summary".'}, 'bzStatus': {'type': 'string', 'description': 'Bz status from latestMag, e.g. "Southward Bz -14 nT â\x80\x94 storm-driving conditions."; "Bz data unavailable." without a reading.'}, 'magCount': {'type': 'number', 'description': 'Records in mag (magWindowRecords has the pre-reduction total); under "summary", the records the window held.'}, 'latestMag': {'anyOf': [{'type': 'object', 'required': ['timeTag', 'source', 'bxGsm', 'byGsm', 'bzGsm', 'bt'], 'properties': {'bt': {'type': ['number', 'null'], 'description': 'Total field Bt in nT; null when missing.'}, 'bxGsm': {'type': ['number', 'null'], 'description': 'Bx, GSM, in nT; null when missing.'}, 'byGsm': {'type': ['number', 'null'], 'description': 'By, GSM, in nT; null when missing.'}, 'bzGsm': {'type': ['number', 'null'], 'description': 'Bz, GSM, in nT; negative (southward) drives storms; null when missing.'}, 'source': {'type': 'string', 'description': 'Reporting spacecraft, e.g. "SOLAR1".'}, 'timeTag': {'type': 'string', 'description': 'ISO 8601 measurement time.'}}, 'description': 'One L1 magnetic field record.', 'additionalProperties': False}, {'type': 'null'}], 'description': 'Newest mag record in the window; null when the window has none.'}, 'plasmaCount': {'type': 'number', 'description': 'Records in plasma (plasmaWindowRecords has the pre-reduction total); under "summary", the records the window held.'}, 'bzMinTimeTag': {'type': ['string', 'null'], 'description': 'ISO 8601 time of bzMinInWindow; null when it is null.'}, 'latestPlasma': {'anyOf': [{'type': 'object', 'required': ['timeTag', 'source', 'densityPerCm3', 'speedKmS', 'temperatureK'], 'properties': {'source': {'type': 'string', 'description': 'Reporting spacecraft, e.g. "SOLAR1".'}, 'timeTag': {'type': 'string', 'description': 'ISO 8601 measurement time.'}, 'speedKmS': {'type': ['number', 'null'], 'description': 'Solar wind speed in km/s; null when missing.'}, 'temperatureK': {'type': ['number', 'null'], 'description': 'Proton temperature in K; null when missing.'}, 'densityPerCm3': {'type': ['number', 'null'], 'description': 'Proton density in particles/cm³; null when missing.'}}, 'description': 'One L1 plasma record.', 'additionalProperties': False}, {'type': 'null'}], 'description': 'Newest plasma record in the window; null when the window has none.'}, 'btMaxInWindow': {'type': ['number', 'null'], 'description': 'Peak Bt in nT across the whole window; null when it has no Bt.'}, 'bzMinInWindow': {'type': ['number', 'null'], 'description': 'Most southward Bz in nT across the whole window; null when it has no Bz.'}, 'speedMaxTimeTag': {'type': ['string', 'null'], 'description': 'ISO 8601 time of speedMaxInWindow; null when it is null.'}, 'magBucketRecords': {'type': 'number', 'description': 'Mag records per emitted record, 1 if untouched. Present only after a reduction.'}, 'magWindowRecords': {'type': 'number', 'description': 'Mag records in the window before reduction. Present after a reduction or under "summary".'}, 'speedMaxInWindow': {'type': ['number', 'null'], 'description': 'Peak speed in km/s across the whole window; null when it has no speed.'}, 'latestFeedMagTime': {'type': ['string', 'null'], 'description': 'ISO 8601 time of the newest mag record in the feed, window aside; null when none.'}, 'densityMaxInWindow': {'type': ['number', 'null'], 'description': 'Peak proton density in particles/cm³ across the whole window; null when none.'}, 'feedStalenessHours': {'type': ['number', 'null'], 'description': 'Hours from the newest record in either feed to now; null when both are empty.'}, 'plasmaBucketRecords': {'type': 'number', 'description': 'Plasma records per emitted record, 1 if untouched. Present only after a reduction.'}, 'plasmaWindowRecords': {'type': 'number', 'description': 'Plasma records in the window before reduction. Present after a reduction or under "summary".'}, 'latestFeedPlasmaTime': {'type': ['string', 'null'], 'description': 'ISO 8601 time of the newest plasma record in the feed, window aside; null when none.'}, 'bzSouthMinutesInWindow': {'type': 'number', 'description': 'Minutes of Bz < 0: 1-minute mag records across the whole window. Feed gaps are not counted. 0 when none.'}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
workbench
Provides computational molecular biology tools for DNA, RNA, and protein analysis, cloning, PCR, CRISPR, oligonucleotide design, …
gisgp
Provides GIS geocoding, routing, spatial transformations, ArcGIS layer inspection and export, and location due diligence for haza…
calc.engineer
Provides deterministic engineering calculators for RF and LoRa systems, electronics, batteries, solar and power systems, cooling,…
Good Earth
Provides plot-specific climate and growing-season analysis for gardens and farms, including frost, heat accumulation, crop suitab…
osint
Provides source-cited US data and schemas for power systems, AI infrastructure, semiconductor production and trade, robotics, and…
EngScript Engineering MCP
Performs engineering calculations for oil and gas applications, including thermodynamics, fluid systems, equipment sizing, balanc…
civilquants
Calculates parametric civil-engineering quantities and Bills of Quantities for drainage, earthworks, retaining walls, pavements, …