@cyanheads/epa-mcp-server 0.1.4 → 0.2.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.
Files changed (53) hide show
  1. package/CLAUDE.md +9 -15
  2. package/Dockerfile +6 -0
  3. package/README.md +7 -7
  4. package/changelog/0.1.x/0.1.5.md +24 -0
  5. package/changelog/0.2.x/0.2.0.md +21 -0
  6. package/changelog/template.md +9 -1
  7. package/dist/config/server-config.d.ts +1 -1
  8. package/dist/config/server-config.d.ts.map +1 -1
  9. package/dist/config/server-config.js +5 -3
  10. package/dist/config/server-config.js.map +1 -1
  11. package/dist/index.js +25 -9
  12. package/dist/index.js.map +1 -1
  13. package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts +3 -3
  14. package/dist/mcp-server/tools/definitions/get-air-quality.tool.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/get-air-quality.tool.js +2 -2
  16. package/dist/mcp-server/tools/definitions/get-air-quality.tool.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/get-facility.tool.d.ts +1 -1
  18. package/dist/mcp-server/tools/definitions/get-facility.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts +1 -1
  20. package/dist/mcp-server/tools/definitions/get-tri-releases.tool.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/definitions/index.d.ts +329 -42
  22. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  23. package/dist/mcp-server/tools/definitions/index.js +11 -2
  24. package/dist/mcp-server/tools/definitions/index.js.map +1 -1
  25. package/dist/mcp-server/tools/definitions/search-facilities.tool.d.ts +12 -4
  26. package/dist/mcp-server/tools/definitions/search-facilities.tool.d.ts.map +1 -1
  27. package/dist/mcp-server/tools/definitions/search-facilities.tool.js +48 -9
  28. package/dist/mcp-server/tools/definitions/search-facilities.tool.js.map +1 -1
  29. package/dist/mcp-server/tools/definitions/search-superfund.tool.d.ts +3 -3
  30. package/dist/mcp-server/tools/definitions/search-superfund.tool.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/definitions/search-superfund.tool.js +2 -2
  32. package/dist/mcp-server/tools/definitions/search-superfund.tool.js.map +1 -1
  33. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts +5 -1
  34. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.d.ts.map +1 -1
  35. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js +10 -0
  36. package/dist/mcp-server/tools/definitions/search-tri-releases.tool.js.map +1 -1
  37. package/dist/mcp-server/tools/definitions/search-violations.tool.d.ts +2 -2
  38. package/dist/mcp-server/tools/definitions/search-violations.tool.d.ts.map +1 -1
  39. package/dist/mcp-server/tools/definitions/search-violations.tool.js +1 -1
  40. package/dist/mcp-server/tools/definitions/search-violations.tool.js.map +1 -1
  41. package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts +2 -2
  42. package/dist/mcp-server/tools/definitions/search-water-systems.tool.d.ts.map +1 -1
  43. package/dist/mcp-server/tools/definitions/search-water-systems.tool.js +1 -1
  44. package/dist/mcp-server/tools/definitions/search-water-systems.tool.js.map +1 -1
  45. package/dist/services/airnow/airnow-service.d.ts.map +1 -1
  46. package/dist/services/airnow/airnow-service.js +5 -0
  47. package/dist/services/airnow/airnow-service.js.map +1 -1
  48. package/dist/services/echo/echo-service.d.ts +3 -0
  49. package/dist/services/echo/echo-service.d.ts.map +1 -1
  50. package/dist/services/echo/echo-service.js +7 -0
  51. package/dist/services/echo/echo-service.js.map +1 -1
  52. package/package.json +10 -7
  53. package/server.json +7 -7
package/CLAUDE.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** epa-mcp-server
4
- **Version:** 0.1.4
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.9`
4
+ **Version:** 0.2.0
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.6`
6
6
  **Engines:** Bun ≥1.3.0, Node ≥24.0.0
7
7
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
8
8
  **Zod:** ^4.4.3
@@ -11,19 +11,6 @@
11
11
 
12
12
  ---
13
13
 
