@cyanheads/noaa-spaceweather-mcp-server 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/AGENTS.md +328 -0
  2. package/CLAUDE.md +328 -0
  3. package/Dockerfile +99 -0
  4. package/LICENSE +201 -0
  5. package/README.md +315 -0
  6. package/changelog/0.1.x/0.1.1.md +31 -0
  7. package/changelog/template.md +127 -0
  8. package/dist/index.d.ts +7 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +23 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/mcp-server/tools/definitions/get-alerts.tool.d.ts +37 -0
  13. package/dist/mcp-server/tools/definitions/get-alerts.tool.d.ts.map +1 -0
  14. package/dist/mcp-server/tools/definitions/get-alerts.tool.js +114 -0
  15. package/dist/mcp-server/tools/definitions/get-alerts.tool.js.map +1 -0
  16. package/dist/mcp-server/tools/definitions/get-aurora-forecast.tool.d.ts +37 -0
  17. package/dist/mcp-server/tools/definitions/get-aurora-forecast.tool.d.ts.map +1 -0
  18. package/dist/mcp-server/tools/definitions/get-aurora-forecast.tool.js +202 -0
  19. package/dist/mcp-server/tools/definitions/get-aurora-forecast.tool.js.map +1 -0
  20. package/dist/mcp-server/tools/definitions/get-conditions.tool.d.ts +55 -0
  21. package/dist/mcp-server/tools/definitions/get-conditions.tool.d.ts.map +1 -0
  22. package/dist/mcp-server/tools/definitions/get-conditions.tool.js +129 -0
  23. package/dist/mcp-server/tools/definitions/get-conditions.tool.js.map +1 -0
  24. package/dist/mcp-server/tools/definitions/get-kp-index.tool.d.ts +34 -0
  25. package/dist/mcp-server/tools/definitions/get-kp-index.tool.d.ts.map +1 -0
  26. package/dist/mcp-server/tools/definitions/get-kp-index.tool.js +126 -0
  27. package/dist/mcp-server/tools/definitions/get-kp-index.tool.js.map +1 -0
  28. package/dist/mcp-server/tools/definitions/get-solar-activity.tool.d.ts +58 -0
  29. package/dist/mcp-server/tools/definitions/get-solar-activity.tool.d.ts.map +1 -0
  30. package/dist/mcp-server/tools/definitions/get-solar-activity.tool.js +237 -0
  31. package/dist/mcp-server/tools/definitions/get-solar-activity.tool.js.map +1 -0
  32. package/dist/mcp-server/tools/definitions/get-solar-wind.tool.d.ts +46 -0
  33. package/dist/mcp-server/tools/definitions/get-solar-wind.tool.d.ts.map +1 -0
  34. package/dist/mcp-server/tools/definitions/get-solar-wind.tool.js +197 -0
  35. package/dist/mcp-server/tools/definitions/get-solar-wind.tool.js.map +1 -0
  36. package/dist/mcp-server/tools/definitions/index.d.ts +225 -0
  37. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  38. package/dist/mcp-server/tools/definitions/index.js +19 -0
  39. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  40. package/dist/services/space-weather/space-weather-service.d.ts +42 -0
  41. package/dist/services/space-weather/space-weather-service.d.ts.map +1 -0
  42. package/dist/services/space-weather/space-weather-service.js +402 -0
  43. package/dist/services/space-weather/space-weather-service.js.map +1 -0
  44. package/dist/services/space-weather/types.d.ts +189 -0
  45. package/dist/services/space-weather/types.d.ts.map +1 -0
  46. package/dist/services/space-weather/types.js +6 -0
  47. package/dist/services/space-weather/types.js.map +1 -0
  48. package/package.json +105 -0
  49. package/server.json +99 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @fileoverview Tool: noaa_spaceweather_get_solar_wind — real-time DSCOVR solar wind data.
