@cyanheads/noaa-marine-mcp-server 0.3.2 → 0.4.0
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.
- package/AGENTS.md +3 -3
- package/CLAUDE.md +3 -3
- package/README.md +11 -7
- package/changelog/0.4.x/0.4.0.md +31 -0
- package/dist/index.js +1 -12
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/resources/definitions/noaa-marine-station.resource.d.ts +12 -1
- package/dist/mcp-server/resources/definitions/noaa-marine-station.resource.d.ts.map +1 -1
- package/dist/mcp-server/resources/definitions/noaa-marine-station.resource.js +40 -13
- package/dist/mcp-server/resources/definitions/noaa-marine-station.resource.js.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-find-stations.tool.d.ts +30 -6
- package/dist/mcp-server/tools/definitions/noaa-marine-find-stations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-find-stations.tool.js +253 -39
- package/dist/mcp-server/tools/definitions/noaa-marine-find-stations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-conditions.tool.d.ts +6 -3
- package/dist/mcp-server/tools/definitions/noaa-marine-get-conditions.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-conditions.tool.js +53 -16
- package/dist/mcp-server/tools/definitions/noaa-marine-get-conditions.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.js +4 -9
- package/dist/mcp-server/tools/definitions/noaa-marine-get-current-profile.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-currents.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-currents.tool.js +1 -8
- package/dist/mcp-server/tools/definitions/noaa-marine-get-currents.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-ocean-observations.tool.d.ts +2 -2
- package/dist/mcp-server/tools/definitions/noaa-marine-get-ocean-observations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-ocean-observations.tool.js +8 -19
- package/dist/mcp-server/tools/definitions/noaa-marine-get-ocean-observations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-tide-predictions.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-tide-predictions.tool.js +1 -6
- package/dist/mcp-server/tools/definitions/noaa-marine-get-tide-predictions.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-water-level.tool.d.ts +7 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-water-level.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/noaa-marine-get-water-level.tool.js +24 -6
- package/dist/mcp-server/tools/definitions/noaa-marine-get-water-level.tool.js.map +1 -1
- package/dist/services/ndbc/ndbc-service.d.ts +9 -0
- package/dist/services/ndbc/ndbc-service.d.ts.map +1 -1
- package/dist/services/ndbc/ndbc-service.js +249 -110
- package/dist/services/ndbc/ndbc-service.js.map +1 -1
- package/dist/services/ndbc/types.d.ts +55 -15
- package/dist/services/ndbc/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/server.json +3 -3
|
@@ -73,19 +73,115 @@ const STATE_CODES = [
|
|
|
73
73
|
'AS',
|
|
74
74
|
'MP',
|
|
75
75
|
];
|
|
76
|
+
/** Filter values only a CO-OPS row can carry. */
|
|
77
|
+
const COOPS_FILTER_VALUES = ['tide', 'current', 'water_level'];
|
|
78
|
+
/** Filter values only an NDBC row can carry — three data capabilities plus the buoy platform token. */
|
|
79
|
+
const NDBC_FILTER_VALUES = ['met', 'current_profile', 'water_quality', 'buoy'];
|
|
80
|
+
/**
|
|
81
|
+
* The narrowing dimensions the handler applied, echoed on a zero-match search so the
|
|
82
|
+
* caller can tell an unsatisfiable filter combination from a genuine miss.
|
|
83
|
+
*/
|
|
84
|
+
const AppliedSearchSchema = z.object({
|
|
85
|
+
catalogs_read: z
|
|
86
|
+
.array(z.string().describe('Catalog name: coops or ndbc.'))
|
|
87
|
+
.describe('Catalogs this search actually fetched. Empty when source and state cancelled each other out and no catalog was read.'),
|
|
88
|
+
center: z
|
|
89
|
+
.object({
|
|
90
|
+
latitude: z.number().describe('Center latitude the proximity filter used.'),
|
|
91
|
+
longitude: z.number().describe('Center longitude the proximity filter used.'),
|
|
92
|
+
})
|
|
93
|
+
.optional()
|
|
94
|
+
.describe('Proximity-search center, present only when latitude and longitude were supplied.'),
|
|
95
|
+
query: z
|
|
96
|
+
.string()
|
|
97
|
+
.optional()
|
|
98
|
+
.describe('The name/ID substring as the server used it — trimmed and lowercased. Omitted when no query was supplied or it was blank.'),
|
|
99
|
+
radius_km: z
|
|
100
|
+
.number()
|
|
101
|
+
.optional()
|
|
102
|
+
.describe('Radius bound in km, present only when a center was given. Applies whenever a center is present and defaults to 100 km.'),
|
|
103
|
+
source: z.string().describe('The source filter applied: coops, ndbc, or all.'),
|
|
104
|
+
state: z
|
|
105
|
+
.string()
|
|
106
|
+
.optional()
|
|
107
|
+
.describe('The state filter applied. Restricts results to CO-OPS and excludes NDBC.'),
|
|
108
|
+
types: z
|
|
109
|
+
.array(z.string().describe('A requested capability or platform filter value.'))
|
|
110
|
+
.optional()
|
|
111
|
+
.describe('The resolved types filter. Omitted when no types filter narrowed the search.'),
|
|
112
|
+
types_by_source: z
|
|
113
|
+
.object({
|
|
114
|
+
coops: z
|
|
115
|
+
.array(z.string().describe('CO-OPS-only filter value.'))
|
|
116
|
+
.describe('Requested values only a CO-OPS row can carry.'),
|
|
117
|
+
ndbc: z
|
|
118
|
+
.array(z.string().describe('NDBC-only filter value.'))
|
|
119
|
+
.describe('Requested values only an NDBC row can carry.'),
|
|
120
|
+
})
|
|
121
|
+
.optional()
|
|
122
|
+
.describe('The requested types split by the source that can carry them — every value belongs to exactly one source, so a single-source types filter reduces the search to that source.'),
|
|
123
|
+
});
|
|
124
|
+
/** Which station catalogs this search tried to read, and how each one answered. */
|
|
125
|
+
const SourceReportSchema = z.object({
|
|
126
|
+
answered: z
|
|
127
|
+
.array(z.string().describe('Catalog name: coops or ndbc.'))
|
|
128
|
+
.describe('Catalogs that returned a station list — the results cover these only.'),
|
|
129
|
+
attempted: z
|
|
130
|
+
.array(z.string().describe('Catalog name: coops or ndbc.'))
|
|
131
|
+
.describe('Catalogs this search needed, after source and state decided which to read.'),
|
|
132
|
+
failed: z
|
|
133
|
+
.array(z.string().describe('Catalog name: coops or ndbc.'))
|
|
134
|
+
.describe('Catalogs whose fetch rejected. A station served only by one of these is missing.'),
|
|
135
|
+
});
|
|
136
|
+
/**
|
|
137
|
+
* Explains a zero-match search from the dimensions that were actually applied. Every clause
|
|
138
|
+
* names a filter the handler used, so an unsatisfiable combination reads differently from a
|
|
139
|
+
* genuine miss and the recovery points at the filter worth changing.
|
|
140
|
+
*/
|
|
141
|
+
function describeEmptySearch(applied) {
|
|
142
|
+
if (applied.catalogs_read.length === 0) {
|
|
143
|
+
return [
|
|
144
|
+
'No catalog was searched: state is a CO-OPS-only filter that excludes NDBC buoys, and',
|
|
145
|
+
`source="${applied.source}" excludes CO-OPS, so the two leave nothing to read.`,
|
|
146
|
+
`Drop state to reach NDBC buoys by query or coordinates, or keep state="${applied.state}" and set source="coops".`,
|
|
147
|
+
].join(' ');
|
|
148
|
+
}
|
|
149
|
+
const applied_clauses = [];
|
|
150
|
+
const widen = [];
|
|
151
|
+
if (applied.state) {
|
|
152
|
+
applied_clauses.push(`state="${applied.state}" restricted the search to CO-OPS and excluded NDBC buoys, which carry no state`);
|
|
153
|
+
widen.push('drop state and search by query or coordinates to reach NDBC buoys');
|
|
154
|
+
}
|
|
155
|
+
if (applied.types && applied.types_by_source) {
|
|
156
|
+
const list = applied.types.map((t) => `"${t}"`).join(', ');
|
|
157
|
+
const { coops, ndbc } = applied.types_by_source;
|
|
158
|
+
if (ndbc.length === 0) {
|
|
159
|
+
applied_clauses.push(`types ${list} are CO-OPS-only values, so no NDBC row can carry them`);
|
|
160
|
+
}
|
|
161
|
+
else if (coops.length === 0) {
|
|
162
|
+
applied_clauses.push(`types ${list} are NDBC-only values, so no CO-OPS row can carry them`);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
applied_clauses.push(`types ${list} kept only stations carrying one of those values`);
|
|
166
|
+
}
|
|
167
|
+
widen.push('drop types or request another capability');
|
|
168
|
+
}
|
|
169
|
+
if (applied.query) {
|
|
170
|
+
applied_clauses.push(`query "${applied.query}" matched no station name or ID in ${applied.catalogs_read.join(' or ')}`);
|
|
171
|
+
widen.push('shorten the query or check its spelling');
|
|
172
|
+
}
|
|
173
|
+
if (applied.center && applied.radius_km !== undefined) {
|
|
174
|
+
applied_clauses.push(`radius_km ${applied.radius_km} bounded the search around ${applied.center.latitude}, ${applied.center.longitude} — this bound applies whenever a center is given and defaults to 100 km`);
|
|
175
|
+
widen.push('increase radius_km (max 1000)');
|
|
176
|
+
}
|
|
177
|
+
const head = applied_clauses.length > 0
|
|
178
|
+
? `No station matched. Applied: ${applied_clauses.join('; ')}.`
|
|
179
|
+
: `No station matched, and no narrowing filter was applied — ${applied.catalogs_read.join(' and ')} returned no stations at all.`;
|
|
180
|
+
return widen.length > 0 ? `${head} To widen: ${widen.join(', or ')}.` : head;
|
|
181
|
+
}
|
|
76
182
|
export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
77
183
|
title: 'Find Marine Stations',
|
|
78
|
-
description:
|
|
79
|
-
'Returns a unified station list with source, data capabilities, coordinates, and — for NDBC — the physical platform class. ' +
|
|
80
|
-
'This is the required first step to resolve place names or coordinates to station IDs before calling data tools. ' +
|
|
81
|
-
'CO-OPS station IDs are numeric (e.g. 9447130 for Seattle); current station IDs are alphanumeric (e.g. ACT4176). ' +
|
|
82
|
-
'NDBC buoy IDs are 5-character alphanumeric codes (e.g. 46041). ' +
|
|
83
|
-
'Two axes are reported separately: `capabilities`/`type` describe the data products a station serves ' +
|
|
84
|
-
'(tide, current, water_level, met, current_profile), while `platform` is the NDBC physical classification ' +
|
|
85
|
-
'(buoy, fixed, oilrig, dart, tao, usv, other). CO-OPS stations carry no platform class. ' +
|
|
86
|
-
'Provide latitude and longitude together for proximity search, or query/state for name-based search — both may be combined. ' +
|
|
87
|
-
'Note: CO-OPS current stations are cataloged by monitoring capability, not prediction availability. ' +
|
|
88
|
-
'If noaa_marine_get_currents returns no_predictions for a station, try the next nearest current station.',
|
|
184
|
+
description: `Find CO-OPS tide, water-level and current stations and NDBC buoys near a location, by name, or by station ID, returning a unified list with source, data capabilities, coordinates, and — for NDBC — the physical platform class. This is the required first step for resolving a place name, a coordinate pair, or a bare station number to the station IDs the data tools take: CO-OPS tide and water-level IDs are numeric (e.g. 9447130 for Seattle), CO-OPS current IDs are alphanumeric (e.g. ACT4176), and NDBC buoy IDs are 5-character alphanumeric codes (e.g. 46041). Two axes are reported separately — capabilities and type name the data products a station serves (tide, current, water_level, met, current_profile, water_quality), while platform is the NDBC physical classification (buoy, fixed, oilrig, dart, tao, usv, other) that CO-OPS stations do not carry. Supply latitude and longitude together for a proximity search, or query for a name-or-ID substring matched against both sources, or state for CO-OPS coverage in one state; the filters combine, and results lead with an exact ID match unless a proximity search is ordering them by distance. A search that matches nothing is a success with total_found: 0 carrying an echo of the filters that were applied, and a search whose catalogs did not all answer says which source is missing. Note that CO-OPS current stations are cataloged by monitoring capability rather than prediction availability, so when noaa_marine_get_currents returns no_predictions for one, try the next nearest current station.`,
|
|
89
185
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
90
186
|
input: z.object({
|
|
91
187
|
latitude: z
|
|
@@ -111,8 +207,10 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
111
207
|
query: z
|
|
112
208
|
.string()
|
|
113
209
|
.optional()
|
|
114
|
-
.describe('Station name substring to match, case-insensitive
|
|
115
|
-
'
|
|
210
|
+
.describe('Station name or station ID substring to match, case-insensitive, on both sources. ' +
|
|
211
|
+
'E.g. "seattle", "puget sound", "9447130", "46041". A station whose ID matches exactly is ' +
|
|
212
|
+
'returned ahead of name matches, unless latitude/longitude were supplied — a proximity ' +
|
|
213
|
+
'search orders by distance instead. Blank or whitespace-only values are treated as omitted.'),
|
|
116
214
|
state: z
|
|
117
215
|
.enum(STATE_CODES)
|
|
118
216
|
.optional()
|
|
@@ -125,15 +223,24 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
125
223
|
.describe('Data source to search: coops (tide/water-level/current stations), ndbc (buoys), or all (default).'),
|
|
126
224
|
types: z
|
|
127
225
|
.array(z
|
|
128
|
-
.enum([
|
|
129
|
-
|
|
226
|
+
.enum([
|
|
227
|
+
'tide',
|
|
228
|
+
'current',
|
|
229
|
+
'water_level',
|
|
230
|
+
'met',
|
|
231
|
+
'current_profile',
|
|
232
|
+
'water_quality',
|
|
233
|
+
'buoy',
|
|
234
|
+
])
|
|
235
|
+
.describe("Filter value. Six are data capabilities, matched against a station's capabilities list: " +
|
|
130
236
|
'tide (CO-OPS tide predictions → noaa_marine_get_tide_predictions), ' +
|
|
131
237
|
'current (CO-OPS tidal-current predictions → noaa_marine_get_currents), ' +
|
|
132
238
|
'water_level (CO-OPS observed water levels → noaa_marine_get_water_level), ' +
|
|
133
239
|
'met (NDBC meteorological → noaa_marine_get_conditions), ' +
|
|
134
240
|
'current_profile (NDBC observed ocean-current depth profile → noaa_marine_get_current_profile; ' +
|
|
135
|
-
'note this is a different data product and source than CO-OPS `current`)
|
|
136
|
-
'
|
|
241
|
+
'note this is a different data product and source than CO-OPS `current`), ' +
|
|
242
|
+
'water_quality (NDBC sub-surface water-column sensors → noaa_marine_get_ocean_observations). ' +
|
|
243
|
+
'The seventh, buoy, is a physical-platform filter (NDBC platform class equals buoy), not a data ' +
|
|
137
244
|
'capability — use it to select buoy-class platforms regardless of what data they serve.'))
|
|
138
245
|
.optional()
|
|
139
246
|
.describe('Filter by data capability or NDBC platform class. Every returned station matches at least one requested ' +
|
|
@@ -183,31 +290,63 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
183
290
|
capabilities: z
|
|
184
291
|
.array(z.string().describe('Capability identifier, e.g. "tide", "water_level".'))
|
|
185
292
|
.describe('Data products available at this station: any of tide, current, water_level (CO-OPS) or met, ' +
|
|
186
|
-
'current_profile (NDBC). Empty when the station reports no data capability —
|
|
293
|
+
'current_profile, water_quality (NDBC). Empty when the station reports no data capability — ' +
|
|
294
|
+
'platform still identifies it.'),
|
|
187
295
|
})
|
|
188
296
|
.describe('A single station matching the search criteria.'))
|
|
189
|
-
.describe('Stations matching the search criteria, sorted by distance (if lat/lon provided) or name.'),
|
|
297
|
+
.describe('Stations matching the search criteria, sorted by distance (if lat/lon provided) or by exact ID match then name. Empty when nothing matched.'),
|
|
190
298
|
total_found: z
|
|
191
299
|
.number()
|
|
192
|
-
.describe('Total stations matching the filters before the limit was applied.'),
|
|
300
|
+
.describe('Total stations matching the filters before the limit was applied. Zero when nothing matched.'),
|
|
193
301
|
truncated: z
|
|
194
302
|
.boolean()
|
|
195
303
|
.optional()
|
|
196
304
|
.describe('True when total_found exceeds the limit and not all matching stations are returned. Increase limit or narrow filters to see more.'),
|
|
197
305
|
}),
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
306
|
+
enrichment: {
|
|
307
|
+
applied_search: AppliedSearchSchema.optional().describe('The narrowing dimensions this search applied, echoed when nothing matched so the caller can see which filter emptied the result.'),
|
|
308
|
+
notice: z
|
|
309
|
+
.string()
|
|
310
|
+
.optional()
|
|
311
|
+
.describe('Guidance about the result set: why a search matched nothing, which catalog did not answer, or that the list was capped.'),
|
|
312
|
+
sources: SourceReportSchema.optional().describe('Which station catalogs were attempted, answered, and failed. Present only when a catalog fetch rejected, so a partial result set is never read as a complete one.'),
|
|
313
|
+
},
|
|
314
|
+
enrichmentTrailer: {
|
|
315
|
+
applied_search: {
|
|
316
|
+
render: (v) => {
|
|
317
|
+
const parts = [
|
|
318
|
+
`source=${v.source}`,
|
|
319
|
+
`catalogs read: ${v.catalogs_read.join(', ') || 'none'}`,
|
|
320
|
+
];
|
|
321
|
+
if (v.state)
|
|
322
|
+
parts.push(`state=${v.state}`);
|
|
323
|
+
if (v.types)
|
|
324
|
+
parts.push(`types=[${v.types.join(', ')}]`);
|
|
325
|
+
if (v.query)
|
|
326
|
+
parts.push(`query="${v.query}"`);
|
|
327
|
+
if (v.center && v.radius_km !== undefined) {
|
|
328
|
+
parts.push(`within ${v.radius_km} km of ${v.center.latitude}, ${v.center.longitude}`);
|
|
329
|
+
}
|
|
330
|
+
return `**Applied search:** ${parts.join(' · ')}`;
|
|
331
|
+
},
|
|
332
|
+
},
|
|
333
|
+
sources: {
|
|
334
|
+
render: (v) => `**Sources:** attempted ${v.attempted.join(', ')} · answered ${v.answered.join(', ') || 'none'} · failed ${v.failed.join(', ') || 'none'}`,
|
|
204
335
|
},
|
|
336
|
+
},
|
|
337
|
+
errors: [
|
|
205
338
|
{
|
|
206
339
|
reason: 'incomplete_coordinates',
|
|
207
340
|
code: JsonRpcErrorCode.InvalidParams,
|
|
208
341
|
when: 'Only one of latitude/longitude was supplied — proximity search needs the pair.',
|
|
209
342
|
recovery: 'Supply both latitude and longitude to search by proximity, or drop both and search by query or state instead.',
|
|
210
343
|
},
|
|
344
|
+
{
|
|
345
|
+
reason: 'sources_unavailable',
|
|
346
|
+
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
347
|
+
when: 'Every station catalog this search needed failed to load, so no station list could be searched.',
|
|
348
|
+
recovery: 'Retry the search in a few moments — a catalog is cached for six hours once a fetch succeeds.',
|
|
349
|
+
},
|
|
211
350
|
],
|
|
212
351
|
async handler(input, ctx) {
|
|
213
352
|
const coopsSvc = getCoopsService();
|
|
@@ -223,7 +362,7 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
223
362
|
const center = lat !== undefined && lon !== undefined ? { lat, lon } : undefined;
|
|
224
363
|
// Blank/whitespace-only queries carry no search intent — treat them as omitted
|
|
225
364
|
// rather than substring-matching station names that contain runs of spaces.
|
|
226
|
-
const query = input.query?.trim().toLowerCase();
|
|
365
|
+
const query = input.query?.trim().toLowerCase() || undefined;
|
|
227
366
|
// An empty types array means the same thing as no types array.
|
|
228
367
|
const typeFilter = input.types?.length ? input.types : undefined;
|
|
229
368
|
/**
|
|
@@ -233,6 +372,12 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
233
372
|
* capability — both flow through one predicate.
|
|
234
373
|
*/
|
|
235
374
|
const matchesTypeFilter = (tokens) => !typeFilter || typeFilter.some((t) => tokens.includes(t));
|
|
375
|
+
/**
|
|
376
|
+
* True when the station's name or ID carries the query substring. CO-OPS IDs are what tide
|
|
377
|
+
* tables and charts print, so an ID query must reach them the way it already reaches NDBC
|
|
378
|
+
* IDs — both sources run the same predicate so the two can't drift apart.
|
|
379
|
+
*/
|
|
380
|
+
const matchesQuery = (name, id) => !query || name.toLowerCase().includes(query) || id.toLowerCase().includes(query);
|
|
236
381
|
/**
|
|
237
382
|
* The data capability a row leads with — always drawn from `capabilities`, never the
|
|
238
383
|
* platform class. Under a capability filter this is the first requested capability the
|
|
@@ -242,6 +387,8 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
242
387
|
*/
|
|
243
388
|
const primaryTypeFor = (capabilities) => typeFilter?.find((t) => capabilities.includes(t)) ?? capabilities[0];
|
|
244
389
|
const results = [];
|
|
390
|
+
/** `source:id` of every row whose station ID equals the query exactly — these lead the list. */
|
|
391
|
+
const exactIdMatches = new Set();
|
|
245
392
|
// Fetch CO-OPS and NDBC lists in parallel.
|
|
246
393
|
// `state` is a CO-OPS-only filter — NDBC buoys carry no state, so a state-scoped
|
|
247
394
|
// search must exclude them (otherwise state-less global buoys flood the results).
|
|
@@ -257,6 +404,26 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
257
404
|
: Promise.resolve(null),
|
|
258
405
|
includeNdbc ? ndbcSvc.getActiveStations(ctx) : Promise.resolve(null),
|
|
259
406
|
]);
|
|
407
|
+
// A rejected leg is a source the caller never got to search. Record it rather than
|
|
408
|
+
// letting the surviving source's rows read as the whole catalog.
|
|
409
|
+
const attempted = [];
|
|
410
|
+
const failed = [];
|
|
411
|
+
if (includeCoops) {
|
|
412
|
+
attempted.push('coops');
|
|
413
|
+
if (coopsResults.status === 'rejected')
|
|
414
|
+
failed.push('coops');
|
|
415
|
+
}
|
|
416
|
+
if (includeNdbc) {
|
|
417
|
+
attempted.push('ndbc');
|
|
418
|
+
if (ndbcResult.status === 'rejected')
|
|
419
|
+
failed.push('ndbc');
|
|
420
|
+
}
|
|
421
|
+
const answered = attempted.filter((s) => !failed.includes(s));
|
|
422
|
+
// Every catalog the search needed is down. Zero rows here is an upstream failure, not an
|
|
423
|
+
// empty search, so it must not be reported as one.
|
|
424
|
+
if (attempted.length > 0 && answered.length === 0) {
|
|
425
|
+
throw ctx.fail('sources_unavailable', `The ${failed.join(' and ')} station ${failed.length > 1 ? 'catalogs' : 'catalog'} could not be read, so no station list was searched.`, { ...ctx.recoveryFor('sources_unavailable'), failed_sources: failed });
|
|
426
|
+
}
|
|
260
427
|
// Process CO-OPS stations
|
|
261
428
|
if (coopsResults.status === 'fulfilled' && coopsResults.value) {
|
|
262
429
|
const [tideStations, currentStations, waterLevelStations] = coopsResults.value;
|
|
@@ -279,7 +446,7 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
279
446
|
continue;
|
|
280
447
|
if (input.state && s.state !== input.state)
|
|
281
448
|
continue;
|
|
282
|
-
if (
|
|
449
|
+
if (!matchesQuery(s.name, s.id))
|
|
283
450
|
continue;
|
|
284
451
|
const entry = {
|
|
285
452
|
station_id: s.id,
|
|
@@ -300,6 +467,8 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
300
467
|
continue;
|
|
301
468
|
entry.distance_km = Math.round(dist * 10) / 10;
|
|
302
469
|
}
|
|
470
|
+
if (query && s.id.toLowerCase() === query)
|
|
471
|
+
exactIdMatches.add(`coops:${s.id}`);
|
|
303
472
|
results.push(entry);
|
|
304
473
|
}
|
|
305
474
|
}
|
|
@@ -309,13 +478,16 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
309
478
|
// Data capabilities come only from the NDBC catalog flags — never the platform class.
|
|
310
479
|
// `current_profile` is NDBC observed ocean currents (the .adcp profile
|
|
311
480
|
// noaa_marine_get_current_profile reads), named apart from CO-OPS `current` (tidal-current
|
|
312
|
-
// predictions) so both stay filterable without a one-letter collision.
|
|
313
|
-
//
|
|
481
|
+
// predictions) so both stay filterable without a one-letter collision. `water_quality` is
|
|
482
|
+
// the sub-surface water-column flag noaa_marine_get_ocean_observations reads. When every
|
|
483
|
+
// flag is off the list stays empty — a bare platform is not a fabricated "buoy" capability (#13).
|
|
314
484
|
const capabilities = [];
|
|
315
485
|
if (s.hasMet)
|
|
316
486
|
capabilities.push('met');
|
|
317
487
|
if (s.hasCurrents)
|
|
318
488
|
capabilities.push('current_profile');
|
|
489
|
+
if (s.hasWaterQuality)
|
|
490
|
+
capabilities.push('water_quality');
|
|
319
491
|
// Platform class (buoy/fixed/oilrig/dart/tao/usv/other) is a separate axis. Fold it into
|
|
320
492
|
// the tokens the filter matches so a `buoy` platform filter reaches bare platforms; only
|
|
321
493
|
// platform values present in the `types` enum (currently just `buoy`) are ever requestable.
|
|
@@ -323,7 +495,7 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
323
495
|
const matchTokens = platform ? [...capabilities, platform] : capabilities;
|
|
324
496
|
if (!matchesTypeFilter(matchTokens))
|
|
325
497
|
continue;
|
|
326
|
-
if (
|
|
498
|
+
if (!matchesQuery(s.name, s.id))
|
|
327
499
|
continue;
|
|
328
500
|
const entry = {
|
|
329
501
|
station_id: s.id,
|
|
@@ -344,35 +516,77 @@ export const noaaMarineFindStations = tool('noaa_marine_find_stations', {
|
|
|
344
516
|
continue;
|
|
345
517
|
entry.distance_km = Math.round(dist * 10) / 10;
|
|
346
518
|
}
|
|
519
|
+
if (query && s.id.toLowerCase() === query)
|
|
520
|
+
exactIdMatches.add(`ndbc:${s.id}`);
|
|
347
521
|
results.push(entry);
|
|
348
522
|
}
|
|
349
523
|
}
|
|
350
|
-
// Sort: by distance if lat/lon provided, otherwise by name
|
|
524
|
+
// Sort: by distance if lat/lon provided, otherwise exact ID matches first, then by name.
|
|
525
|
+
// NDBC mirrors CO-OPS gauges under names that start with the CO-OPS number, so a plain
|
|
526
|
+
// name sort puts the mirror ahead of the station that actually carries the queried ID.
|
|
351
527
|
if (center) {
|
|
352
528
|
results.sort((a, b) => (a.distance_km ?? 9999) - (b.distance_km ?? 9999));
|
|
353
529
|
}
|
|
354
530
|
else {
|
|
355
|
-
|
|
531
|
+
const idRank = (r) => exactIdMatches.has(`${r.source}:${r.station_id}`) ? 0 : 1;
|
|
532
|
+
results.sort((a, b) => idRank(a) - idRank(b) || a.name.localeCompare(b.name));
|
|
356
533
|
}
|
|
357
534
|
const total_found = results.length;
|
|
535
|
+
const stations = results.slice(0, input.limit);
|
|
536
|
+
const truncated = stations.length < total_found;
|
|
537
|
+
// One notice reaches the caller, so every source of guidance composes into it —
|
|
538
|
+
// ctx.enrich.truncated() writes `notice` last-wins and would otherwise erase the rest.
|
|
539
|
+
const notices = [];
|
|
540
|
+
if (failed.length > 0) {
|
|
541
|
+
const report = { answered, attempted, failed };
|
|
542
|
+
ctx.enrich({ sources: report });
|
|
543
|
+
notices.push(`The ${failed.join(' and ')} ${failed.length > 1 ? 'catalogs' : 'catalog'} could not be read, so these results cover ${answered.join(' and ')} only — a station carried only by ${failed.join(' or ')} is missing from them.`);
|
|
544
|
+
}
|
|
358
545
|
if (total_found === 0) {
|
|
359
|
-
|
|
360
|
-
|
|
546
|
+
const applied = {
|
|
547
|
+
catalogs_read: answered,
|
|
548
|
+
source: input.source,
|
|
549
|
+
...(center ? { center: { latitude: center.lat, longitude: center.lon } } : {}),
|
|
550
|
+
...(center ? { radius_km: input.radius_km } : {}),
|
|
551
|
+
...(query ? { query } : {}),
|
|
552
|
+
...(input.state ? { state: input.state } : {}),
|
|
553
|
+
...(typeFilter
|
|
554
|
+
? {
|
|
555
|
+
types: [...typeFilter],
|
|
556
|
+
types_by_source: {
|
|
557
|
+
coops: typeFilter.filter((t) => COOPS_FILTER_VALUES.includes(t)),
|
|
558
|
+
ndbc: typeFilter.filter((t) => NDBC_FILTER_VALUES.includes(t)),
|
|
559
|
+
},
|
|
560
|
+
}
|
|
561
|
+
: {}),
|
|
562
|
+
};
|
|
563
|
+
ctx.enrich({ applied_search: applied });
|
|
564
|
+
notices.push(describeEmptySearch(applied));
|
|
565
|
+
}
|
|
566
|
+
if (truncated) {
|
|
567
|
+
ctx.enrich.truncated({
|
|
568
|
+
shown: stations.length,
|
|
569
|
+
cap: input.limit,
|
|
570
|
+
ceiling: total_found,
|
|
571
|
+
guidance: [
|
|
572
|
+
`Showing ${stations.length} of ${total_found} matches — raise limit (max 200) or narrow the filters to reach the rest.`,
|
|
573
|
+
...notices,
|
|
574
|
+
].join(' '),
|
|
361
575
|
});
|
|
362
576
|
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
ctx.enrich.truncated({ shown: stations.length, cap: input.limit, ceiling: total_found });
|
|
577
|
+
else if (notices.length > 0) {
|
|
578
|
+
ctx.enrich.notice(notices.join(' '));
|
|
366
579
|
}
|
|
367
580
|
ctx.log.info('Station search complete', {
|
|
368
581
|
total_found,
|
|
369
582
|
returned: stations.length,
|
|
370
583
|
source: input.source,
|
|
584
|
+
failed_sources: failed,
|
|
371
585
|
});
|
|
372
586
|
return {
|
|
373
587
|
stations,
|
|
374
588
|
total_found,
|
|
375
|
-
...(
|
|
589
|
+
...(truncated ? { truncated: true } : {}),
|
|
376
590
|
};
|
|
377
591
|
},
|
|
378
592
|
format: (result) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noaa-marine-find-stations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-find-stations.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"noaa-marine-find-stations.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-find-stations.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ export declare const noaaMarineGetConditions: import("@cyanheads/mcp-ts-core").T
|
|
|
9
9
|
}, z.core.$strip>, z.ZodObject<{
|
|
10
10
|
station_id: z.ZodString;
|
|
11
11
|
station_name: z.ZodString;
|
|
12
|
-
latitude: z.ZodNumber
|
|
13
|
-
longitude: z.ZodNumber
|
|
12
|
+
latitude: z.ZodNullable<z.ZodNumber>;
|
|
13
|
+
longitude: z.ZodNullable<z.ZodNumber>;
|
|
14
14
|
observed_at: z.ZodString;
|
|
15
15
|
source: z.ZodString;
|
|
16
16
|
wind_direction_deg: z.ZodNullable<z.ZodNumber>;
|
|
@@ -20,6 +20,7 @@ export declare const noaaMarineGetConditions: import("@cyanheads/mcp-ts-core").T
|
|
|
20
20
|
dominant_period_sec: z.ZodNullable<z.ZodNumber>;
|
|
21
21
|
average_period_sec: z.ZodNullable<z.ZodNumber>;
|
|
22
22
|
mean_wave_direction_deg: z.ZodNullable<z.ZodNumber>;
|
|
23
|
+
waves_observed_at: z.ZodNullable<z.ZodString>;
|
|
23
24
|
pressure_hpa: z.ZodNullable<z.ZodNumber>;
|
|
24
25
|
air_temp_c: z.ZodNullable<z.ZodNumber>;
|
|
25
26
|
water_temp_c: z.ZodNullable<z.ZodNumber>;
|
|
@@ -36,5 +37,7 @@ export declare const noaaMarineGetConditions: import("@cyanheads/mcp-ts-core").T
|
|
|
36
37
|
readonly code: JsonRpcErrorCode.NotFound;
|
|
37
38
|
readonly when: "Buoy file exists but all sensor fields are MM (missing) — buoy offline or sensor failure.";
|
|
38
39
|
readonly recovery: "This station may be temporarily offline — try a nearby one from noaa_marine_find_stations with source=\"ndbc\" and types=[\"met\"].";
|
|
39
|
-
}],
|
|
40
|
+
}], {
|
|
41
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}>;
|
|
40
43
|
//# sourceMappingURL=noaa-marine-get-conditions.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noaa-marine-get-conditions.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-get-conditions.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"noaa-marine-get-conditions.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/noaa-marine-get-conditions.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAiB3E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqOlC,CAAC"}
|