14
- ## First Session
15
-
16
- This project was just scaffolded with `bunx @cyanheads/mcp-ts-core init`. The framework, skills, and example definitions are in place — the domain isn't. The user's first messages will set direction; wait for them before proceeding.
17
-
18
- > **Remove this section** from CLAUDE.md / AGENTS.md after completing these steps. The skills and conventions below remain — this block is one-time onboarding only.
19
-
20
- 1. **Get your bearings.** Take stock of the project tree, the skills in `skills/`, and the tools/MCP servers available. Light tool use is fine for context-building — you're mapping the territory, not committing yet.
21
- 2. **Read the framework docs** — `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` (builders, Context, errors, exports, conventions)
22
- 3. **Run the `setup` skill** — read `skills/setup/SKILL.md` and follow its checklist (project orientation, agent protocol file selection, echo definition cleanup, skill sync)
23
- 4. **Design the server** — read `skills/design-mcp-server/SKILL.md` and work through it with the user to map the domain into tools, resources, and services before scaffolding
24
-
25
- ---
26
-
27
14
  ## What's Next?
28
15
 
29
16
  When the user asks what's next or needs direction, suggest options based on the current project state. Common next steps:
@@ -265,10 +252,15 @@ Available skills:
265
252
  | `add-service` | Scaffold a new service integration |
266
253
  | `add-test` | Scaffold test file for a tool, resource, or service |
267
254
  | `field-test` | Exercise tools/resources/prompts with real inputs, verify behavior, report issues |
255
+ | `tool-defs-analysis` | Read-only audit of MCP definition language across the surface — voice, leaks, defaults, recovery hints, output descriptions |
268
256
  | `security-pass` | Audit server for MCP-flavored security gaps: output injection, scope blast radius, input sinks, tenant isolation |
257
+ | `code-simplifier` | Post-session cleanup against `git diff` — modernize syntax, consolidate duplication, align with the codebase |
269
258
  | `devcheck` | Lint, format, typecheck, audit |
270
259
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
260
+ | `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
261
+ | `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
271
262
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
263
+ | `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
272
264
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
273
265
  | `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
274
266
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
@@ -276,6 +268,8 @@ Available skills:
276
268
  | `api-config` | AppConfig, parseConfig, env vars |
277
269
  | `api-context` | Context interface, logger, state, progress |
278
270
  | `api-errors` | McpError, JsonRpcErrorCode, error patterns |
271
+ | `api-linter` | Definition linter rule catalog — invoked by `bun run lint:mcp` and `devcheck` |
272
+ | `api-mirror` | MirrorService: persistent local mirror of a bulk upstream dataset (SQLite + FTS5) — Tier 3 opt-in |
279
273
  | `api-services` | LLM, Speech, Graph services |
280
274
  | `api-testing` | createMockContext, test patterns |
