@cyanheads/epa-mcp-server 0.3.3 → 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 +2 -2
- package/CLAUDE.md +2 -2
- package/README.md +38 -8
- package/changelog/0.4.x/0.4.0.md +35 -0
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts +23 -9
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.js +165 -93
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-facility.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-facility.tool.js +4 -11
- package/dist/mcp-server/tools/definitions/get-facility.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts +2 -1
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js +10 -14
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +51 -18
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-facilities.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-facilities.tool.js +7 -12
- package/dist/mcp-server/tools/definitions/search-facilities.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-superfund.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-superfund.tool.js +2 -8
- package/dist/mcp-server/tools/definitions/search-superfund.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts +10 -3
- package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js +50 -10
- package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts +3 -1
- package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-water-systems.tool.js +22 -7
- package/dist/mcp-server/tools/definitions/search-water-systems.tool.js.map +1 -1
- package/dist/mcp-server/tools/format-lbs.d.ts +14 -0
- package/dist/mcp-server/tools/format-lbs.d.ts.map +1 -0
- package/dist/mcp-server/tools/format-lbs.js +16 -0
- package/dist/mcp-server/tools/format-lbs.js.map +1 -0
- package/dist/mcp-server/tools/format-location.d.ts +18 -0
- package/dist/mcp-server/tools/format-location.d.ts.map +1 -0
- package/dist/mcp-server/tools/format-location.js +26 -0
- package/dist/mcp-server/tools/format-location.js.map +1 -0
- package/dist/mcp-server/tools/format-tri-release.d.ts +16 -0
- package/dist/mcp-server/tools/format-tri-release.d.ts.map +1 -0
- package/dist/mcp-server/tools/format-tri-release.js +23 -0
- package/dist/mcp-server/tools/format-tri-release.js.map +1 -0
- package/dist/services/airnow/airnow-service.d.ts +10 -29
- package/dist/services/airnow/airnow-service.d.ts.map +1 -1
- package/dist/services/airnow/airnow-service.js +148 -95
- package/dist/services/airnow/airnow-service.js.map +1 -1
- package/dist/services/airnow/types.d.ts +62 -23
- package/dist/services/airnow/types.d.ts.map +1 -1
- package/dist/services/airnow/types.js +2 -1
- package/dist/services/airnow/types.js.map +1 -1
- package/dist/services/dmap/dmap-service.d.ts +41 -2
- package/dist/services/dmap/dmap-service.d.ts.map +1 -1
- package/dist/services/dmap/dmap-service.js +231 -116
- package/dist/services/dmap/dmap-service.js.map +1 -1
- package/dist/services/dmap/types.d.ts +17 -4
- package/dist/services/dmap/types.d.ts.map +1 -1
- package/dist/services/echo/echo-service.js +1 -1
- package/package.json +3 -3
- package/server.json +9 -3
|
@@ -13,22 +13,58 @@ function parseNum(val) {
|
|
|
13
13
|
const n = Number(val);
|
|
14
14
|
return Number.isNaN(n) ? undefined : n;
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Round a computed TRI quantity to 12 significant digits. TRI reports at most 7, so this keeps
|
|
18
|
+
* every reported digit while dropping the binary-float noise a sum or unit conversion adds
|
|
19
|
+
* (0.000894 + 0.000014 = 0.0009080000000000001 → 0.000908). formatLbs renders the same 12 digits,
|
|
20
|
+
* so structuredContent and text carry one value.
|
|
21
|
+
*/
|
|
22
|
+
function roundQuantity(n) {
|
|
23
|
+
return Number(n.toPrecision(12));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* tri_chem_id of dioxin and dioxin-like compounds. EPA's TRI program has facilities report this
|
|
27
|
+
* category in grams and every other chemical in pounds (TRI Basic Data Files documentation,
|
|
28
|
+
* UNIT_OF_MEASURE). The reporting-form and release-quantity tables carry no unit column, so the
|
|
29
|
+
* chemical ID is the marker on their rows (tri.tri_chem_info.unit_of_measure records Grams for
|
|
30
|
+
* N150, the only gram-reported chemical).
|
|
31
|
+
*/
|
|
32
|
+
const GRAM_REPORTED_CHEM_ID = 'N150';
|
|
33
|
+
/** Grams per avoirdupois pound, exact by definition. */
|
|
34
|
+
const GRAMS_PER_POUND = 453.59237;
|
|
35
|
+
function gramsToPounds(grams) {
|
|
36
|
+
return roundQuantity(grams / GRAMS_PER_POUND);
|
|
37
|
+
}
|
|
38
|
+
/** Normalize a raw TRI reporting form row; a gram-reported chemical's quantity becomes pounds. */
|
|
17
39
|
function normalizeTriRelease(raw) {
|
|
40
|
+
const inGrams = raw.tri_chem_id === GRAM_REPORTED_CHEM_ID;
|
|
18
41
|
const result = {
|
|
19
42
|
facilityId: raw.tri_facility_id ?? '',
|
|
20
43
|
// tri_reporting_form uses cas_chem_name, not chemical_name_text
|
|
21
44
|
chemicalName: raw.cas_chem_name ?? '',
|
|
22
45
|
reportingYear: Number(raw.reporting_year ?? 0),
|
|
46
|
+
...(inGrams && { reportedUnit: 'grams' }),
|
|
23
47
|
};
|
|
24
48
|
// one_time_release_qty is the only release qty in tri_reporting_form; the per-medium routine
|
|
25
|
-
// breakdown lives in tri.tri_release_qty and is merged in by
|
|
26
|
-
//
|
|
49
|
+
// breakdown lives in tri.tri_release_qty and is merged in by the callers after one batched
|
|
50
|
+
// fetchReleaseBreakdown request (always for getTriReleases, opt-in for searchTriReleases).
|
|
27
51
|
const oneTime = parseNum(raw.one_time_release_qty);
|
|
28
52
|
if (oneTime !== undefined)
|
|
29
|
-
result.totalReleasesInLbs = oneTime;
|
|
53
|
+
result.totalReleasesInLbs = inGrams ? gramsToPounds(oneTime) : oneTime;
|
|
30
54
|
return result;
|
|
31
55
|
}
|
|
56
|
+
/** Merge a submission's per-medium sums into its release, converting a gram-reported form to pounds. */
|
|
57
|
+
function withBreakdown(release, breakdown) {
|
|
58
|
+
if (!breakdown)
|
|
59
|
+
return release;
|
|
60
|
+
if (release.reportedUnit !== 'grams')
|
|
61
|
+
return { ...release, ...breakdown };
|
|
62
|
+
const pounds = {};
|
|
63
|
+
for (const [field, grams] of Object.entries(breakdown)) {
|
|
64
|
+
pounds[field] = gramsToPounds(grams);
|
|
65
|
+
}
|
|
66
|
+
return { ...release, ...pounds };
|
|
67
|
+
}
|
|
32
68
|
/**
|
|
33
69
|
* Map each tri.tri_release_qty environmental_medium code to the TriRelease field its quantity
|
|
34
70
|
* rolls up into, following EPA's on-site release taxonomy: air (fugitive + stack), water, land
|
|
@@ -49,8 +85,31 @@ const RELEASE_FIELD_BY_MEDIUM = {
|
|
|
49
85
|
'UNINJ IIV': 'releasesToUndergroundInjectionInLbs',
|
|
50
86
|
UNINJ8795: 'releasesToUndergroundInjectionInLbs',
|
|
51
87
|
};
|
|
52
|
-
/**
|
|
53
|
-
const
|
|
88
|
+
/** sdwis.violation rows read to find a state's violating water systems. */
|
|
89
|
+
const VIOLATION_SCAN_ROWS = 1000;
|
|
90
|
+
/**
|
|
91
|
+
* sdwis.violation compliance_status_code values for a violation still open. Live rows carry four
|
|
92
|
+
* codes: K and O have no rtc_date (unresolved); R has an rtc_date and resolving enforcement
|
|
93
|
+
* (returned to compliance); I has rtc_date equal to the system's pws_deactivation_date (resolved
|
|
94
|
+
* when the system closed).
|
|
95
|
+
*/
|
|
96
|
+
const OPEN_VIOLATION_FILTER = {
|
|
97
|
+
column: 'compliance_status_code',
|
|
98
|
+
operator: 'in',
|
|
99
|
+
value: 'K,O',
|
|
100
|
+
};
|
|
101
|
+
/** PWSIDs per `pwsid in` request — a ~2,500-character URL. */
|
|
102
|
+
const PWSID_CHUNK_SIZE = 200;
|
|
103
|
+
/**
|
|
104
|
+
* sdwis.water_system rows read for a ZIP violation check. Live ZIPs hold well under 200 systems
|
|
105
|
+
* (98104: 8, 59901: 194), so one read covers the ZIP and a check is at most
|
|
106
|
+
* 1 + ZIP_SYSTEM_SCAN_ROWS / PWSID_CHUNK_SIZE = 6 requests.
|
|
107
|
+
*/
|
|
108
|
+
const ZIP_SYSTEM_SCAN_ROWS = 1000;
|
|
109
|
+
/** The distinct PWSIDs named by a set of sdwis.violation rows. */
|
|
110
|
+
function pwsidSet(violations) {
|
|
111
|
+
return new Set(violations.map((r) => r.pwsid).filter((id) => typeof id === 'string'));
|
|
112
|
+
}
|
|
54
113
|
/** Normalize a raw SEMS envirofacts_site record. */
|
|
55
114
|
function normalizeSemsSite(raw) {
|
|
56
115
|
const lat = parseNum(raw.primary_latitude_decimal_val);
|
|
@@ -111,13 +170,23 @@ export class DmapService {
|
|
|
111
170
|
/**
|
|
112
171
|
* Build a DMAP REST URL for a multi-filter query.
|
|
113
172
|
* Format: {base}/{schema}.{table}/{col1}/{op1}/{val1}/and/{col2}/{op2}/{val2}/{first}:{last}
|
|
173
|
+
* Rows are 1-based and inclusive: `1:50` is 50 rows. DMAP reads a `first` of 0 as row 1, so
|
|
174
|
+
* `0:49` would return only 49.
|
|
175
|
+
*
|
|
176
|
+
* With `join`, an inner join follows the filters:
|
|
177
|
+
* `/join/{schema}.{table}/{leftColumn}/equals/{rightColumn}/and/{filter}…`. Filters before the
|
|
178
|
+
* join bind to the first table only (DMAP rejects a column the first table lacks); filters
|
|
179
|
+
* after the join comparison bind to the joined table. The range then counts joined rows.
|
|
114
180
|
*/
|
|
115
|
-
buildTableUrl(schema, table, filters, pagination) {
|
|
116
|
-
const
|
|
181
|
+
buildTableUrl(schema, table, filters, pagination, join) {
|
|
182
|
+
const toPath = (list) => list
|
|
117
183
|
.map((f) => `${encodeURIComponent(f.column)}/${f.operator}/${encodeURIComponent(f.value)}`)
|
|
118
184
|
.join('/and/');
|
|
185
|
+
const joinPath = join
|
|
186
|
+
? `/join/${join.table}/${join.on.left}/equals/${join.on.right}${join.filters.length > 0 ? `/and/${toPath(join.filters)}` : ''}`
|
|
187
|
+
: '';
|
|
119
188
|
const pagePath = `${pagination.first}:${pagination.last}`;
|
|
120
|
-
return `${this.baseUrl}/${schema}.${table}/${
|
|
189
|
+
return `${this.baseUrl}/${schema}.${table}/${toPath(filters)}${joinPath}/${pagePath}`;
|
|
121
190
|
}
|
|
122
191
|
/** Fetch a DMAP table result as JSON array. */
|
|
123
192
|
// biome-ignore lint/suspicious/useAwait: delegates to withRetry() which returns a Promise — async typing is correct
|
|
@@ -161,37 +230,42 @@ export class DmapService {
|
|
|
161
230
|
value: params.chemicalName,
|
|
162
231
|
});
|
|
163
232
|
}
|
|
164
|
-
const url = this.buildTableUrl('tri', 'tri_reporting_form', filters, { first:
|
|
233
|
+
const url = this.buildTableUrl('tri', 'tri_reporting_form', filters, { first: 1, last: 500 });
|
|
165
234
|
ctx.log.debug('DMAP TRI releases query', { facilityId: params.facilityId, year: params.year });
|
|
166
235
|
const rows = await this.fetchTable(url, ctx);
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
236
|
+
return this.withReleaseBreakdown(rows, rows.map(normalizeTriRelease), ctx);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Add each release's per-medium routine breakdown (tri.tri_release_qty, joined on doc_ctrl_num)
|
|
240
|
+
* with one batched request. `releases[i]` is the normalized form of `rows[i]`.
|
|
241
|
+
*/
|
|
242
|
+
async withReleaseBreakdown(rows, releases, ctx) {
|
|
170
243
|
const docCtrlNums = [
|
|
171
244
|
...new Set(rows
|
|
172
245
|
.map((r) => r.doc_ctrl_num)
|
|
173
246
|
.filter((d) => typeof d === 'string' && d.length > 0)),
|
|
174
247
|
];
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
return
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
return breakdown ? { ...release, ...breakdown } : release;
|
|
248
|
+
if (docCtrlNums.length === 0)
|
|
249
|
+
return releases;
|
|
250
|
+
const breakdownByDoc = await this.fetchReleaseBreakdown(docCtrlNums, ctx);
|
|
251
|
+
return releases.map((release, i) => {
|
|
252
|
+
const doc = rows[i]?.doc_ctrl_num;
|
|
253
|
+
return withBreakdown(release, typeof doc === 'string' ? breakdownByDoc.get(doc) : undefined);
|
|
182
254
|
});
|
|
183
255
|
}
|
|
184
256
|
/**
|
|
185
257
|
* Batch-fetch the per-medium routine releases (tri.tri_release_qty) for a set of TRI
|
|
186
258
|
* submissions and roll them up into air/water/land/underground-injection sums keyed by
|
|
187
|
-
* doc_ctrl_num.
|
|
259
|
+
* doc_ctrl_num. getTriReleases makes this one request per call; searchTriReleases makes it
|
|
260
|
+
* once per call, and only when includeReleaseBreakdown is set — an uncached tri_release_qty
|
|
261
|
+
* query takes ~20 s upstream.
|
|
188
262
|
*
|
|
189
263
|
* Sparsity is preserved: a row flagged release_na="1" (medium not applicable) or carrying only
|
|
190
264
|
* a release_range_code (no hard total_release) contributes nothing — a null quantity is never
|
|
191
265
|
* coerced to 0.
|
|
192
266
|
*/
|
|
193
267
|
async fetchReleaseBreakdown(docCtrlNums, ctx) {
|
|
194
|
-
const url = this.buildTableUrl('tri', 'tri_release_qty', [{ column: 'doc_ctrl_num', operator: 'in', value: docCtrlNums.join(',') }], { first:
|
|
268
|
+
const url = this.buildTableUrl('tri', 'tri_release_qty', [{ column: 'doc_ctrl_num', operator: 'in', value: docCtrlNums.join(',') }], { first: 1, last: docCtrlNums.length * 30 });
|
|
195
269
|
ctx.log.debug('DMAP TRI release-qty breakdown query', { submissions: docCtrlNums.length });
|
|
196
270
|
const rows = await this.fetchTable(url, ctx);
|
|
197
271
|
const byDoc = new Map();
|
|
@@ -211,74 +285,66 @@ export class DmapService {
|
|
|
211
285
|
if (amount === undefined)
|
|
212
286
|
continue;
|
|
213
287
|
const entry = byDoc.get(doc) ?? {};
|
|
214
|
-
entry[field] = (entry[field] ?? 0) + amount;
|
|
288
|
+
entry[field] = roundQuantity((entry[field] ?? 0) + amount);
|
|
215
289
|
byDoc.set(doc, entry);
|
|
216
290
|
}
|
|
217
291
|
return byDoc;
|
|
218
292
|
}
|
|
219
|
-
/**
|
|
293
|
+
/**
|
|
294
|
+
* Search TRI releases by state, optionally filtered by county, year, or chemical.
|
|
295
|
+
* tri.tri_reporting_form carries no state, so one request joins it to tri.tri_facility: the
|
|
296
|
+
* state and county filters bind to the facility table, the year and chemical filters to the
|
|
297
|
+
* forms, and the row range caps the joined rows at `limit`. However sparse the filters, the
|
|
298
|
+
* search is one request; with includeReleaseBreakdown, one fetchReleaseBreakdown request adds
|
|
299
|
+
* the per-medium routine releases to every kept record.
|
|
300
|
+
*/
|
|
220
301
|
async searchTriReleases(params, ctx) {
|
|
221
302
|
const limit = params.limit ?? 50;
|
|
222
303
|
const facilityFilters = [
|
|
223
304
|
{ column: 'state_abbr', operator: 'equals', value: params.state },
|
|
224
305
|
];
|
|
225
306
|
if (params.county) {
|
|
226
|
-
|
|
307
|
+
// DMAP matches county_name case-insensitively; `contains` catches states that store both a
|
|
308
|
+
// bare and a suffixed form of one county (CALCASIEU / CALCASIEU PARISH), at the cost of
|
|
309
|
+
// also matching a longer name that contains this one (LAKE / LAKE OF THE WOODS).
|
|
310
|
+
facilityFilters.push({ column: 'county_name', operator: 'contains', value: params.county });
|
|
227
311
|
}
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
312
|
+
const formFilters = [];
|
|
313
|
+
if (params.year !== undefined) {
|
|
314
|
+
formFilters.push({
|
|
315
|
+
column: 'reporting_year',
|
|
316
|
+
operator: 'equals',
|
|
317
|
+
value: String(params.year),
|
|
234
318
|
});
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
319
|
+
}
|
|
320
|
+
if (params.chemicalName) {
|
|
321
|
+
// actual field is cas_chem_name, not chemical_name_text
|
|
322
|
+
formFilters.push({
|
|
323
|
+
column: 'cas_chem_name',
|
|
324
|
+
operator: 'contains',
|
|
325
|
+
value: params.chemicalName,
|
|
238
326
|
});
|
|
239
|
-
const facilities = await this.fetchTable(facilityUrl, ctx);
|
|
240
|
-
if (facilities.length === 0)
|
|
241
|
-
break;
|
|
242
|
-
const facilityIds = facilities
|
|
243
|
-
.map((facility) => facility.tri_facility_id)
|
|
244
|
-
.filter((id) => typeof id === 'string' && id.length > 0);
|
|
245
|
-
if (facilityIds.length > 0) {
|
|
246
|
-
const releaseFilters = [
|
|
247
|
-
{ column: 'tri_facility_id', operator: 'in', value: facilityIds.join(',') },
|
|
248
|
-
];
|
|
249
|
-
if (params.year !== undefined) {
|
|
250
|
-
releaseFilters.push({
|
|
251
|
-
column: 'reporting_year',
|
|
252
|
-
operator: 'equals',
|
|
253
|
-
value: String(params.year),
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
if (params.chemicalName) {
|
|
257
|
-
// actual field is cas_chem_name, not chemical_name_text
|
|
258
|
-
releaseFilters.push({
|
|
259
|
-
column: 'cas_chem_name',
|
|
260
|
-
operator: 'contains',
|
|
261
|
-
value: params.chemicalName,
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
const remaining = limit - releases.length;
|
|
265
|
-
const releaseUrl = this.buildTableUrl('tri', 'tri_reporting_form', releaseFilters, {
|
|
266
|
-
first: 1,
|
|
267
|
-
last: remaining,
|
|
268
|
-
});
|
|
269
|
-
const releaseRows = await this.fetchTable(releaseUrl, ctx);
|
|
270
|
-
const facilityMap = new Map(facilities.map((facility) => [facility.tri_facility_id, facility]));
|
|
271
|
-
for (const row of releaseRows.slice(0, remaining)) {
|
|
272
|
-
const release = normalizeTriRelease(row);
|
|
273
|
-
const facility = facilityMap.get(row.tri_facility_id);
|
|
274
|
-
releases.push(facility ? { ...release, facilityName: facility.facility_name ?? '' } : release);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
if (facilities.length < TRI_FACILITY_BATCH_SIZE)
|
|
278
|
-
break;
|
|
279
|
-
firstFacilityRow += TRI_FACILITY_BATCH_SIZE;
|
|
280
327
|
}
|
|
281
|
-
|
|
328
|
+
const url = this.buildTableUrl('tri', 'tri_facility', facilityFilters, { first: 1, last: limit }, {
|
|
329
|
+
table: 'tri.tri_reporting_form',
|
|
330
|
+
on: { left: 'tri_facility_id', right: 'tri_facility_id' },
|
|
331
|
+
filters: formFilters,
|
|
332
|
+
});
|
|
333
|
+
ctx.log.debug('DMAP TRI facility-form join query', {
|
|
334
|
+
state: params.state,
|
|
335
|
+
county: params.county,
|
|
336
|
+
year: params.year,
|
|
337
|
+
});
|
|
338
|
+
const rows = await this.fetchTable(url, ctx);
|
|
339
|
+
const kept = rows.slice(0, limit);
|
|
340
|
+
const releases = kept.map((row) => ({
|
|
341
|
+
...normalizeTriRelease(row),
|
|
342
|
+
facilityName: row.facility_name ?? '',
|
|
343
|
+
...(row.county_name && { countyName: row.county_name }),
|
|
344
|
+
}));
|
|
345
|
+
return params.includeReleaseBreakdown
|
|
346
|
+
? this.withReleaseBreakdown(kept, releases, ctx)
|
|
347
|
+
: releases;
|
|
282
348
|
}
|
|
283
349
|
/** Search Superfund sites by state or coordinates + radius. */
|
|
284
350
|
async searchSuperfund(params, ctx) {
|
|
@@ -309,8 +375,8 @@ export class DmapService {
|
|
|
309
375
|
? Math.min(500, limit * 10)
|
|
310
376
|
: limit;
|
|
311
377
|
const url = this.buildTableUrl('sems', 'envirofacts_site', filters, {
|
|
312
|
-
first:
|
|
313
|
-
last: pageSize
|
|
378
|
+
first: 1,
|
|
379
|
+
last: pageSize,
|
|
314
380
|
});
|
|
315
381
|
ctx.log.debug('DMAP Superfund query', { state: params.state, lat: params.latitude });
|
|
316
382
|
const rows = await this.fetchTable(url, ctx);
|
|
@@ -329,7 +395,7 @@ export class DmapService {
|
|
|
329
395
|
}
|
|
330
396
|
/** Fetch a single Superfund site by exact SEMS site ID. */
|
|
331
397
|
async searchSuperfundById(siteId, ctx) {
|
|
332
|
-
const url = this.buildTableUrl('sems', 'envirofacts_site', [{ column: 'site_id', operator: 'equals', value: siteId }], { first:
|
|
398
|
+
const url = this.buildTableUrl('sems', 'envirofacts_site', [{ column: 'site_id', operator: 'equals', value: siteId }], { first: 1, last: 1 });
|
|
333
399
|
ctx.log.debug('DMAP Superfund by ID', { siteId });
|
|
334
400
|
const rows = await this.fetchTable(url, ctx);
|
|
335
401
|
return rows.map(normalizeSemsSite);
|
|
@@ -355,47 +421,96 @@ export class DmapService {
|
|
|
355
421
|
}
|
|
356
422
|
if (filters.length === 0)
|
|
357
423
|
return [];
|
|
358
|
-
//
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
violFilters.push({
|
|
365
|
-
column: 'primacy_agency_code',
|
|
366
|
-
operator: 'equals',
|
|
367
|
-
value: params.state,
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
if (params.zipCode) {
|
|
371
|
-
// sdwis.violation has no zip column; fall back to post-filter on the system level
|
|
372
|
-
// by still fetching all violations for the state
|
|
373
|
-
}
|
|
374
|
-
if (violFilters.length > 0) {
|
|
375
|
-
const violUrl = this.buildTableUrl('sdwis', 'violation', violFilters, {
|
|
376
|
-
first: 0,
|
|
377
|
-
last: 999,
|
|
378
|
-
});
|
|
379
|
-
ctx.log.debug('DMAP SDWIS violation query', { state: params.state });
|
|
380
|
-
const violRows = await this.fetchTable(violUrl, ctx);
|
|
381
|
-
violatingPwsids = new Set(violRows.map((r) => r.pwsid).filter((id) => typeof id === 'string'));
|
|
382
|
-
// If filtering by violation, restrict the main query to only violating PWS IDs
|
|
383
|
-
if (violatingPwsids.size > 0) {
|
|
384
|
-
filters.push({
|
|
385
|
-
column: 'pwsid',
|
|
386
|
-
operator: 'in',
|
|
387
|
-
value: Array.from(violatingPwsids).slice(0, 100).join(','),
|
|
388
|
-
});
|
|
389
|
-
}
|
|
390
|
-
else {
|
|
391
|
-
return [];
|
|
392
|
-
}
|
|
393
|
-
}
|
|
424
|
+
// sdwis.violation has no zip column: a ZIP's systems are checked by PWSID, a state is scanned.
|
|
425
|
+
if (params.hasViolation && params.zipCode) {
|
|
426
|
+
return this.searchViolatingWaterSystemsInZip(params.zipCode, filters, limit, ctx);
|
|
427
|
+
}
|
|
428
|
+
if (params.hasViolation && params.state) {
|
|
429
|
+
return this.searchViolatingWaterSystems(params.state, filters, limit, ctx);
|
|
394
430
|
}
|
|
395
431
|
const url = this.buildTableUrl('sdwis', 'water_system', filters, { first: 1, last: limit });
|
|
396
432
|
ctx.log.debug('DMAP water systems query', { state: params.state });
|
|
397
433
|
const rows = await this.fetchTable(url, ctx);
|
|
398
|
-
return rows.slice(0, limit).map((r) => normalizeSdwisWaterSystem(r
|
|
434
|
+
return rows.slice(0, limit).map((r) => normalizeSdwisWaterSystem(r));
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Water systems in `state` with an open violation. water_system has no violation flag, so this
|
|
438
|
+
* reads the first VIOLATION_SCAN_ROWS open rows of sdwis.violation, then looks up the systems
|
|
439
|
+
* those rows name, PWSID_CHUNK_SIZE IDs per `pwsid in` request, until `limit` is filled. That is
|
|
440
|
+
* at most 1 + VIOLATION_SCAN_ROWS / PWSID_CHUNK_SIZE requests. A state with more open violation
|
|
441
|
+
* rows than the scan reads can have violators it never sees; the result then carries a notice.
|
|
442
|
+
*/
|
|
443
|
+
async searchViolatingWaterSystems(state, filters, limit, ctx) {
|
|
444
|
+
const violUrl = this.buildTableUrl('sdwis', 'violation', [{ column: 'primacy_agency_code', operator: 'equals', value: state }, OPEN_VIOLATION_FILTER], { first: 1, last: VIOLATION_SCAN_ROWS });
|
|
445
|
+
ctx.log.debug('DMAP SDWIS violation query', { state });
|
|
446
|
+
const violRows = await this.fetchTable(violUrl, ctx);
|
|
447
|
+
const violatingPwsids = pwsidSet(violRows);
|
|
448
|
+
if (violRows.length >= VIOLATION_SCAN_ROWS) {
|
|
449
|
+
ctx.enrich.notice(`The violation check stopped at the first ${VIOLATION_SCAN_ROWS.toLocaleString('en-US')} of ${state}'s open SDWIS violation records, which name ${violatingPwsids.size} distinct systems. Records past that point were not read, so these results may not include every system with an open violation in the state.`);
|
|
450
|
+
}
|
|
451
|
+
const ids = [...violatingPwsids];
|
|
452
|
+
const systems = [];
|
|
453
|
+
for (let i = 0; i < ids.length && systems.length < limit; i += PWSID_CHUNK_SIZE) {
|
|
454
|
+
const chunk = ids.slice(i, i + PWSID_CHUNK_SIZE);
|
|
455
|
+
const url = this.buildTableUrl('sdwis', 'water_system', [...filters, { column: 'pwsid', operator: 'in', value: chunk.join(',') }], { first: 1, last: limit - systems.length });
|
|
456
|
+
ctx.log.debug('DMAP water systems query', { state, chunkStart: i, chunkSize: chunk.length });
|
|
457
|
+
const rows = await this.fetchTable(url, ctx);
|
|
458
|
+
for (const row of rows.slice(0, limit - systems.length)) {
|
|
459
|
+
systems.push(normalizeSdwisWaterSystem(row, violatingPwsids));
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
return systems;
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Water systems in `zipCode` with an open violation. sdwis.violation has no zip column, so this
|
|
466
|
+
* reads the ZIP's systems (up to ZIP_SYSTEM_SCAN_ROWS), then asks sdwis.violation for their open
|
|
467
|
+
* rows PWSID_CHUNK_SIZE IDs at a time, in ZIP order, until `limit` violators are found. A ZIP
|
|
468
|
+
* past the system read, or a chunk whose violation rows fill VIOLATION_SCAN_ROWS, can hide
|
|
469
|
+
* violators; the result then carries a notice.
|
|
470
|
+
*/
|
|
471
|
+
async searchViolatingWaterSystemsInZip(zipCode, filters, limit, ctx) {
|
|
472
|
+
const url = this.buildTableUrl('sdwis', 'water_system', filters, {
|
|
473
|
+
first: 1,
|
|
474
|
+
last: ZIP_SYSTEM_SCAN_ROWS,
|
|
475
|
+
});
|
|
476
|
+
ctx.log.debug('DMAP water systems query', { zipCode });
|
|
477
|
+
const zipRows = await this.fetchTable(url, ctx);
|
|
478
|
+
const notices = [];
|
|
479
|
+
if (zipRows.length >= ZIP_SYSTEM_SCAN_ROWS) {
|
|
480
|
+
notices.push(`The violation check read only the first ${ZIP_SYSTEM_SCAN_ROWS.toLocaleString('en-US')} water systems in ZIP ${zipCode}; systems past that point were not checked.`);
|
|
481
|
+
}
|
|
482
|
+
const candidates = zipRows.filter((r) => typeof r.pwsid === 'string');
|
|
483
|
+
const systems = [];
|
|
484
|
+
let truncatedChunk = false;
|
|
485
|
+
for (let i = 0; i < candidates.length && systems.length < limit; i += PWSID_CHUNK_SIZE) {
|
|
486
|
+
const chunk = candidates.slice(i, i + PWSID_CHUNK_SIZE);
|
|
487
|
+
const violUrl = this.buildTableUrl('sdwis', 'violation', [
|
|
488
|
+
{ column: 'pwsid', operator: 'in', value: chunk.map((r) => r.pwsid).join(',') },
|
|
489
|
+
OPEN_VIOLATION_FILTER,
|
|
490
|
+
], { first: 1, last: VIOLATION_SCAN_ROWS });
|
|
491
|
+
ctx.log.debug('DMAP SDWIS violation query', {
|
|
492
|
+
zipCode,
|
|
493
|
+
chunkStart: i,
|
|
494
|
+
chunkSize: chunk.length,
|
|
495
|
+
});
|
|
496
|
+
const violRows = await this.fetchTable(violUrl, ctx);
|
|
497
|
+
if (violRows.length >= VIOLATION_SCAN_ROWS)
|
|
498
|
+
truncatedChunk = true;
|
|
499
|
+
const violatingPwsids = pwsidSet(violRows);
|
|
500
|
+
for (const row of chunk) {
|
|
501
|
+
if (systems.length >= limit)
|
|
502
|
+
break;
|
|
503
|
+
if (violatingPwsids.has(row.pwsid)) {
|
|
504
|
+
systems.push(normalizeSdwisWaterSystem(row, violatingPwsids));
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
if (truncatedChunk) {
|
|
509
|
+
notices.push(`The open violation records for a group of up to ${PWSID_CHUNK_SIZE} systems in ZIP ${zipCode} filled the ${VIOLATION_SCAN_ROWS.toLocaleString('en-US')}-row read; records past that point were not read, so these results may not include every system with an open violation in the ZIP.`);
|
|
510
|
+
}
|
|
511
|
+
if (notices.length > 0)
|
|
512
|
+
ctx.enrich.notice(notices.join(' '));
|
|
513
|
+
return systems;
|
|
399
514
|
}
|
|
400
515
|
}
|
|
401
516
|
// --- Init/accessor pattern ---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dmap-service.js","sourceRoot":"","sources":["../../../src/services/dmap/dmap-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dmap-service.js","sourceRoot":"","sources":["../../../src/services/dmap/dmap-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/** Raw row from tri.tri_facility table. Coordinates encoded as DDMMSS integers. */
|
|
6
6
|
export interface RawTriFacility {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
city_name?: string;
|
|
8
|
+
/** County name as the state reported it — usually bare and uppercase ("KING"), sometimes suffixed ("CALCASIEU PARISH") */
|
|
9
|
+
county_name?: string;
|
|
9
10
|
fac_latitude?: string | number;
|
|
10
11
|
fac_longitude?: string | number;
|
|
11
12
|
facility_name?: string;
|
|
12
13
|
state_abbr?: string;
|
|
13
|
-
|
|
14
|
+
street_address?: string;
|
|
14
15
|
tri_facility_id?: string;
|
|
15
16
|
zip_code?: string;
|
|
16
17
|
[key: string]: string | number | undefined;
|
|
@@ -27,6 +28,13 @@ export interface RawTriReportingForm {
|
|
|
27
28
|
*/
|
|
28
29
|
one_time_release_qty?: string | number;
|
|
29
30
|
reporting_year?: string | number;
|
|
31
|
+
/**
|
|
32
|
+
* TRI chemical or category ID. N150 (dioxin and dioxin-like compounds) is reported in grams;
|
|
33
|
+
* every other chemical in pounds. The reporting-form and release-quantity tables carry no unit
|
|
34
|
+
* column, so this is the marker on their rows (tri.tri_chem_info.unit_of_measure records Grams
|
|
35
|
+
* for N150).
|
|
36
|
+
*/
|
|
37
|
+
tri_chem_id?: string;
|
|
30
38
|
tri_facility_id?: string;
|
|
31
39
|
[key: string]: string | number | undefined;
|
|
32
40
|
}
|
|
@@ -92,7 +100,10 @@ export interface RawSdwisViolation {
|
|
|
92
100
|
* `totalReleasesInLbs` is TRI's one-time / non-routine release quantity (from
|
|
93
101
|
* tri_reporting_form.one_time_release_qty) — a distinct category, NOT the sum of the
|
|
94
102
|
* per-medium routine releases. The `releasesTo*InLbs` fields are the routine on-site
|
|
95
|
-
* releases rolled up from tri.tri_release_qty,
|
|
103
|
+
* releases rolled up from tri.tri_release_qty by doc_ctrl_num, each omitted when the submission
|
|
104
|
+
* reported no hard quantity for that medium; searchTriReleases fills them only when its caller
|
|
105
|
+
* opts into the breakdown. Every quantity is in pounds: a chemical TRI has facilities report in
|
|
106
|
+
* grams is converted, and `reportedUnit` says so.
|
|
96
107
|
*/
|
|
97
108
|
export interface TriRelease {
|
|
98
109
|
chemicalName: string;
|
|
@@ -105,6 +116,8 @@ export interface TriRelease {
|
|
|
105
116
|
releasesToUndergroundInjectionInLbs?: number;
|
|
106
117
|
/** On-site routine releases to surface water in lbs, summed across outfalls per submission */
|
|
107
118
|
releasesToWaterInLbs?: number;
|
|
119
|
+
/** 'grams' when TRI had the facility report this chemical in grams (dioxin and dioxin-like compounds); the *InLbs quantities are converted. Absent for pound-reported chemicals. */
|
|
120
|
+
reportedUnit?: 'grams';
|
|
108
121
|
reportingYear: number;
|
|
109
122
|
/** One-time / non-routine release quantity (from one_time_release_qty) — a distinct TRI category */
|
|
110
123
|
totalReleasesInLbs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/dmap/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mFAAmF;AACnF,MAAM,WAAW,cAAc;IAC7B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/dmap/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,7 +67,7 @@ export class EchoService {
|
|
|
67
67
|
return withRetry(async () => {
|
|
68
68
|
const response = await fetch(url, {
|
|
69
69
|
signal: ctx.signal,
|
|
70
|
-
headers: { 'User-Agent': '@cyanheads/epa-mcp-server/0.
|
|
70
|
+
headers: { 'User-Agent': '@cyanheads/epa-mcp-server/0.4.0' },
|
|
71
71
|
});
|
|
72
72
|
if (!response.ok) {
|
|
73
73
|
throw await httpErrorFromResponse(response, { service: 'ECHO' });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/epa-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Search and retrieve EPA environmental data: facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems, environmental-justice screening (EJScreen), and real-time air quality (AirNow). STDIO or Streamable HTTP.",
|
|
5
5
|
"mcpName": "io.github.cyanheads/epa-mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"access": "public"
|
|
89
89
|
},
|
|
90
90
|
"dependencies": {
|
|
91
|
-
"@cyanheads/mcp-ts-core": "^0.13.
|
|
92
|
-
"pino-pretty": "^13.
|
|
91
|
+
"@cyanheads/mcp-ts-core": "^0.13.14",
|
|
92
|
+
"pino-pretty": "^13.2.0",
|
|
93
93
|
"zod": "^4.6.5"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|