@cyanheads/epa-mcp-server 0.2.0 → 0.3.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/CLAUDE.md +2 -2
- package/Dockerfile +10 -6
- package/LICENSE +201 -0
- package/README.md +24 -9
- package/changelog/0.2.x/0.2.1.md +31 -0
- package/changelog/0.3.x/0.3.0.md +13 -0
- package/dist/config/server-config.d.ts +1 -0
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +7 -0
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- 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 +37 -35
- package/dist/mcp-server/tools/definitions/get-air-quality.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-ejscreen.tool.d.ts +73 -0
- package/dist/mcp-server/tools/definitions/get-ejscreen.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ejscreen.tool.js +273 -0
- package/dist/mcp-server/tools/definitions/get-ejscreen.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts +4 -0
- 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 +26 -2
- package/dist/mcp-server/tools/definitions/get-tri-releases.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +139 -2
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/index.js +4 -1
- package/dist/mcp-server/tools/definitions/index.js.map +1 -1
- package/dist/services/airnow/airnow-service.d.ts.map +1 -1
- package/dist/services/airnow/airnow-service.js +5 -4
- package/dist/services/airnow/airnow-service.js.map +1 -1
- package/dist/services/dmap/dmap-service.d.ts +10 -0
- package/dist/services/dmap/dmap-service.d.ts.map +1 -1
- package/dist/services/dmap/dmap-service.js +81 -5
- package/dist/services/dmap/dmap-service.js.map +1 -1
- package/dist/services/dmap/types.d.ts +36 -4
- package/dist/services/dmap/types.d.ts.map +1 -1
- package/dist/services/echo/echo-service.js +1 -1
- package/dist/services/echo/echo-service.js.map +1 -1
- package/dist/services/ejscreen/ejscreen-service.d.ts +38 -0
- package/dist/services/ejscreen/ejscreen-service.d.ts.map +1 -0
- package/dist/services/ejscreen/ejscreen-service.js +258 -0
- package/dist/services/ejscreen/ejscreen-service.js.map +1 -0
- package/dist/services/ejscreen/types.d.ts +63 -0
- package/dist/services/ejscreen/types.d.ts.map +1 -0
- package/dist/services/ejscreen/types.js +9 -0
- package/dist/services/ejscreen/types.js.map +1 -0
- package/package.json +5 -3
- package/server.json +17 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo-service.js","sourceRoot":"","sources":["../../../src/services/echo/echo-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"echo-service.js","sourceRoot":"","sources":["../../../src/services/echo/echo-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview EJScreen environmental-justice service. Wraps the community-maintained
|
|
3
|
+
* EJAM API (`api.ejanalysis.com`), run by Public Environmental Data Partners, which
|
|
4
|
+
* rehosts EJScreen v2.2 (2022) data after EPA discontinued public access in 2025.
|
|
5
|
+
* Calls `POST {base}/data` with a point + buffer and normalizes the ~683-column row.
|
|
6
|
+
* @module services/ejscreen/ejscreen-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 { EjscreenResult, RawEjamRow } from './types.js';
|
|
12
|
+
/** Provenance + vintage string surfaced on every result and in user-facing copy. */
|
|
13
|
+
export declare const EJSCREEN_DATA_SOURCE = "EJScreen v2.2 (2022 data) via the community-maintained EJAM API (api.ejanalysis.com, Public Environmental Data Partners), which rehosts EJScreen after EPA discontinued public access in 2025.";
|
|
14
|
+
/**
|
|
15
|
+
* Normalize a raw EJAM row into the domain result. When the upstream flags the
|
|
16
|
+
* point out of coverage (`valid: false`), indicators are omitted and the
|
|
17
|
+
* `invalid_msg` is surfaced as a coverage note — zeros are never fabricated.
|
|
18
|
+
*/
|
|
19
|
+
export declare function normalizeEjscreen(row: RawEjamRow, params: {
|
|
20
|
+
latitude: number;
|
|
21
|
+
longitude: number;
|
|
22
|
+
bufferMiles: number;
|
|
23
|
+
}): EjscreenResult;
|
|
24
|
+
export declare class EjscreenService {
|
|
25
|
+
private readonly baseUrl;
|
|
26
|
+
constructor(_config: AppConfig, _storage: StorageService);
|
|
27
|
+
/** Fetch and normalize EJScreen indicators for a point + buffer (miles). */
|
|
28
|
+
getIndicators(params: {
|
|
29
|
+
latitude: number;
|
|
30
|
+
longitude: number;
|
|
31
|
+
bufferMiles: number;
|
|
32
|
+
}, ctx: Context): Promise<EjscreenResult>;
|
|
33
|
+
/** POST the point + buffer to the EJAM `/data` endpoint and return the single row. */
|
|
34
|
+
private fetchData;
|
|
35
|
+
}
|
|
36
|
+
export declare function initEjscreenService(config: AppConfig, storage: StorageService): void;
|
|
37
|
+
export declare function getEjscreenService(): EjscreenService;
|
|
38
|
+
//# sourceMappingURL=ejscreen-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ejscreen-service.d.ts","sourceRoot":"","sources":["../../../src/services/ejscreen/ejscreen-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;AAGrE,OAAO,KAAK,EAIV,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,mMACiK,CAAC;AAsInM;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnE,cAAc,CA2ChB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAIxD,4EAA4E;IACtE,aAAa,CACjB,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EACpE,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,cAAc,CAAC;IAK1B,sFAAsF;YAExE,SAAS;CAqDxB;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAEpF;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview EJScreen environmental-justice service. Wraps the community-maintained
|
|
3
|
+
* EJAM API (`api.ejanalysis.com`), run by Public Environmental Data Partners, which
|
|
4
|
+
* rehosts EJScreen v2.2 (2022) data after EPA discontinued public access in 2025.
|
|
5
|
+
* Calls `POST {base}/data` with a point + buffer and normalizes the ~683-column row.
|
|
6
|
+
* @module services/ejscreen/ejscreen-service
|
|
7
|
+
*/
|
|
8
|
+
import { serviceUnavailable, validationError } from '@cyanheads/mcp-ts-core/errors';
|
|
9
|
+
import { withRetry } from '@cyanheads/mcp-ts-core/utils';
|
|
10
|
+
import { getServerConfig } from '../../config/server-config.js';
|
|
11
|
+
/** Provenance + vintage string surfaced on every result and in user-facing copy. */
|
|
12
|
+
export const EJSCREEN_DATA_SOURCE = 'EJScreen v2.2 (2022 data) via the community-maintained EJAM API (api.ejanalysis.com, Public Environmental Data Partners), which rehosts EJScreen after EPA discontinued public access in 2025.';
|
|
13
|
+
/** The 13 EJScreen environmental indicators, in report order, with display units. */
|
|
14
|
+
const ENV_INDICATORS = [
|
|
15
|
+
{ code: 'pm', label: 'PM2.5', unit: 'µg/m³' },
|
|
16
|
+
{ code: 'o3', label: 'Ozone', unit: 'ppb' },
|
|
17
|
+
{ code: 'dpm', label: 'Diesel particulate matter', unit: 'µg/m³' },
|
|
18
|
+
{ code: 'no2', label: 'Nitrogen dioxide (NO2)', unit: 'ppb' },
|
|
19
|
+
{
|
|
20
|
+
code: 'pctpre1960',
|
|
21
|
+
label: 'Lead paint (pre-1960 housing)',
|
|
22
|
+
unit: 'fraction of housing built pre-1960',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
code: 'traffic.score',
|
|
26
|
+
label: 'Traffic proximity & volume',
|
|
27
|
+
unit: 'daily traffic count / distance',
|
|
28
|
+
},
|
|
29
|
+
{ code: 'proximity.npl', label: 'Superfund (NPL) proximity', unit: 'site count / km' },
|
|
30
|
+
{ code: 'proximity.rmp', label: 'RMP facility proximity', unit: 'facility count / km' },
|
|
31
|
+
{
|
|
32
|
+
code: 'proximity.tsdf',
|
|
33
|
+
label: 'Hazardous-waste (TSDF) proximity',
|
|
34
|
+
unit: 'facility count / km',
|
|
35
|
+
},
|
|
36
|
+
{ code: 'proximity.npdes', label: 'Wastewater discharge (NPDES) proximity', unit: 'score' },
|
|
37
|
+
{ code: 'ust', label: 'Underground storage tanks', unit: 'count / area' },
|
|
38
|
+
{ code: 'drinking', label: 'Drinking-water non-compliance', unit: 'score' },
|
|
39
|
+
{ code: 'rsei', label: 'Toxic releases to air (RSEI)', unit: 'score' },
|
|
40
|
+
];
|
|
41
|
+
/** The 6 core EJScreen demographic indicators, in report order. */
|
|
42
|
+
const DEMOG_INDICATORS = [
|
|
43
|
+
{ code: 'pctmin', label: 'People of color' },
|
|
44
|
+
{ code: 'pctlowinc', label: 'Low income' },
|
|
45
|
+
{ code: 'pctlingiso', label: 'Limited English (linguistically isolated)' },
|
|
46
|
+
{ code: 'pctlths', label: 'Less than high school education' },
|
|
47
|
+
{ code: 'pctunder5', label: 'Under age 5' },
|
|
48
|
+
{ code: 'pctover64', label: 'Over age 64' },
|
|
49
|
+
];
|
|
50
|
+
/** Read a numeric column, returning undefined for null/empty/NaN (preserves upstream sparsity). */
|
|
51
|
+
function num(row, key) {
|
|
52
|
+
const v = row[key];
|
|
53
|
+
if (v === undefined || v === null || v === '')
|
|
54
|
+
return;
|
|
55
|
+
const n = typeof v === 'number' ? v : Number(v);
|
|
56
|
+
return Number.isFinite(n) ? n : undefined;
|
|
57
|
+
}
|
|
58
|
+
/** Read a non-empty string column, trimmed. */
|
|
59
|
+
function str(row, key) {
|
|
60
|
+
const v = row[key];
|
|
61
|
+
return typeof v === 'string' && v.trim() !== '' ? v.trim() : undefined;
|
|
62
|
+
}
|
|
63
|
+
/** Convert an upstream fraction (0–1) to a percentage rounded to hundredths. */
|
|
64
|
+
function toPercent(fraction) {
|
|
65
|
+
return Math.round(fraction * 10000) / 100;
|
|
66
|
+
}
|
|
67
|
+
/** Extract the href URL from the `EJAM Report` anchor-tag column. */
|
|
68
|
+
function extractReportUrl(raw) {
|
|
69
|
+
if (typeof raw !== 'string')
|
|
70
|
+
return;
|
|
71
|
+
const match = raw.match(/href="([^"]+)"/i);
|
|
72
|
+
return match?.[1];
|
|
73
|
+
}
|
|
74
|
+
/** Parse the EJAM 400 error body shape `{"error":["message"]}`. */
|
|
75
|
+
function parseApiError(text) {
|
|
76
|
+
try {
|
|
77
|
+
const parsed = JSON.parse(text);
|
|
78
|
+
if (parsed && typeof parsed === 'object' && 'error' in parsed) {
|
|
79
|
+
const err = parsed.error;
|
|
80
|
+
if (Array.isArray(err) && typeof err[0] === 'string')
|
|
81
|
+
return err[0];
|
|
82
|
+
if (typeof err === 'string')
|
|
83
|
+
return err;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Non-JSON body — fall through to undefined.
|
|
88
|
+
}
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
/** Build the environmental indicators present in the row (absent columns skipped). */
|
|
92
|
+
function buildEnvironmental(row) {
|
|
93
|
+
const out = [];
|
|
94
|
+
for (const { code, label, unit } of ENV_INDICATORS) {
|
|
95
|
+
const value = num(row, code);
|
|
96
|
+
if (value === undefined)
|
|
97
|
+
continue;
|
|
98
|
+
const indicator = { code, label, value, unit };
|
|
99
|
+
const usPercentile = num(row, `pctile.${code}`);
|
|
100
|
+
const statePercentile = num(row, `state.pctile.${code}`);
|
|
101
|
+
const ejIndex = num(row, `EJ.DISPARITY.${code}.eo`);
|
|
102
|
+
const ejIndexUsPercentile = num(row, `pctile.EJ.DISPARITY.${code}.eo`);
|
|
103
|
+
const ejIndexStatePercentile = num(row, `state.pctile.EJ.DISPARITY.${code}.eo`);
|
|
104
|
+
if (usPercentile !== undefined)
|
|
105
|
+
indicator.usPercentile = usPercentile;
|
|
106
|
+
if (statePercentile !== undefined)
|
|
107
|
+
indicator.statePercentile = statePercentile;
|
|
108
|
+
if (ejIndex !== undefined)
|
|
109
|
+
indicator.ejIndex = ejIndex;
|
|
110
|
+
if (ejIndexUsPercentile !== undefined)
|
|
111
|
+
indicator.ejIndexUsPercentile = ejIndexUsPercentile;
|
|
112
|
+
if (ejIndexStatePercentile !== undefined) {
|
|
113
|
+
indicator.ejIndexStatePercentile = ejIndexStatePercentile;
|
|
114
|
+
}
|
|
115
|
+
out.push(indicator);
|
|
116
|
+
}
|
|
117
|
+
return out;
|
|
118
|
+
}
|
|
119
|
+
/** Build the demographic indicators present in the row (absent columns skipped). */
|
|
120
|
+
function buildDemographic(row) {
|
|
121
|
+
const out = [];
|
|
122
|
+
for (const { code, label } of DEMOG_INDICATORS) {
|
|
123
|
+
const fraction = num(row, code);
|
|
124
|
+
if (fraction === undefined)
|
|
125
|
+
continue;
|
|
126
|
+
const indicator = { code, label, percent: toPercent(fraction) };
|
|
127
|
+
const usPercentile = num(row, `pctile.${code}`);
|
|
128
|
+
const statePercentile = num(row, `state.pctile.${code}`);
|
|
129
|
+
if (usPercentile !== undefined)
|
|
130
|
+
indicator.usPercentile = usPercentile;
|
|
131
|
+
if (statePercentile !== undefined)
|
|
132
|
+
indicator.statePercentile = statePercentile;
|
|
133
|
+
out.push(indicator);
|
|
134
|
+
}
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
137
|
+
/** Build one composite index (Demographic Index / Supplemental) from its column family. */
|
|
138
|
+
function buildIndex(row, code) {
|
|
139
|
+
const value = num(row, code);
|
|
140
|
+
if (value === undefined)
|
|
141
|
+
return;
|
|
142
|
+
const index = { value };
|
|
143
|
+
const usPercentile = num(row, `pctile.${code}`);
|
|
144
|
+
const statePercentile = num(row, `state.pctile.${code}`);
|
|
145
|
+
if (usPercentile !== undefined)
|
|
146
|
+
index.usPercentile = usPercentile;
|
|
147
|
+
if (statePercentile !== undefined)
|
|
148
|
+
index.statePercentile = statePercentile;
|
|
149
|
+
return index;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Normalize a raw EJAM row into the domain result. When the upstream flags the
|
|
153
|
+
* point out of coverage (`valid: false`), indicators are omitted and the
|
|
154
|
+
* `invalid_msg` is surfaced as a coverage note — zeros are never fabricated.
|
|
155
|
+
*/
|
|
156
|
+
export function normalizeEjscreen(row, params) {
|
|
157
|
+
const state = str(row, 'ST');
|
|
158
|
+
const stateName = str(row, 'statename');
|
|
159
|
+
const population = num(row, 'pop');
|
|
160
|
+
const blockGroupCount = num(row, 'bgcount_near_site');
|
|
161
|
+
// A covered US point returns identity/context columns (block groups, population, state).
|
|
162
|
+
// Out-of-coverage points return either an explicit valid:false (+ invalid_msg) or an
|
|
163
|
+
// empty/dataless object — treat both as no coverage rather than reporting valid-but-empty.
|
|
164
|
+
const hasContext = blockGroupCount !== undefined || population !== undefined || state !== undefined;
|
|
165
|
+
const valid = row.valid !== false && hasContext;
|
|
166
|
+
const note = valid
|
|
167
|
+
? undefined
|
|
168
|
+
: (str(row, 'invalid_msg') ??
|
|
169
|
+
'EJScreen returned no data for this location — it is likely outside US coverage (EJScreen covers US locations only).');
|
|
170
|
+
const location = {
|
|
171
|
+
latitude: params.latitude,
|
|
172
|
+
longitude: params.longitude,
|
|
173
|
+
bufferMiles: params.bufferMiles,
|
|
174
|
+
...(state !== undefined && { state }),
|
|
175
|
+
...(stateName !== undefined && { stateName }),
|
|
176
|
+
...(population !== undefined && { population }),
|
|
177
|
+
...(blockGroupCount !== undefined && { blockGroupCount }),
|
|
178
|
+
};
|
|
179
|
+
const environmental = valid ? buildEnvironmental(row) : [];
|
|
180
|
+
const demographic = valid ? buildDemographic(row) : [];
|
|
181
|
+
const demographicIndex = valid ? buildIndex(row, 'Demog.Index') : undefined;
|
|
182
|
+
const supplementalDemographicIndex = valid ? buildIndex(row, 'Demog.Index.Supp') : undefined;
|
|
183
|
+
const reportUrl = valid ? extractReportUrl(row['EJAM Report']) : undefined;
|
|
184
|
+
return {
|
|
185
|
+
location,
|
|
186
|
+
environmental,
|
|
187
|
+
demographic,
|
|
188
|
+
...(demographicIndex && { demographicIndex }),
|
|
189
|
+
...(supplementalDemographicIndex && { supplementalDemographicIndex }),
|
|
190
|
+
...(reportUrl && { reportUrl }),
|
|
191
|
+
coverage: { valid, ...(note && { note }) },
|
|
192
|
+
dataSource: EJSCREEN_DATA_SOURCE,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
export class EjscreenService {
|
|
196
|
+
baseUrl;
|
|
197
|
+
constructor(_config, _storage) {
|
|
198
|
+
this.baseUrl = getServerConfig().ejscreenBaseUrl;
|
|
199
|
+
}
|
|
200
|
+
/** Fetch and normalize EJScreen indicators for a point + buffer (miles). */
|
|
201
|
+
async getIndicators(params, ctx) {
|
|
202
|
+
const row = await this.fetchData(params, ctx);
|
|
203
|
+
return normalizeEjscreen(row, params);
|
|
204
|
+
}
|
|
205
|
+
/** POST the point + buffer to the EJAM `/data` endpoint and return the single row. */
|
|
206
|
+
// biome-ignore lint/suspicious/useAwait: delegates to withRetry() which returns a Promise — async typing is correct
|
|
207
|
+
async fetchData(params, ctx) {
|
|
208
|
+
const url = `${this.baseUrl}/data`;
|
|
209
|
+
return withRetry(async () => {
|
|
210
|
+
const response = await fetch(url, {
|
|
211
|
+
method: 'POST',
|
|
212
|
+
headers: { 'Content-Type': 'application/json' },
|
|
213
|
+
body: JSON.stringify({
|
|
214
|
+
sites: [{ lat: params.latitude, lon: params.longitude }],
|
|
215
|
+
buffer: params.bufferMiles,
|
|
216
|
+
}),
|
|
217
|
+
signal: ctx.signal,
|
|
218
|
+
});
|
|
219
|
+
const text = await response.text();
|
|
220
|
+
if (!response.ok) {
|
|
221
|
+
// Bad input (e.g. invalid coordinates) returns HTTP 400 with {"error":[...]}. This is
|
|
222
|
+
// deterministic — surface it as a validation failure rather than retrying.
|
|
223
|
+
if (response.status === 400) {
|
|
224
|
+
throw validationError(`EJAM API rejected the request: ${parseApiError(text) ?? 'HTTP 400'}`, { reason: 'upstream_rejected', status: 400, ...ctx.recoveryFor('upstream_rejected') });
|
|
225
|
+
}
|
|
226
|
+
throw serviceUnavailable(`EJAM API returned HTTP ${response.status}.`, {
|
|
227
|
+
status: response.status,
|
|
228
|
+
url,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
if (/^\s*<(!DOCTYPE\s+html|html[\s>])/i.test(text)) {
|
|
232
|
+
throw serviceUnavailable('EJAM API returned HTML instead of JSON — likely unavailable or rate-limited.', { url });
|
|
233
|
+
}
|
|
234
|
+
const parsed = JSON.parse(text);
|
|
235
|
+
const first = Array.isArray(parsed) ? parsed[0] : parsed;
|
|
236
|
+
if (first === undefined || first === null || typeof first !== 'object') {
|
|
237
|
+
throw serviceUnavailable('EJAM API returned an empty response.', { url });
|
|
238
|
+
}
|
|
239
|
+
return first;
|
|
240
|
+
}, {
|
|
241
|
+
operation: 'EjscreenService.fetchData',
|
|
242
|
+
baseDelayMs: 1000,
|
|
243
|
+
signal: ctx.signal,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// --- Init/accessor pattern ---
|
|
248
|
+
let _service;
|
|
249
|
+
export function initEjscreenService(config, storage) {
|
|
250
|
+
_service = new EjscreenService(config, storage);
|
|
251
|
+
}
|
|
252
|
+
export function getEjscreenService() {
|
|
253
|
+
if (!_service) {
|
|
254
|
+
throw new Error('EjscreenService not initialized — call initEjscreenService() in setup()');
|
|
255
|
+
}
|
|
256
|
+
return _service;
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=ejscreen-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ejscreen-service.js","sourceRoot":"","sources":["../../../src/services/ejscreen/ejscreen-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview EJScreen (EJAM API) response and normalized domain types.
|
|
3
|
+
* Data is EJScreen v2.2 (2022) served via the community-maintained EJAM API
|
|
4
|
+
* (api.ejanalysis.com, Public Environmental Data Partners), which rehosts
|
|
5
|
+
* EJScreen after EPA discontinued public access in 2025.
|
|
6
|
+
* @module services/ejscreen/types
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Raw EJAM `POST /data` response row. The upstream returns a JSON array of one
|
|
10
|
+
* object with ~683 columns following a systematic naming convention
|
|
11
|
+
* (`<x>`, `pctile.<x>`, `state.pctile.<x>`, `EJ.DISPARITY.<x>.eo`, …). Only the
|
|
12
|
+
* columns mapped by the service are read; the row is typed as a dynamic bag.
|
|
13
|
+
*/
|
|
14
|
+
export type RawEjamRow = Record<string, unknown>;
|
|
15
|
+
/** One EJScreen environmental indicator, with percentiles and its EJ Index. */
|
|
16
|
+
export interface EjEnvironmentalIndicator {
|
|
17
|
+
code: string;
|
|
18
|
+
ejIndex?: number;
|
|
19
|
+
ejIndexStatePercentile?: number;
|
|
20
|
+
ejIndexUsPercentile?: number;
|
|
21
|
+
label: string;
|
|
22
|
+
statePercentile?: number;
|
|
23
|
+
unit?: string;
|
|
24
|
+
usPercentile?: number;
|
|
25
|
+
value: number;
|
|
26
|
+
}
|
|
27
|
+
/** One EJScreen demographic indicator, expressed as a percentage share. */
|
|
28
|
+
export interface EjDemographicIndicator {
|
|
29
|
+
code: string;
|
|
30
|
+
label: string;
|
|
31
|
+
percent: number;
|
|
32
|
+
statePercentile?: number;
|
|
33
|
+
usPercentile?: number;
|
|
34
|
+
}
|
|
35
|
+
/** A composite index value (Demographic Index / Supplemental Demographic Index). */
|
|
36
|
+
export interface EjIndexValue {
|
|
37
|
+
statePercentile?: number;
|
|
38
|
+
usPercentile?: number;
|
|
39
|
+
value: number;
|
|
40
|
+
}
|
|
41
|
+
/** Normalized EJScreen result for a point + buffer. Mirrors the tool output schema. */
|
|
42
|
+
export interface EjscreenResult {
|
|
43
|
+
coverage: {
|
|
44
|
+
valid: boolean;
|
|
45
|
+
note?: string;
|
|
46
|
+
};
|
|
47
|
+
dataSource: string;
|
|
48
|
+
demographic: EjDemographicIndicator[];
|
|
49
|
+
demographicIndex?: EjIndexValue;
|
|
50
|
+
environmental: EjEnvironmentalIndicator[];
|
|
51
|
+
location: {
|
|
52
|
+
latitude: number;
|
|
53
|
+
longitude: number;
|
|
54
|
+
bufferMiles: number;
|
|
55
|
+
state?: string;
|
|
56
|
+
stateName?: string;
|
|
57
|
+
population?: number;
|
|
58
|
+
blockGroupCount?: number;
|
|
59
|
+
};
|
|
60
|
+
reportUrl?: string;
|
|
61
|
+
supplementalDemographicIndex?: EjIndexValue;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/ejscreen/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,+EAA+E;AAC/E,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2EAA2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uFAAuF;AACvF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACtC,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,aAAa,EAAE,wBAAwB,EAAE,CAAC;IAC1C,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B,CAAC,EAAE,YAAY,CAAC;CAC7C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview EJScreen (EJAM API) response and normalized domain types.
|
|
3
|
+
* Data is EJScreen v2.2 (2022) served via the community-maintained EJAM API
|
|
4
|
+
* (api.ejanalysis.com, Public Environmental Data Partners), which rehosts
|
|
5
|
+
* EJScreen after EPA discontinued public access in 2025.
|
|
6
|
+
* @module services/ejscreen/types
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/ejscreen/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/epa-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Access EPA environmental data — facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems, and real-time air quality (AirNow) via MCP. STDIO or Streamable HTTP.",
|
|
5
5
|
"mcpName": "io.github.cyanheads/epa-mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/epa-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/epa-mcp-server.mcpb",
|
|
34
34
|
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
35
35
|
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
36
|
+
"release:github": "bun run scripts/release-github.ts",
|
|
36
37
|
"test": "bunx vitest run",
|
|
37
38
|
"start": "MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js",
|
|
38
39
|
"start:stdio": "MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js",
|
|
@@ -84,12 +85,13 @@
|
|
|
84
85
|
"access": "public"
|
|
85
86
|
},
|
|
86
87
|
"dependencies": {
|
|
87
|
-
"@cyanheads/mcp-ts-core": "^0.10.
|
|
88
|
+
"@cyanheads/mcp-ts-core": "^0.10.14",
|
|
88
89
|
"pino-pretty": "^13.1.3",
|
|
89
90
|
"zod": "^4.4.3"
|
|
90
91
|
},
|
|
91
92
|
"devDependencies": {
|
|
92
|
-
"@biomejs/biome": "^2.5.
|
|
93
|
+
"@biomejs/biome": "^2.5.2",
|
|
94
|
+
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
93
95
|
"@types/node": "^25.9.3",
|
|
94
96
|
"depcheck": "^1.4.7",
|
|
95
97
|
"ignore": "^7.0.5",
|
package/server.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/epa-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.3.0",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@cyanheads/epa-mcp-server",
|
|
15
15
|
"runtimeHint": "node",
|
|
16
|
-
"version": "0.
|
|
16
|
+
"version": "0.3.0",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
19
19
|
"type": "positional",
|
|
@@ -31,6 +31,13 @@
|
|
|
31
31
|
"format": "string",
|
|
32
32
|
"isRequired": false
|
|
33
33
|
},
|
|
34
|
+
{
|
|
35
|
+
"name": "EJSCREEN_API_BASE_URL",
|
|
36
|
+
"description": "Optional override for the EJScreen (EJAM) API base URL used by epa_get_ejscreen. Defaults to https://api.ejanalysis.com — the community-maintained EJScreen rehost by Public Environmental Data Partners.",
|
|
37
|
+
"format": "string",
|
|
38
|
+
"isRequired": false,
|
|
39
|
+
"default": "https://api.ejanalysis.com"
|
|
40
|
+
},
|
|
34
41
|
{
|
|
35
42
|
"name": "MCP_LOG_LEVEL",
|
|
36
43
|
"description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
|
|
@@ -48,7 +55,7 @@
|
|
|
48
55
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
49
56
|
"identifier": "@cyanheads/epa-mcp-server",
|
|
50
57
|
"runtimeHint": "node",
|
|
51
|
-
"version": "0.
|
|
58
|
+
"version": "0.3.0",
|
|
52
59
|
"packageArguments": [
|
|
53
60
|
{
|
|
54
61
|
"type": "positional",
|
|
@@ -66,6 +73,13 @@
|
|
|
66
73
|
"format": "string",
|
|
67
74
|
"isRequired": false
|
|
68
75
|
},
|
|
76
|
+
{
|
|
77
|
+
"name": "EJSCREEN_API_BASE_URL",
|
|
78
|
+
"description": "Optional override for the EJScreen (EJAM) API base URL used by epa_get_ejscreen. Defaults to https://api.ejanalysis.com — the community-maintained EJScreen rehost by Public Environmental Data Partners.",
|
|
79
|
+
"format": "string",
|
|
80
|
+
"isRequired": false,
|
|
81
|
+
"default": "https://api.ejanalysis.com"
|
|
82
|
+
},
|
|
69
83
|
{
|
|
70
84
|
"name": "MCP_HTTP_HOST",
|
|
71
85
|
"description": "The hostname for the HTTP server.",
|