281
275
  | `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
package/Dockerfile CHANGED
@@ -37,9 +37,12 @@ WORKDIR /usr/src/app
37
37
  ENV NODE_ENV=production
38
38
 
39
39
  # OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
40
+ ARG APP_VERSION
40
41
  LABEL org.opencontainers.image.title="epa-mcp-server"
41
42
  LABEL org.opencontainers.image.description="Access EPA environmental data — facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems, and real-time air quality (AirNow) via MCP."
42
43
  LABEL org.opencontainers.image.licenses="Apache-2.0"
44
+ LABEL org.opencontainers.image.version="${APP_VERSION}"
45
+ LABEL org.opencontainers.image.source="https://github.com/cyanheads/epa-mcp-server"
43
46
 
44
47
  # Copy dependency manifests
45
48
  COPY package.json bun.lock ./
@@ -94,5 +97,8 @@ ENV MCP_FORCE_CONSOLE_LOGGING="true"
94
97
  # Expose the port the server listens on
95
98
  EXPOSE ${MCP_HTTP_PORT}
96
99
 
100
+ # Health check using a bun-native fetch (slim image ships no curl/wget)
101
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD bun -e "fetch('http://localhost:'+(process.env.MCP_HTTP_PORT??'3010')+'/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
102
+
97
103
  # The command to start the server
98
104
  CMD ["bun", "run", "dist/index.js"]
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![Version](https://img.shields.io/badge/Version-0.1.4-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/epa-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/epa-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/epa-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.0-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-0.2.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/epa-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/epa-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/epa-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.0-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
12
  </div>
13
13
 
@@ -27,7 +27,7 @@
27
27
 
28
28
  | Tool | Description |
29
29
  |:---|:---|
30
- | `epa_search_facilities` | Search EPA-regulated facilities by location, industry, or compliance status across all environmental programs (CAA, CWA, RCRA, TRI, SDWA). Returns facility name, EPA Registry ID, coordinates, county FIPS, per-program compliance flags, inspection counts, penalty totals, and TRI release totals. |
30
+ | `epa_search_facilities` | Search EPA-regulated facilities by location (ZIP, state, city, or latitude/longitude + radius proximity), industry, or compliance status across all environmental programs (CAA, CWA, RCRA, TRI, SDWA). Returns facility name, EPA Registry ID, coordinates, county FIPS, per-program compliance flags, inspection counts, penalty totals, and TRI release totals. |
31
31
  | `epa_get_facility` | Retrieve a full compliance profile for a single EPA-regulated facility: compliance status per program, inspection dates, formal enforcement actions, penalty amounts, and TRI annual release totals. Aggregates multiple ECHO DFR endpoints in parallel. |
32
32
  | `epa_search_violations` | Search EPA civil and criminal enforcement cases by state, regulatory program, or date range. Returns case identifier, facility name and Registry ID, programs involved, penalty assessed, settlement date, and case type. |
33
33
  | `epa_get_air_quality` | Get AQI observations or forecasts for a location. Returns per-pollutant AQI values (PM2.5, ozone, CO, SO2, NO2), AQI category (Good through Hazardous), reporting area name, and observation timestamp. |
@@ -40,7 +40,7 @@
40
40
 
41
41
  Search for EPA-regulated facilities with cross-program compliance data.
42
42
 
43
- - Geographic filters: ZIP code, state, city (city requires state)
43
+ - Geographic filters: ZIP code, state, city (city requires state), or latitude + longitude + radius_miles for proximity search
44
44
  - Program filter: narrow to CAA, CWA, RCRA, TRI, or SDWA registrants
45
45
  - Compliance filter: `has_violation` flag to surface only non-compliant facilities
46
46
  - Returns `RegistryID` (key for `epa_get_facility`), `FacFIPSCode` (county FIPS for Census chaining), and coordinates
@@ -156,7 +156,7 @@ Agent-friendly output:
156
156
 
157
157
  ## Getting started
158
158
 
159
- Add the following to your MCP client configuration file. An AirNow API key is required for `epa_get_air_quality` — register free at [docs.airnowapi.org](https://docs.airnowapi.org/account/request/). ECHO and DMAP tools work without authentication.
159
+ Add the following to your MCP client configuration file. An AirNow API key is optional — set `AIRNOW_API_KEY` to enable `epa_get_air_quality` (register free at [docs.airnowapi.org](https://docs.airnowapi.org/account/request/)); without it the server starts with the other 7 tools. ECHO and DMAP tools work without authentication.
160
160
 
161
161
  ```json
