@dangahagan/weather-mcp 1.33.9 → 1.33.11
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/README.md +3 -3
- package/dist/config/tools.js +2 -2
- package/dist/config/tools.js.map +1 -1
- package/dist/services/locationStore.d.ts +7 -0
- package/dist/services/locationStore.d.ts.map +1 -1
- package/dist/services/locationStore.js +32 -12
- package/dist/services/locationStore.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@dangahagan/weather-mcp)
|
|
4
4
|
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.dgahagan/weather-mcp)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
[](./docs/testing/TEST_SUITE_README.md)
|
|
7
7
|
[](https://nodejs.org)
|
|
8
8
|
|
|
9
9
|
**Give your AI assistant real weather data — 17 tools, zero API keys, zero signup, zero cost.**
|
|
@@ -58,7 +58,7 @@ Choose this one if you want:
|
|
|
58
58
|
|
|
59
59
|
- **Genuinely free** — every data source is a free public API. No trial that expires, no credit card, no rate-limited "free tier" bait.
|
|
60
60
|
- **No API keys** — install to first forecast in under a minute. Nothing to configure, nothing to leak into a repo. ([Three optional keys](#optional-api-keys) add extras if you want them; the default configuration needs none.)
|
|
61
|
-
- **Fully open source** — MIT licensed, readable TypeScript,
|
|
61
|
+
- **Fully open source** — MIT licensed, readable TypeScript, 4,032 tests. Audit it, fork it, fix it.
|
|
62
62
|
- **Privacy-respecting** — your queries go directly from your machine to public weather APIs. No middleman server, no telemetry.
|
|
63
63
|
- **Breadth** — 17 tools covering weather, safety hazards (lightning, floods, wildfires), marine conditions, air quality, and historical data back to 1940. Most weather MCPs stop at forecasts.
|
|
64
64
|
|
|
@@ -390,7 +390,7 @@ Being honest about what free public data can and can't do:
|
|
|
390
390
|
```bash
|
|
391
391
|
npm run build # Compile TypeScript
|
|
392
392
|
npm run dev # Run in development mode
|
|
393
|
-
npm test # Run all
|
|
393
|
+
npm test # Run all 4,032 tests
|
|
394
394
|
npm run test:coverage # Coverage report
|
|
395
395
|
npm run audit # Dependency vulnerability scan
|
|
396
396
|
```
|
package/dist/config/tools.js
CHANGED
|
@@ -194,7 +194,7 @@ function parseEnabledTools(envValue) {
|
|
|
194
194
|
continue;
|
|
195
195
|
}
|
|
196
196
|
// Handle presets
|
|
197
|
-
if (part
|
|
197
|
+
if (Object.prototype.hasOwnProperty.call(TOOL_PRESETS, part)) {
|
|
198
198
|
if (!hasBaseSet) {
|
|
199
199
|
// First preset replaces the default
|
|
200
200
|
enabledTools = new Set(TOOL_PRESETS[part]);
|
|
@@ -238,7 +238,7 @@ function resolveToolName(name) {
|
|
|
238
238
|
return normalized;
|
|
239
239
|
}
|
|
240
240
|
// Check aliases
|
|
241
|
-
if (normalized
|
|
241
|
+
if (Object.prototype.hasOwnProperty.call(TOOL_ALIASES, normalized)) {
|
|
242
242
|
return TOOL_ALIASES[normalized];
|
|
243
243
|
}
|
|
244
244
|
return undefined;
|
package/dist/config/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/config/tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/config/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,11 +35,18 @@ export declare class LocationStore {
|
|
|
35
35
|
* machine share this file, so a cached copy written back whole silently deletes
|
|
36
36
|
* the other client's saves. Every call returns a fresh object.
|
|
37
37
|
*
|
|
38
|
+
* The returned object has no prototype, so every lowercase alias, `__proto__`
|
|
39
|
+
* and `constructor` included, is an ordinary key.
|
|
40
|
+
*
|
|
38
41
|
* @throws {LocationStoreUnreadableError} when the file exists but cannot be
|
|
39
42
|
* read, cannot be parsed, or is not a plain JSON object at the top level.
|
|
40
43
|
* A zero-byte or whitespace-only file is a parse failure like any other.
|
|
41
44
|
*/
|
|
42
45
|
load(): SavedLocationsStore;
|
|
46
|
+
/**
|
|
47
|
+
* Whether `alias` is an own key of `locations`, never one inherited from a prototype.
|
|
48
|
+
*/
|
|
49
|
+
private static owns;
|
|
43
50
|
/**
|
|
44
51
|
* Save all locations to disk
|
|
45
52
|
* @private
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locationStore.d.ts","sourceRoot":"","sources":["../../src/services/locationStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAIrF;;;;;;;;;;;GAWG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YAAY,SAAS,EAAE,MAAM,EAQ5B;CACF;AAKD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,YAAY,UAAU,CAAC,EAAE,MAAM,EAQ9B;IAED;;;OAGG;IACH,OAAO,CAAC,qBAAqB;
|
|
1
|
+
{"version":3,"file":"locationStore.d.ts","sourceRoot":"","sources":["../../src/services/locationStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAIrF;;;;;;;;;;;GAWG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YAAY,SAAS,EAAE,MAAM,EAQ5B;CACF;AAKD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,YAAY,UAAU,CAAC,EAAE,MAAM,EAQ9B;IAED;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;;;;;;;;;;OAaG;IACH,IAAI,IAAI,mBAAmB,CAyC1B;IAED;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,IAAI;IAInB;;;OAGG;IACH,OAAO,CAAC,IAAI;IAkBZ;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,eAAe;IAwEvB;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAI5C;IAED;;OAEG;IACH,MAAM,IAAI,mBAAmB,CAE5B;IAED;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,YAAY,CAAC,GAAG,aAAa,CAkC1F;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAa7B;IAED;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI1B;IAED;;OAEG;IACH,KAAK,IAAI,MAAM,CAGd;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAKZ;IAED;;OAEG;IACH,YAAY,IAAI,MAAM,CAErB;CACF"}
|
|
@@ -52,7 +52,9 @@ export class LocationStore {
|
|
|
52
52
|
ensureDirectoryExists() {
|
|
53
53
|
if (!existsSync(this.storeDir)) {
|
|
54
54
|
try {
|
|
55
|
-
|
|
55
|
+
// Private by default: the store holds where the user lives. umask can
|
|
56
|
+
// only tighten this. An existing directory is never touched.
|
|
57
|
+
mkdirSync(this.storeDir, { recursive: true, mode: 0o700 });
|
|
56
58
|
logger.info('Created locations storage directory', { path: this.storeDir });
|
|
57
59
|
}
|
|
58
60
|
catch (error) {
|
|
@@ -70,6 +72,9 @@ export class LocationStore {
|
|
|
70
72
|
* machine share this file, so a cached copy written back whole silently deletes
|
|
71
73
|
* the other client's saves. Every call returns a fresh object.
|
|
72
74
|
*
|
|
75
|
+
* The returned object has no prototype, so every lowercase alias, `__proto__`
|
|
76
|
+
* and `constructor` included, is an ordinary key.
|
|
77
|
+
*
|
|
73
78
|
* @throws {LocationStoreUnreadableError} when the file exists but cannot be
|
|
74
79
|
* read, cannot be parsed, or is not a plain JSON object at the top level.
|
|
75
80
|
* A zero-byte or whitespace-only file is a parse failure like any other.
|
|
@@ -84,7 +89,7 @@ export class LocationStore {
|
|
|
84
89
|
logger.debug('No saved locations file found, starting fresh', {
|
|
85
90
|
path: this.storePath
|
|
86
91
|
});
|
|
87
|
-
return
|
|
92
|
+
return Object.create(null);
|
|
88
93
|
}
|
|
89
94
|
// Any other read failure (EISDIR, EACCES, EIO, ENOTDIR) is unreadable, not empty.
|
|
90
95
|
logger.error('Failed to read saved locations', error, {
|
|
@@ -112,7 +117,13 @@ export class LocationStore {
|
|
|
112
117
|
count: Object.keys(parsed).length,
|
|
113
118
|
path: this.storePath
|
|
114
119
|
});
|
|
115
|
-
return parsed;
|
|
120
|
+
return Object.assign(Object.create(null), parsed);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Whether `alias` is an own key of `locations`, never one inherited from a prototype.
|
|
124
|
+
*/
|
|
125
|
+
static owns(locations, alias) {
|
|
126
|
+
return Object.prototype.hasOwnProperty.call(locations, alias);
|
|
116
127
|
}
|
|
117
128
|
/**
|
|
118
129
|
* Save all locations to disk
|
|
@@ -184,21 +195,30 @@ export class LocationStore {
|
|
|
184
195
|
writeAtomically(data) {
|
|
185
196
|
const target = this.resolveWriteTarget();
|
|
186
197
|
// A rename replaces the directory entry, where an in-place write goes through
|
|
187
|
-
// it — so
|
|
188
|
-
// A file that does not exist yet
|
|
198
|
+
// it — so an existing file's permission bits have to be carried over
|
|
199
|
+
// explicitly. A file that does not exist yet is created 0600. An existing
|
|
200
|
+
// mode is never tightened: migrating it is a separate decision.
|
|
201
|
+
//
|
|
202
|
+
// ENOENT, and only ENOENT, means there is no file yet. Any other stat
|
|
203
|
+
// failure is thrown before anything is created, so a 0600 file never
|
|
204
|
+
// replaces an existing file whose mode could not be read.
|
|
189
205
|
let mode;
|
|
190
206
|
try {
|
|
191
207
|
mode = statSync(target).mode & 0o777;
|
|
192
208
|
}
|
|
193
|
-
catch {
|
|
209
|
+
catch (error) {
|
|
210
|
+
if (error.code !== 'ENOENT') {
|
|
211
|
+
throw error;
|
|
212
|
+
}
|
|
194
213
|
mode = undefined;
|
|
195
214
|
}
|
|
196
215
|
const tmp = join(dirname(target), `.${basename(target)}.${process.pid}.${randomBytes(4).toString('hex')}.tmp`);
|
|
197
216
|
let fd;
|
|
198
217
|
try {
|
|
199
|
-
|
|
218
|
+
// 0600 at creation, so the temp file is never readable by others, even empty.
|
|
219
|
+
fd = openSync(tmp, 'wx', 0o600);
|
|
200
220
|
if (mode !== undefined) {
|
|
201
|
-
//
|
|
221
|
+
// Carry the existing target's mode, which umask would otherwise mask.
|
|
202
222
|
fchmodSync(fd, mode);
|
|
203
223
|
}
|
|
204
224
|
// writeSync returns the number of bytes written and is NOT documented to
|
|
@@ -244,7 +264,7 @@ export class LocationStore {
|
|
|
244
264
|
get(alias) {
|
|
245
265
|
const locations = this.load();
|
|
246
266
|
const normalized = alias.toLowerCase().trim();
|
|
247
|
-
return locations[normalized];
|
|
267
|
+
return LocationStore.owns(locations, normalized) ? locations[normalized] : undefined;
|
|
248
268
|
}
|
|
249
269
|
/**
|
|
250
270
|
* Get all saved locations
|
|
@@ -268,7 +288,7 @@ export class LocationStore {
|
|
|
268
288
|
// record from any writer is refused and the file is left untouched.
|
|
269
289
|
const validated = validateSavedLocationInput(location);
|
|
270
290
|
const locations = this.load();
|
|
271
|
-
const isUpdate = normalized
|
|
291
|
+
const isUpdate = LocationStore.owns(locations, normalized);
|
|
272
292
|
const now = new Date().toISOString();
|
|
273
293
|
const savedLocation = {
|
|
274
294
|
...validated,
|
|
@@ -289,7 +309,7 @@ export class LocationStore {
|
|
|
289
309
|
remove(alias) {
|
|
290
310
|
const locations = this.load();
|
|
291
311
|
const normalized = alias.toLowerCase().trim();
|
|
292
|
-
if (!(normalized
|
|
312
|
+
if (!LocationStore.owns(locations, normalized)) {
|
|
293
313
|
return false;
|
|
294
314
|
}
|
|
295
315
|
delete locations[normalized];
|
|
@@ -303,7 +323,7 @@ export class LocationStore {
|
|
|
303
323
|
has(alias) {
|
|
304
324
|
const locations = this.load();
|
|
305
325
|
const normalized = alias.toLowerCase().trim();
|
|
306
|
-
return normalized
|
|
326
|
+
return LocationStore.owns(locations, normalized);
|
|
307
327
|
}
|
|
308
328
|
/**
|
|
309
329
|
* Get the number of saved locations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locationStore.js","sourceRoot":"","sources":["../../src/services/locationStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EACZ,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACX,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IAC5C,SAAS,CAAS;IAE3B,YAAY,SAAiB;QAC3B,KAAK,CACH,2CAA2C,SAAS,MAAM;YAC1D,+FAA+F;YAC/F,2FAA2F,CAC5F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,yFAAyF;AACzF,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,MAAM,OAAO,aAAa;IACP,SAAS,CAAS;IAClB,QAAQ,CAAS;IAElC,YAAY,UAAmB;QAC7B,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,qBAAqB;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"locationStore.js","sourceRoot":"","sources":["../../src/services/locationStore.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dangahagan/weather-mcp",
|
|
3
|
-
"version": "1.33.
|
|
3
|
+
"version": "1.33.11",
|
|
4
4
|
"description": "MCP server giving AI assistants 17 weather tools with zero API keys: global forecasts, current conditions, alerts, air quality, marine conditions, lightning detection, radar imagery, river levels, wildfire tracking, and historical weather back to 1940. Built entirely on free public APIs (NOAA, Open-Meteo, USGS, NIFC).",
|
|
5
5
|
"mcpName": "io.github.dgahagan/weather-mcp",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"mqtt": "^5.14.1"
|
|
85
85
|
},
|
|
86
86
|
"overrides": {
|
|
87
|
-
"fast-uri": "3.1.
|
|
87
|
+
"fast-uri": "3.1.8"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
90
|
"@types/luxon": "^3.7.5",
|