3
+ * @module mcp-server/tools/definitions/get-solar-wind
4
+ */
5
+ import { z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ export declare const getSolarWind: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
8
+ window_hours: z.ZodDefault<z.ZodNumber>;
9
+ }, z.core.$strip>, z.ZodObject<{
10
+ plasma: z.ZodArray<z.ZodObject<{
11
+ timeTag: z.ZodString;
12
+ densityPerCm3: z.ZodNullable<z.ZodNumber>;
13
+ speedKmS: z.ZodNullable<z.ZodNumber>;
14
+ temperatureK: z.ZodNullable<z.ZodNumber>;
15
+ }, z.core.$strip>>;
16
+ mag: z.ZodArray<z.ZodObject<{
17
+ timeTag: z.ZodString;
18
+ bxGsm: z.ZodNullable<z.ZodNumber>;
19
+ byGsm: z.ZodNullable<z.ZodNumber>;
20
+ bzGsm: z.ZodNullable<z.ZodNumber>;
21
+ bt: z.ZodNullable<z.ZodNumber>;
22
+ }, z.core.$strip>>;
23
+ latestPlasma: z.ZodNullable<z.ZodObject<{
24
+ timeTag: z.ZodString;
25
+ densityPerCm3: z.ZodNullable<z.ZodNumber>;
26
+ speedKmS: z.ZodNullable<z.ZodNumber>;
27
+ temperatureK: z.ZodNullable<z.ZodNumber>;
28
+ }, z.core.$strip>>;
29
+ latestMag: z.ZodNullable<z.ZodObject<{
30
+ timeTag: z.ZodString;
31
+ bxGsm: z.ZodNullable<z.ZodNumber>;
32
+ byGsm: z.ZodNullable<z.ZodNumber>;
33
+ bzGsm: z.ZodNullable<z.ZodNumber>;
34
+ bt: z.ZodNullable<z.ZodNumber>;
35
+ }, z.core.$strip>>;
36
+ bzStatus: z.ZodString;
37
+ plasmaCount: z.ZodNumber;
38
+ magCount: z.ZodNumber;
39
+ }, z.core.$strip>, readonly [{
40
+ readonly reason: "feed_unavailable";
41
+ readonly code: JsonRpcErrorCode.ServiceUnavailable;
42
+ readonly when: "SWPC endpoint returns non-OK status or times out after retries.";
43
+ readonly retryable: true;
44
+ readonly recovery: "Retry in 30–60 seconds; SWPC feeds occasionally lag during high-activity events.";
45
+ }], undefined>;
46
+ //# sourceMappingURL=get-solar-wind.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-solar-wind.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-solar-wind.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA6CjE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4KvB,CAAC"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * @fileoverview Tool: noaa_spaceweather_get_solar_wind — real-time DSCOVR solar wind data.
3
+ * @module mcp-server/tools/definitions/get-solar-wind
4
+ */
5
+ import { tool, z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ import { getSpaceWeatherService } from '../../../services/space-weather/space-weather-service.js';
8
+ const PlasmaSchema = z
9
+ .object({
10
+ timeTag: z.string().describe('ISO 8601 measurement time tag.'),
11
+ densityPerCm3: z
12
+ .number()
13
+ .nullable()
14
+ .describe('Proton density in particles/cm³. Null when sensor fill value.'),
15
+ speedKmS: z
16
+ .number()
17
+ .nullable()
18
+ .describe('Solar wind speed in km/s. Null when sensor fill value.'),
19
+ temperatureK: z
20
+ .number()
21
+ .nullable()
22
+ .describe('Proton temperature in Kelvin. Null when sensor fill value.'),
23
+ })
24
+ .describe('One DSCOVR plasma measurement.');
25
+ const MagSchema = z
26
+ .object({
27
+ timeTag: z.string().describe('ISO 8601 measurement time tag.'),
28
+ bxGsm: z
29
+ .number()
30
+ .nullable()
31
+ .describe('Bx component in GSM coordinates (nT). Null when sensor fill value.'),
32
+ byGsm: z
33
+ .number()
34
+ .nullable()
35
+ .describe('By component in GSM coordinates (nT). Null when sensor fill value.'),
36
+ bzGsm: z
37
+ .number()
38
+ .nullable()
39
+ .describe('Bz component in GSM coordinates (nT). Southward (negative) drives geomagnetic storms. Null when sensor fill value.'),
40
+ bt: z
41
+ .number()
42
+ .nullable()
43
+ .describe('Total field magnitude Bt (nT). Null when sensor fill value.'),
44
+ })
45
+ .describe('One DSCOVR magnetic field measurement.');
46
+ export const getSolarWind = tool('noaa_spaceweather_get_solar_wind', {
47
+ title: 'Get Solar Wind',
48
+ description: 'Real-time solar wind data from DSCOVR at L1: proton speed (km/s), density (n/cm³), temperature ' +
49
+ '(K), and the critical Bz component (southward Bz = negative = storm driver). Returns the ' +
50
+ 'recent plasma and magnetic field time series within the requested window. ' +
51
+ 'Bz < −10 nT for sustained periods is a primary geomagnetic storm trigger — use alongside ' +
52
+ 'noaa_spaceweather_get_kp_index to see whether elevated solar wind has translated into a ' +
53
+ 'geomagnetic storm.',
54
+ annotations: { readOnlyHint: true, openWorldHint: true, idempotentHint: true },
55
+ input: z.object({
56
+ window_hours: z
57
+ .number()
58
+ .int()
59
+ .min(1)
60
+ .max(168)
61
+ .default(3)
62
+ .describe('Hours of recent solar wind history to return (1–168, default 3). Feeds update ~every 1 min.'),
63
+ }),
64
+ output: z.object({
65
+ plasma: z
66
+ .array(PlasmaSchema)
67
+ .describe('Plasma measurements (speed, density, temperature) within the window.'),
68
+ mag: z
69
+ .array(MagSchema)
70
+ .describe('Magnetic field measurements (Bx, By, Bz, Bt) within the window.'),
71
+ latestPlasma: PlasmaSchema.nullable().describe('Most recent plasma reading, null if no data in window.'),
72
+ latestMag: MagSchema.nullable().describe('Most recent magnetic field reading, null if no data in window.'),
73
+ bzStatus: z
74
+ .string()
75
+ .describe('Plain-language Bz status, e.g. "Southward Bz −14 nT — storm-driving conditions" or "Northward Bz +5 nT — quiescent".'),
76
+ plasmaCount: z
77
+ .number()
78
+ .describe('Number of plasma records in the plasma array, spanning the requested window.'),
79
+ magCount: z
80
+ .number()
81
+ .describe('Number of magnetic field records in the mag array, spanning the requested window.'),
82
+ }),
83
+ errors: [
84
+ {
85
+ reason: 'feed_unavailable',
86
+ code: JsonRpcErrorCode.ServiceUnavailable,
87
+ when: 'SWPC endpoint returns non-OK status or times out after retries.',
88
+ retryable: true,
89
+ recovery: 'Retry in 30–60 seconds; SWPC feeds occasionally lag during high-activity events.',
90
+ },
91
+ ],
92
+ async handler(input, ctx) {
93
+ ctx.log.info('Fetching solar wind data', { window_hours: input.window_hours });
94
+ const svc = getSpaceWeatherService();
95
+ const [allPlasma, allMag] = await Promise.all([
96
+ svc.getSolarWindPlasma(ctx),
97
+ svc.getSolarWindMag(ctx),
98
+ ]);
99
+ const cutoff = new Date();
100
+ cutoff.setTime(cutoff.getTime() - input.window_hours * 3_600_000);
101
+ const cutoffIso = cutoff.toISOString();
102
+ // Service normalizes SWPC space-separated time tags to ISO 8601 UTC ("T"/"Z" form),
103
+ // so string comparison is safe here.
104
+ const plasma = allPlasma.filter((r) => r.timeTag >= cutoffIso);
105
+ const mag = allMag.filter((r) => r.timeTag >= cutoffIso);
106
+ const latestPlasma = plasma.length > 0 ? plasma[plasma.length - 1] : null;
107
+ const latestMag = mag.length > 0 ? mag[mag.length - 1] : null;
108
+ // Derive Bz status
109
+ let bzStatus = 'Bz data unavailable.';
110
+ if (latestMag?.bzGsm != null) {
111
+ const bz = latestMag.bzGsm;
112
+ if (bz <= -20)
113
+ bzStatus = `Strongly southward Bz ${bz} nT — severe storm-driving conditions.`;
114
+ else if (bz <= -10)
115
+ bzStatus = `Southward Bz ${bz} nT — storm-driving conditions.`;
116
+ else if (bz < 0)
117
+ bzStatus = `Mildly southward Bz ${bz} nT — weakly geoeffective.`;
118
+ else
119
+ bzStatus = `Northward Bz +${bz} nT — quiescent, not storm-driving.`;
120
+ }
121
+ return {
122
+ plasma: plasma.map((r) => ({
123
+ timeTag: r.timeTag,
124
+ densityPerCm3: r.densityPerCm3,
125
+ speedKmS: r.speedKmS,
126
+ temperatureK: r.temperatureK,
127
+ })),
128
+ mag: mag.map((r) => ({
129
+ timeTag: r.timeTag,
130
+ bxGsm: r.bxGsm,
131
+ byGsm: r.byGsm,
132
+ bzGsm: r.bzGsm,
133
+ bt: r.bt,
134
+ })),
135
+ latestPlasma: latestPlasma
136
+ ? {
137
+ timeTag: latestPlasma.timeTag,
138
+ densityPerCm3: latestPlasma.densityPerCm3,
139
+ speedKmS: latestPlasma.speedKmS,
140
+ temperatureK: latestPlasma.temperatureK,
141
+ }
142
+ : null,
143
+ latestMag: latestMag
144
+ ? {
145
+ timeTag: latestMag.timeTag,
146
+ bxGsm: latestMag.bxGsm,
147
+ byGsm: latestMag.byGsm,
148
+ bzGsm: latestMag.bzGsm,
149
+ bt: latestMag.bt,
150
+ }
151
+ : null,
152
+ bzStatus,
153
+ plasmaCount: plasma.length,
154
+ magCount: mag.length,
155
+ };
156
+ },
157
+ format: (result) => {
158
+ const lines = [];
159
+ lines.push('## Solar Wind (DSCOVR)');
160
+ lines.push(`**Bz Status:** ${result.bzStatus}`);
161
+ lines.push(`**Plasma readings:** ${result.plasmaCount} | **Mag readings:** ${result.magCount}`);
162
+ if (result.latestPlasma) {
163
+ const p = result.latestPlasma;
164
+ lines.push('');
165
+ lines.push('### Latest Plasma');
166
+ lines.push(`**Time:** ${p.timeTag}`);
167
+ lines.push(`- Speed: ${p.speedKmS != null ? `${p.speedKmS} km/s` : 'N/A'}`);
168
+ lines.push(`- Density: ${p.densityPerCm3 != null ? `${p.densityPerCm3} n/cm³` : 'N/A'}`);
169
+ lines.push(`- Temperature: ${p.temperatureK != null ? `${p.temperatureK} K` : 'N/A'}`);
170
+ }
171
+ if (result.latestMag) {
172
+ const m = result.latestMag;
173
+ lines.push('');
174
+ lines.push('### Latest Magnetic Field');
175
+ lines.push(`**Time:** ${m.timeTag}`);
176
+ lines.push(`- Bz (GSM): ${m.bzGsm != null ? `${m.bzGsm} nT` : 'N/A'} ← storm driver`);
177
+ lines.push(`- Bt (total): ${m.bt != null ? `${m.bt} nT` : 'N/A'}`);
178
+ lines.push(`- Bx: ${m.bxGsm != null ? `${m.bxGsm} nT` : 'N/A'} | By: ${m.byGsm != null ? `${m.byGsm} nT` : 'N/A'}`);
179
+ }
180
+ if (result.plasma.length > 0) {
181
+ lines.push('');
182
+ lines.push('### Plasma Time Series');
183
+ for (const r of result.plasma) {
184
+ lines.push(`- ${r.timeTag}: speed=${r.speedKmS != null ? `${r.speedKmS} km/s` : 'N/A'}, density=${r.densityPerCm3 != null ? `${r.densityPerCm3} n/cm³` : 'N/A'}, temp=${r.temperatureK != null ? `${r.temperatureK} K` : 'N/A'}`);
185
+ }
186
+ }
187
+ if (result.mag.length > 0) {
188
+ lines.push('');
189
+ lines.push('### Mag Time Series');
190
+ for (const r of result.mag) {
191
+ lines.push(`- ${r.timeTag}: Bz=${r.bzGsm != null ? `${r.bzGsm} nT` : 'N/A'}, Bt=${r.bt != null ? `${r.bt} nT` : 'N/A'}, Bx=${r.bxGsm != null ? `${r.bxGsm} nT` : 'N/A'}, By=${r.byGsm != null ? `${r.byGsm} nT` : 'N/A'}`);
192
+ }
193
+ }
194
+ return [{ type: 'text', text: lines.join('\n') }];
195
+ },
196
+ });
197
+ //# sourceMappingURL=get-solar-wind.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-solar-wind.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-solar-wind.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * @fileoverview Barrel export for all tool definitions.
3
+ * @module mcp-server/tools/definitions/index
4
+ */
5
+ export declare const allToolDefinitions: (import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
6
+ active_only: import("zod").ZodDefault<import("zod").ZodBoolean>;
7
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
8
+ alerts: import("zod").ZodArray<import("zod").ZodObject<{
9
+ productId: import("zod").ZodString;
10
+ productType: import("zod").ZodEnum<{
11
+ Warning: "Warning";
12
+ Watch: "Watch";
13
+ Alert: "Alert";
14
+ Summary: "Summary";
15
+ Other: "Other";
16
+ }>;
17
+ level: import("zod").ZodNumber;
18
+ phenomenon: import("zod").ZodString;
19
+ issueDatetime: import("zod").ZodString;
20
+ validFrom: import("zod").ZodNullable<import("zod").ZodString>;
21
+ validTo: import("zod").ZodNullable<import("zod").ZodString>;
22
+ message: import("zod").ZodString;
23
+ }, import("zod/v4/core").$strip>>;
24
+ totalCount: import("zod").ZodNumber;
25
+ fetchedAt: import("zod").ZodString;
26
+ }, import("zod/v4/core").$strip>, readonly [{
27
+ readonly reason: "feed_unavailable";
28
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
29
+ readonly when: "SWPC endpoint returns non-OK status or times out after retries.";
30
+ readonly retryable: true;
31
+ readonly recovery: "Retry in 30–60 seconds; SWPC feeds occasionally lag during high-activity events.";
32
+ }], {
33
+ readonly notice: import("zod").ZodOptional<import("zod").ZodString>;
34
+ }> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
35
+ latitude: import("zod").ZodOptional<import("zod").ZodNumber>;
36
+ longitude: import("zod").ZodOptional<import("zod").ZodNumber>;
37
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
38
+ observationTime: import("zod").ZodString;
39
+ forecastTime: import("zod").ZodString;
40
+ localLookup: import("zod").ZodNullable<import("zod").ZodObject<{
41
+ requestedLatitude: import("zod").ZodNumber;
42
+ requestedLongitude: import("zod").ZodNumber;
43
+ gridLatitude: import("zod").ZodNumber;
44
+ gridLongitude: import("zod").ZodNumber;
45
+ auroraPercent: import("zod").ZodNumber;
46
+ minKpRequired: import("zod").ZodNumber;
47
+ verdict: import("zod").ZodString;
48
+ }, import("zod/v4/core").$strip>>;
49
+ gridPointCount: import("zod").ZodNumber;
50
+ topAuroraPercent: import("zod").ZodNumber;
51
+ topAuroraRegion: import("zod").ZodString;
52
+ }, import("zod/v4/core").$strip>, readonly [{
53
+ readonly reason: "feed_unavailable";
54
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
55
+ readonly when: "SWPC endpoint returns non-OK status or times out after retries.";
56
+ readonly retryable: true;
57
+ readonly recovery: "Retry in 30–60 seconds; SWPC feeds occasionally lag during high-activity events.";
58
+ }, {
59
+ readonly reason: "invalid_coordinates";
60
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.InvalidParams;
61
+ readonly when: "latitude is outside −90–90 or longitude is outside −180–180.";
62
+ readonly recovery: "Provide latitude in range −90 to 90 and longitude in range −180 to 180.";
63
+ }], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
64
+ observedAt: import("zod").ZodString;
65
+ currentKp: import("zod").ZodNumber;
66
+ currentGScale: import("zod").ZodNumber;
67
+ auroraLatitude: import("zod").ZodString;
68
+ today: import("zod").ZodObject<{
69
+ G: import("zod").ZodObject<{
70
+ scale: import("zod").ZodNumber;
71
+ text: import("zod").ZodString;
72
+ label: import("zod").ZodString;
73
+ }, import("zod/v4/core").$strip>;
74
+ R: import("zod").ZodObject<{
75
+ scale: import("zod").ZodNumber;
76
+ text: import("zod").ZodString;
77
+ label: import("zod").ZodString;
78
+ }, import("zod/v4/core").$strip>;
79
+ S: import("zod").ZodObject<{
80
+ scale: import("zod").ZodNumber;
81
+ text: import("zod").ZodString;
82
+ label: import("zod").ZodString;
83
+ }, import("zod/v4/core").$strip>;
84
+ }, import("zod/v4/core").$strip>;
85
+ forecast: import("zod").ZodArray<import("zod").ZodObject<{
86
+ date: import("zod").ZodString;
87
+ G: import("zod").ZodObject<{
88
+ scale: import("zod").ZodNumber;
89
+ text: import("zod").ZodString;
90
+ label: import("zod").ZodString;
91
+ }, import("zod/v4/core").$strip>;
92
+ R: import("zod").ZodObject<{
93
+ scale: import("zod").ZodNumber;
94
+ text: import("zod").ZodString;
95
+ label: import("zod").ZodString;
96
+ }, import("zod/v4/core").$strip>;
97
+ S: import("zod").ZodObject<{
98
+ scale: import("zod").ZodNumber;
99
+ text: import("zod").ZodString;
100
+ label: import("zod").ZodString;
101
+ }, import("zod/v4/core").$strip>;
102
+ }, import("zod/v4/core").$strip>>;
103
+ summary: import("zod").ZodString;
104
+ }, import("zod/v4/core").$strip>, readonly [{
105
+ readonly reason: "feed_unavailable";
106
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
107
+ readonly when: "SWPC endpoint returns non-OK status or times out after retries.";
108
+ readonly retryable: true;
109
+ readonly recovery: "Retry in 30–60 seconds; SWPC feeds occasionally lag during high-activity events.";
110
+ }], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
111
+ window_days: import("zod").ZodDefault<import("zod").ZodNumber>;
112
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
113
+ observed: import("zod").ZodArray<import("zod").ZodObject<{
114
+ timeTag: import("zod").ZodString;
115
+ kp: import("zod").ZodNumber;
116
+ gScale: import("zod").ZodNumber;
117
+ gLabel: import("zod").ZodString;
118
+ auroraLatitude: import("zod").ZodString;
119
+ }, import("zod/v4/core").$strip>>;
120
+ forecast: import("zod").ZodArray<import("zod").ZodObject<{
121
+ timeTag: import("zod").ZodString;
122
+ kp: import("zod").ZodNumber;
123
+ observed: import("zod").ZodString;
124
+ noaaScale: import("zod").ZodNullable<import("zod").ZodString>;
125
+ }, import("zod/v4/core").$strip>>;
126
+ currentKp: import("zod").ZodNumber;
127
+ currentGScale: import("zod").ZodNumber;
128
+ auroraLatitude: import("zod").ZodString;
129
+ observedCount: import("zod").ZodNumber;
130
+ }, import("zod/v4/core").$strip>, readonly [{
131
+ readonly reason: "feed_unavailable";
132
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
133
+ readonly when: "SWPC endpoint returns non-OK status or times out after retries.";
134
+ readonly retryable: true;
135
+ readonly recovery: "Retry in 30–60 seconds; SWPC feeds occasionally lag during high-activity events.";
136
+ }], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
137
+ include_regions: import("zod").ZodDefault<import("zod").ZodBoolean>;
138
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
139
+ latestXray: import("zod").ZodNullable<import("zod").ZodObject<{
140
+ timeTag: import("zod").ZodString;
141
+ fluxWm2: import("zod").ZodNumber;
142
+ flareClass: import("zod").ZodString;
143
+ satellite: import("zod").ZodNumber;
144
+ }, import("zod/v4/core").$strip>>;
145
+ recentXray: import("zod").ZodArray<import("zod").ZodObject<{
146
+ timeTag: import("zod").ZodString;
147
+ fluxWm2: import("zod").ZodNumber;
148
+ flareClass: import("zod").ZodString;
149
+ satellite: import("zod").ZodNumber;
150
+ }, import("zod/v4/core").$strip>>;
151
+ probabilities: import("zod").ZodArray<import("zod").ZodObject<{
152
+ date: import("zod").ZodString;
153
+ cClass1Day: import("zod").ZodNumber;
154
+ mClass1Day: import("zod").ZodNumber;
155
+ xClass1Day: import("zod").ZodNumber;
156
+ protons1Day: import("zod").ZodNumber;
157
+ }, import("zod/v4/core").$strip>>;
158
+ latestProton: import("zod").ZodNullable<import("zod").ZodObject<{
159
+ timeTag: import("zod").ZodString;
160
+ fluxPfu: import("zod").ZodNumber;
161
+ sScale: import("zod").ZodNumber;
162
+ energy: import("zod").ZodString;
163
+ }, import("zod/v4/core").$strip>>;
164
+ sScale: import("zod").ZodNumber;
165
+ sScaleText: import("zod").ZodString;
166
+ activeRegions: import("zod").ZodArray<import("zod").ZodObject<{
167
+ region: import("zod").ZodNumber;
168
+ location: import("zod").ZodString;
169
+ latitude: import("zod").ZodString;
170
+ spotClass: import("zod").ZodString;
171
+ numberSpots: import("zod").ZodNumber;
172
+ magClass: import("zod").ZodString;
173
+ cFlareProbability: import("zod").ZodNumber;
174
+ mFlareProbability: import("zod").ZodNumber;
175
+ xFlareProbability: import("zod").ZodNumber;
176
+ protonProbability: import("zod").ZodNumber;
177
+ observedDate: import("zod").ZodString;
178
+ }, import("zod/v4/core").$strip>>;
179
+ fetchedAt: import("zod").ZodString;
180
+ }, import("zod/v4/core").$strip>, readonly [{
181
+ readonly reason: "feed_unavailable";
182
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
183
+ readonly when: "SWPC endpoint returns non-OK status or times out after retries.";
184
+ readonly retryable: true;
185
+ readonly recovery: "Retry in 30–60 seconds; SWPC feeds occasionally lag during high-activity events.";
186
+ }], undefined> | import("@cyanheads/mcp-ts-core").ToolDefinition<import("zod").ZodObject<{
187
+ window_hours: import("zod").ZodDefault<import("zod").ZodNumber>;
188
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
189
+ plasma: import("zod").ZodArray<import("zod").ZodObject<{
190
+ timeTag: import("zod").ZodString;
191
+ densityPerCm3: import("zod").ZodNullable<import("zod").ZodNumber>;
192
+ speedKmS: import("zod").ZodNullable<import("zod").ZodNumber>;
193
+ temperatureK: import("zod").ZodNullable<import("zod").ZodNumber>;
194
+ }, import("zod/v4/core").$strip>>;
195
+ mag: import("zod").ZodArray<import("zod").ZodObject<{
196
+ timeTag: import("zod").ZodString;
197
+ bxGsm: import("zod").ZodNullable<import("zod").ZodNumber>;
198
+ byGsm: import("zod").ZodNullable<import("zod").ZodNumber>;
199
+ bzGsm: import("zod").ZodNullable<import("zod").ZodNumber>;
200
+ bt: import("zod").ZodNullable<import("zod").ZodNumber>;
201
+ }, import("zod/v4/core").$strip>>;
202
+ latestPlasma: import("zod").ZodNullable<import("zod").ZodObject<{
203
+ timeTag: import("zod").ZodString;
204
+ densityPerCm3: import("zod").ZodNullable<import("zod").ZodNumber>;
205
+ speedKmS: import("zod").ZodNullable<import("zod").ZodNumber>;
206
+ temperatureK: import("zod").ZodNullable<import("zod").ZodNumber>;
207
+ }, import("zod/v4/core").$strip>>;
208
+ latestMag: import("zod").ZodNullable<import("zod").ZodObject<{
209
+ timeTag: import("zod").ZodString;
210
+ bxGsm: import("zod").ZodNullable<import("zod").ZodNumber>;
211
+ byGsm: import("zod").ZodNullable<import("zod").ZodNumber>;
212
+ bzGsm: import("zod").ZodNullable<import("zod").ZodNumber>;
213
+ bt: import("zod").ZodNullable<import("zod").ZodNumber>;
214
+ }, import("zod/v4/core").$strip>>;
215
+ bzStatus: import("zod").ZodString;
216
+ plasmaCount: import("zod").ZodNumber;
217
+ magCount: import("zod").ZodNumber;
218
+ }, import("zod/v4/core").$strip>, readonly [{
219
+ readonly reason: "feed_unavailable";
220
+ readonly code: import("@cyanheads/mcp-ts-core/errors").JsonRpcErrorCode.ServiceUnavailable;
221
+ readonly when: "SWPC endpoint returns non-OK status or times out after retries.";
222
+ readonly retryable: true;
223
+ readonly recovery: "Retry in 30–60 seconds; SWPC feeds occasionally lag during high-activity events.";
224
+ }], undefined>)[];
225
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO9B,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @fileoverview Barrel export for all tool definitions.
3
+ * @module mcp-server/tools/definitions/index
4
+ */
5
+ import { getAlerts } from './get-alerts.tool.js';
6
+ import { getAuroraForecast } from './get-aurora-forecast.tool.js';
7
+ import { getConditions } from './get-conditions.tool.js';
8
+ import { getKpIndex } from './get-kp-index.tool.js';
9
+ import { getSolarActivity } from './get-solar-activity.tool.js';
10
+ import { getSolarWind } from './get-solar-wind.tool.js';
11
+ export const allToolDefinitions = [
12
+ getConditions,
13
+ getAlerts,
14
+ getKpIndex,
15
+ getSolarWind,
16
+ getSolarActivity,
17
+ getAuroraForecast,
18
+ ];
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,aAAa;IACb,SAAS;IACT,UAAU;IACV,YAAY;IACZ,gBAAgB;IAChB,iBAAiB;CAClB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @fileoverview NOAA Space Weather Prediction Center (SWPC) feed client.
3
+ * Wraps keyless public JSON feeds from services.swpc.noaa.gov, normalizes the
4
+ * diverse feed shapes (array-of-arrays, array-of-objects, keyed objects) into
5
+ * clean typed domain records, and exposes per-feed methods used by all tools.
6
+ * @module services/space-weather/space-weather-service
7
+ */
8
+ import type { Context } from '@cyanheads/mcp-ts-core';
9
+ import type { AppConfig } from '@cyanheads/mcp-ts-core/config';
10
+ import type { StorageService } from '@cyanheads/mcp-ts-core/storage';
11
+ import type { AuroraForecastData, KpForecast, KpObservation, NoaaScalesData, ProtonFlux, SolarProbabilities, SolarRegion, SolarWindMag, SolarWindPlasma, SpaceWeatherAlert, XrayFlux } from './types.js';
12
+ /** NOAA SWPC public feeds client. Initialized once; accessed via accessor. */
13
+ export declare class SpaceWeatherService {
14
+ constructor(_config: AppConfig, _storage: StorageService);
15
+ /** Fetch current NOAA storm scales (today + 3-day forecast). */
16
+ getNoaaScales(ctx: Context): Promise<NoaaScalesData>;
17
+ /** Fetch observed Kp index history. */
18
+ getKpObserved(ctx: Context): Promise<KpObservation[]>;
19
+ /** Fetch Kp 3-day forecast. */
20
+ getKpForecast(ctx: Context): Promise<KpForecast[]>;
21
+ /** Fetch the latest OVATION aurora forecast grid. */
22
+ getAuroraForecast(ctx: Context): Promise<AuroraForecastData>;
23
+ /** Fetch solar wind plasma (7-day, array-of-arrays format). */
24
+ getSolarWindPlasma(ctx: Context): Promise<SolarWindPlasma[]>;
25
+ /** Fetch solar wind magnetic field (7-day, array-of-arrays format). */
26
+ getSolarWindMag(ctx: Context): Promise<SolarWindMag[]>;
27
+ /** Fetch GOES X-ray flux (7-day, long-channel 0.1-0.8nm only). */
28
+ getXrayFlux(ctx: Context): Promise<XrayFlux[]>;
29
+ /** Fetch active solar regions (most recent observed date only). */
30
+ getSolarRegions(ctx: Context): Promise<SolarRegion[]>;
31
+ /** Fetch solar flare probabilities (3-day forward outlook from the latest issued entry). */
32
+ getSolarProbabilities(ctx: Context): Promise<SolarProbabilities[]>;
33
+ /** Fetch GOES integral proton flux (3-day, ≥10 MeV channel). */
34
+ getProtonFlux(ctx: Context): Promise<ProtonFlux[]>;
35
+ /** Fetch SWPC alerts, watches, and warnings. */
36
+ getAlerts(ctx: Context): Promise<SpaceWeatherAlert[]>;
37
+ }
38
+ /** Initialize the SpaceWeatherService singleton. Call once in setup(). */
39
+ export declare function initSpaceWeatherService(config: AppConfig, storage: StorageService): void;
40
+ /** Access the initialized SpaceWeatherService singleton. */
41
+ export declare function getSpaceWeatherService(): SpaceWeatherService;
42
+ //# sourceMappingURL=space-weather-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-weather-service.d.ts","sourceRoot":"","sources":["../../../src/services/space-weather/space-weather-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,cAAc,EAEd,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,QAAQ,EACT,MAAM,YAAY,CAAC;AAgQpB,8EAA8E;AAC9E,qBAAa,mBAAmB;gBAGlB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAIxD,gEAAgE;IAC1D,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IA6C1D,uCAAuC;IACjC,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgB3D,+BAA+B;IACzB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAexD,qDAAqD;IAC/C,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoBlE,+DAA+D;IACzD,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWlE,uEAAuE;IACjE,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAc5D,kEAAkE;IAC5D,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAYpD,mEAAmE;IAC7D,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA8B3D,4FAA4F;IACtF,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA2BxE,gEAAgE;IAC1D,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiBxD,gDAAgD;IAC1C,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CA4B5D;AAMD,0EAA0E;AAC1E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAExF;AAED,4DAA4D;AAC5D,wBAAgB,sBAAsB,IAAI,mBAAmB,CAM5D"}