162
162
  {
@@ -204,7 +204,7 @@ MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 AIRNOW_API_KEY=... bun run start:http
204
204
  ### Prerequisites
205
205
 
206
206
  - [Bun v1.3.0](https://bun.sh/) or higher (or Node.js v24+).
207
- - An AirNow API key for `epa_get_air_quality` — register free at [docs.airnowapi.org/account/request](https://docs.airnowapi.org/account/request/). ECHO and DMAP tools require no API key.
207
+ - (Optional) An AirNow API key to enable `epa_get_air_quality` — register free at [docs.airnowapi.org/account/request](https://docs.airnowapi.org/account/request/). Without it the server runs the other 7 tools. ECHO and DMAP tools require no API key.
208
208
 
209
209
  ### Installation
210
210
 
@@ -230,7 +230,7 @@ bun install
230
230
 
231
231
  ```sh
232
232
  cp .env.example .env
233
- # edit .env and set AIRNOW_API_KEY
233
+ # optionally set AIRNOW_API_KEY to enable the air quality tool
234
234
  ```
235
235
 
236
236
  ## Configuration
@@ -239,7 +239,7 @@ All configuration is validated at startup via Zod schemas in `src/config/`. Key
239
239
 
240
240
  | Variable | Description | Default |
241
241
  |:---|:---|:---|
242
- | `AIRNOW_API_KEY` | **Required for `epa_get_air_quality`.** Free registration at [docs.airnowapi.org](https://docs.airnowapi.org/account/request/). ECHO and DMAP tools work without it. | — |
242
+ | `AIRNOW_API_KEY` | **Optional.** Enables `epa_get_air_quality` when set; the server runs the other 7 tools without it. Free registration at [docs.airnowapi.org](https://docs.airnowapi.org/account/request/). | — |
243
243
  | `EPA_ECHO_BASE_URL` | ECHO API base URL | `https://echodata.epa.gov/echo` |
244
244
  | `EPA_DMAP_BASE_URL` | Envirofacts DMAP API base URL | `https://data.epa.gov/dmapservice` |
245
245
  | `EPA_AIRNOW_BASE_URL` | AirNow API base URL | `https://www.airnowapi.org/aq` |
@@ -0,0 +1,24 @@
1
+ ---
2
+ summary: "Adopt mcp-ts-core ^0.10.6 — ValidationError codes, explicit server identity, TRI truncation enrichment, Docker healthcheck, plugin manifests"
3
+ breaking: false
4
+ security: false
5
+ ---
6
+
7
+ # 0.1.5 — 2026-06-12
8
+
9
+ ## Added
10
+
11
+ - **TRI truncation signal** — `epa_search_tri_releases` emits an `enrichment` block (`truncated`, `shown`, `cap`) via `ctx.enrich` when results hit the requested `limit`, flagging that more records may exist.
12
+ - **Plugin manifests** — `.claude-plugin/plugin.json` and `.codex-plugin/` manifests for one-step install in Claude Code and Codex.
13
+ - **Docker `HEALTHCHECK`** — bun-native `fetch` against `/healthz` (slim image ships no curl/wget), plus OCI `version` and `source` labels driven by an `APP_VERSION` build arg.
14
+ - **`format:unsafe`** script (`biome check --write --unsafe`); `format` no longer applies unsafe fixes by default. `stdio` and `streamable-http` added to package keywords.
15
+
16
+ ## Changed
17
+
18
+ - **`@cyanheads/mcp-ts-core`** `^0.9.9` → `^0.10.6` — framework adoption.
19
+ - **Validation error codes** — the geographic/location precondition errors across `epa_search_facilities`, `epa_search_violations`, `epa_search_water_systems`, `epa_search_superfund`, `epa_search_tri_releases`, and `epa_get_air_quality` now use `JsonRpcErrorCode.ValidationError` (renamed from `InvalidParams` in 0.10.x).
20
+ - **Server identity** — `createApp()` sets `name` and `title` explicitly to `epa-mcp-server`.
21
+
22
+ ## Dependency bumps (dev)
23
+
24
+ - `@types/node` ^25.9.2 → ^25.9.3
@@ -0,0 +1,21 @@
1
+ ---
2
+ summary: "Optional AIRNOW_API_KEY (server runs the 7 keyless tools without it) and latitude/longitude/radius proximity search on epa_search_facilities"
3
+ breaking: false
4
+ security: false
5
+ ---
6
+
7
+ # 0.2.0 — 2026-06-21
8
+
9
+ ## Added
10
+
11
+ - **`epa_search_facilities` proximity search** — new `latitude`, `longitude`, and `radius_miles` inputs (radius capped at 100 mi), mapped to the ECHO `p_lat` / `p_long` / `p_radius_mi` parameters. A complete latitude+longitude+radius_miles triple is a valid geographic filter alongside `zip_code` / `state` / `city`. ([#14](https://github.com/cyanheads/epa-mcp-server/issues/14))
12
+ - **`incomplete_proximity` error** — supplying only one or two of the three proximity fields raises a `ValidationError` before the upstream call. `latitude` / `longitude` of `0` (equator / prime meridian) are valid and presence is tested with `!== undefined`, never a truthy check. ([#14](https://github.com/cyanheads/epa-mcp-server/issues/14))
13
+
14
+ ## Changed
15
+
16
+ - **`AIRNOW_API_KEY` is now optional** — when unset (or empty / whitespace-only), the server starts without `epa_get_air_quality` and skips AirNow init, registering the 7 keyless ECHO/DMAP tools (`coreToolDefinitions`); set the key to enable the full 8-tool surface. `server.json` and `manifest.json` mark the variable optional, and server instructions drop the AirNow guidance when the tool is disabled. ([#13](https://github.com/cyanheads/epa-mcp-server/issues/13))
17
+
18
+ ## Dependency bumps (dev)
19
+
20
+ - `@biomejs/biome` ^2.4.16 → ^2.5.0
21
+ - `vitest` ^4.1.8 → ^4.1.9
@@ -19,6 +19,14 @@ breaking: false
19
19
  # `## Security` section below. Flagged as `Security` in the rollup so
20
20
  # users can triage upgrade urgency at a glance.
21
21
  security: false
22
+
23
+ # Optional free-form notes for maintenance agents processing this release.
24
+ # Not rendered in CHANGELOG — consumed by agents running `maintenance` on
25
+ # downstream servers. Use for adoption instructions that don't fit the
26
+ # human-facing sections: new files to create, fields to populate, one-time
27
+ # migration steps. Omit the field entirely when there's nothing to say.
28
+ # agent-notes: |
29
+ # <instructions for downstream maintenance agents>
22
30
  ---
23
31
 
24
32
  # <version> — YYYY-MM-DD
@@ -35,7 +43,7 @@ security: false
35
43
  name the symbol, state what changed, stop. Use a second sentence only when
36
44
  it carries weight. If a bullet feels long, it is.
37
45
 
38
- Cut: mechanism walkthroughs (those belong in JSDoc, AGENTS.md, or the
46
+ Cut: mechanism walkthroughs (those belong in JSDoc, CLAUDE.md/AGENTS.md, or the
39
47
  relevant skill), ceremonial framings ("This release introduces…",
40
48
  backwards-compat paragraphs), file-by-file test enumerations, internal
41
49
  implementation notes. Prefer code/symbol names over English re-explanations.
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
6
  declare const ServerConfigSchema: z.ZodObject<{
7
- airNowApiKey: z.ZodString;
7
+ airNowApiKey: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
8
8
  echoBaseUrl: z.ZodDefault<z.ZodString>;
9
9
  dmapBaseUrl: z.ZodDefault<z.ZodString>;
10
10
  airNowBaseUrl: z.ZodDefault<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;;iBAoBtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,CAQ9C"}
1
+ {"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;;iBA2BtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,CAQ9C"}
@@ -5,10 +5,12 @@
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
6
  import { parseEnvConfig } from '@cyanheads/mcp-ts-core/config';
7
7
  const ServerConfigSchema = z.object({
8
+ // Optional: an empty or whitespace-only value (e.g. an unfilled `${AIRNOW_API_KEY}`
9
+ // placeholder from a bundle/compose config) is treated as absent so the server still
10
+ // starts. When absent, index.ts skips registering epa_get_air_quality and AirNow init.
8
11
  airNowApiKey: z
9
- .string()
10
- .min(1)
11
- .describe('AirNow API key (free registration at docs.airnowapi.org)'),
12
+ .preprocess((v) => (typeof v === 'string' && v.trim() === '' ? undefined : v), z.string().min(1).optional())
13
+ .describe('AirNow API key (free registration at docs.airnowapi.org). Optional — when unset, epa_get_air_quality is not registered and the other tools run without it.'),
12
14
  echoBaseUrl: z
13
15
  .string()
14
16
  .url()
@@ -1 +1 @@
1
- {"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,0DAA0D,CAAC;IACvE,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,+BAA+B,CAAC;SACxC,QAAQ,CAAC,mBAAmB,CAAC;IAChC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,kCAAkC,CAAC;SAC3C,QAAQ,CAAC,mBAAmB,CAAC;IAChC,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,8BAA8B,CAAC;SACvC,QAAQ,CAAC,qBAAqB,CAAC;CACnC,CAAC,CAAC;AAIH,IAAI,OAAiC,CAAC;AAEtC,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,cAAc,CAAC,kBAAkB,EAAE;QAC7C,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,mBAAmB;QAChC,aAAa,EAAE,qBAAqB;KACrC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,oFAAoF;IACpF,qFAAqF;IACrF,uFAAuF;IACvF,YAAY,EAAE,CAAC;SACZ,UAAU,CACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EACjE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC7B;SACA,QAAQ,CACP,4JAA4J,CAC7J;IACH,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,+BAA+B,CAAC;SACxC,QAAQ,CAAC,mBAAmB,CAAC;IAChC,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,kCAAkC,CAAC;SAC3C,QAAQ,CAAC,mBAAmB,CAAC;IAChC,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,8BAA8B,CAAC;SACvC,QAAQ,CAAC,qBAAqB,CAAC;CACnC,CAAC,CAAC;AAIH,IAAI,OAAiC,CAAC;AAEtC,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,cAAc,CAAC,kBAAkB,EAAE;QAC7C,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,mBAAmB;QAChC,aAAa,EAAE,qBAAqB;KACrC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/index.js CHANGED
@@ -4,25 +4,41 @@
4
4
  * @module index
5
5
  */
6
6
  import { createApp } from '@cyanheads/mcp-ts-core';
7
+ import { getServerConfig } from './config/server-config.js';
7
8
  import { allResourceDefinitions } from './mcp-server/resources/definitions/index.js';
8
- import { allToolDefinitions } from './mcp-server/tools/definitions/index.js';
9
+ import { allToolDefinitions, coreToolDefinitions } from './mcp-server/tools/definitions/index.js';
9
10
  import { initAirNowService } from './services/airnow/airnow-service.js';
10
11
  import { initDmapService } from './services/dmap/dmap-service.js';
11
12
  import { initEchoService } from './services/echo/echo-service.js';
13
+ // AirNow is the only key-gated service. When AIRNOW_API_KEY is absent the server
14
+ // starts without epa_get_air_quality, leaving the 7 keyless tools available.
15
+ const airNowEnabled = getServerConfig().airNowApiKey !== undefined;
16
+ /** Server instructions, omitting AirNow guidance when the air quality tool is disabled. */
17
+ function buildInstructions() {
18
+ const lines = [
19
+ `EPA environmental data server covering facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems (SDWIS)${airNowEnabled ? ', and real-time air quality (AirNow)' : ''}.`,
20
+ '- All tools are read-only. All APIs are US federal government public domain data.',
21
+ '- ECHO tools require at least one geographic filter (zip_code, state, or city) — unscoped searches time out. epa_search_facilities also accepts latitude + longitude + radius_miles for proximity search.',
22
+ '- TRI data lags ~18 months — most recent available year is typically 2 years prior to current.',
23
+ ];
24
+ if (airNowEnabled) {
25
+ lines.push('- AirNow data is preliminary and not valid for regulatory, trend, or enforcement purposes.');
26
+ }
27
+ lines.push('- Typical workflows: epa_search_facilities → epa_get_facility → epa_search_violations (compliance audit); epa_search_superfund (proximity); epa_search_water_systems + has_violation=true (drinking water safety).');
28
+ return lines.join('\n');
29
+ }
12
30
  await createApp({
13
- tools: [...allToolDefinitions],
31
+ name: 'epa-mcp-server',
32
+ title: 'epa-mcp-server',
33
+ tools: [...(airNowEnabled ? allToolDefinitions : coreToolDefinitions)],
14
34
  resources: [...allResourceDefinitions],
15
35
  prompts: [],
16
- instructions: 'EPA environmental data server covering facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems (SDWIS), and real-time air quality (AirNow).\n' +
17
- '- All tools are read-only. All APIs are US federal government public domain data.\n' +
18
- '- ECHO tools require at least one geographic filter (zip_code, state, or city) — unscoped searches time out.\n' +
19
- '- TRI data lags ~18 months — most recent available year is typically 2 years prior to current.\n' +
20
- '- AirNow data is preliminary and not valid for regulatory, trend, or enforcement purposes.\n' +
21
- '- Typical workflows: epa_search_facilities → epa_get_facility → epa_search_violations (compliance audit); epa_search_superfund (proximity); epa_search_water_systems + has_violation=true (drinking water safety).',
36
+ instructions: buildInstructions(),
22
37
  setup(core) {
23
38
  initEchoService(core.config, core.storage);
24
39
  initDmapService(core.config, core.storage);
25
- initAirNowService(core.config, core.storage);
40
+ if (airNowEnabled)
41
+ initAirNowService(core.config, core.storage);
26
42
  },
27
43
  });
28
44
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,SAAS,CAAC;IACd,KAAK,EAAE,CAAC,GAAG,kBAAkB,CAAC;IAC9B,SAAS,EAAE,CAAC,GAAG,sBAAsB,CAAC;IACtC,OAAO,EAAE,EAAE;IACX,YAAY,EACV,iLAAiL;QACjL,qFAAqF;QACrF,gHAAgH;QAChH,kGAAkG;QAClG,8FAA8F;QAC9F,oNAAoN;IACtN,KAAK,CAAC,IAAI;QACR,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,iFAAiF;AACjF,6EAA6E;AAC7E,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC,YAAY,KAAK,SAAS,CAAC;AAEnE,2FAA2F;AAC3F,SAAS,iBAAiB;IACxB,MAAM,KAAK,GAAG;QACZ,2IAA2I,aAAa,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE,GAAG;QACzM,mFAAmF;QACnF,2MAA2M;QAC3M,gGAAgG;KACjG,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CACR,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CACR,oNAAoN,CACrN,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACtE,SAAS,EAAE,CAAC,GAAG,sBAAsB,CAAC;IACtC,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,iBAAiB,EAAE;IACjC,KAAK,CAAC,IAAI;QACR,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,aAAa;YAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;CACF,CAAC,CAAC"}
@@ -34,13 +34,13 @@ export declare const getAirQualityTool: import("@cyanheads/mcp-ts-core").ToolDef
34
34
  message: z.ZodOptional<z.ZodString>;
35
35
  }, z.core.$strip>, readonly [{
36
36
  readonly reason: "no_location";
37
- readonly code: JsonRpcErrorCode.InvalidParams;
37
+ readonly code: JsonRpcErrorCode.ValidationError;
38
38
  readonly when: "Neither zip_code nor latitude+longitude was provided.";
39
39
  readonly recovery: "Provide either zip_code or both latitude and longitude to identify the location.";
40
40
  }, {
41
41
  readonly reason: "forecast_date_required";
42
- readonly code: JsonRpcErrorCode.InvalidParams;
42
+ readonly code: JsonRpcErrorCode.ValidationError;
43
43
  readonly when: "Mode is \"forecast\" but forecast_date was not provided.";
44
44
  readonly recovery: "Provide forecast_date as YYYY-MM-DD when using mode=\"forecast\".";
45
- }]>;
45
+ }], undefined>;
46
46
  //# sourceMappingURL=get-air-quality.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-air-quality.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-air-quality.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkO5B,CAAC"}
1
+ {"version":3,"file":"get-air-quality.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-air-quality.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkO5B,CAAC"}
@@ -88,13 +88,13 @@ export const getAirQualityTool = tool('epa_get_air_quality', {
88
88
  errors: [
89
89
  {
90
90
  reason: 'no_location',
91
- code: JsonRpcErrorCode.InvalidParams,
91
+ code: JsonRpcErrorCode.ValidationError,
92
92
  when: 'Neither zip_code nor latitude+longitude was provided.',
93
93
  recovery: 'Provide either zip_code or both latitude and longitude to identify the location.',
94
94
  },
95
95
  {
96
96
  reason: 'forecast_date_required',
97
- code: JsonRpcErrorCode.InvalidParams,
97
+ code: JsonRpcErrorCode.ValidationError,
98
98
  when: 'Mode is "forecast" but forecast_date was not provided.',
99
99
  recovery: 'Provide forecast_date as YYYY-MM-DD when using mode="forecast".',
100
100
  },
@@ -1 +1 @@
1
- {"version":3,"file":"get-air-quality.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-air-quality.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-air-quality.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-air-quality.tool.ts"],"names":[],"mappings":"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"}
@@ -57,5 +57,5 @@ export declare const getFacilityTool: import("@cyanheads/mcp-ts-core").ToolDefin
57
57
  readonly code: JsonRpcErrorCode.NotFound;
58
58
  readonly when: "ECHO returned no facility record for the given Registry ID.";
59
59
  readonly recovery: "Verify the Registry ID using epa_search_facilities and retry with a valid ID.";
60
- }]>;
60
+ }], undefined>;
61
61
  //# sourceMappingURL=get-facility.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-facility.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-facility.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2N1B,CAAC"}
1
+ {"version":3,"file":"get-facility.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-facility.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA2N1B,CAAC"}
@@ -22,5 +22,5 @@ export declare const getTriReleasesTool: import("@cyanheads/mcp-ts-core").ToolDe
22
22
  readonly code: JsonRpcErrorCode.NotFound;
23
23
  readonly when: "No TRI records found for the given facility ID and filters.";
24
24
  readonly recovery: "Verify the facility ID via epa_search_facilities. TRI data lags 18 months — try an earlier year.";
25
- }]>;
25
+ }], undefined>;
26
26
  //# sourceMappingURL=get-tri-releases.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-tri-releases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-tri-releases.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;GA0G7B,CAAC"}
1
+ {"version":3,"file":"get-tri-releases.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-tri-releases.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;cA0G7B,CAAC"}