@cyanheads/cdc-health-mcp-server 0.6.0 → 0.6.2

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 (27) hide show
  1. package/CLAUDE.md +58 -25
  2. package/Dockerfile +2 -2
  3. package/README.md +1 -1
  4. package/dist/mcp-server/resources/definitions/dataset-detail.resource.d.ts +19 -1
  5. package/dist/mcp-server/resources/definitions/dataset-detail.resource.d.ts.map +1 -1
  6. package/dist/mcp-server/resources/definitions/dataset-detail.resource.js +23 -0
  7. package/dist/mcp-server/resources/definitions/dataset-detail.resource.js.map +1 -1
  8. package/dist/mcp-server/resources/definitions/datasets.resource.d.ts +1 -1
  9. package/dist/mcp-server/resources/definitions/datasets.resource.d.ts.map +1 -1
  10. package/dist/mcp-server/tools/definitions/discover-datasets.tool.d.ts +14 -1
  11. package/dist/mcp-server/tools/definitions/discover-datasets.tool.d.ts.map +1 -1
  12. package/dist/mcp-server/tools/definitions/discover-datasets.tool.js +17 -0
  13. package/dist/mcp-server/tools/definitions/discover-datasets.tool.js.map +1 -1
  14. package/dist/mcp-server/tools/definitions/get-dataset-schema.tool.d.ts +19 -1
  15. package/dist/mcp-server/tools/definitions/get-dataset-schema.tool.d.ts.map +1 -1
  16. package/dist/mcp-server/tools/definitions/get-dataset-schema.tool.js +23 -0
  17. package/dist/mcp-server/tools/definitions/get-dataset-schema.tool.js.map +1 -1
  18. package/dist/mcp-server/tools/definitions/query-dataset.tool.d.ts +34 -1
  19. package/dist/mcp-server/tools/definitions/query-dataset.tool.d.ts.map +1 -1
  20. package/dist/mcp-server/tools/definitions/query-dataset.tool.js +41 -0
  21. package/dist/mcp-server/tools/definitions/query-dataset.tool.js.map +1 -1
  22. package/dist/services/socrata/socrata-service.d.ts +1 -1
  23. package/dist/services/socrata/socrata-service.d.ts.map +1 -1
  24. package/dist/services/socrata/socrata-service.js +38 -25
  25. package/dist/services/socrata/socrata-service.js.map +1 -1
  26. package/package.json +6 -8
  27. package/server.json +3 -3
package/CLAUDE.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** cdc-health-statistics-mcp-server
4
- **Version:** 0.6.0
4
+ **Version:** 0.6.2
5
5
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
6
6
 
7
7
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
@@ -73,7 +73,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
73
73
 
74
74
  ## Core Rules
75
75
 
76
- - **Logic throws, framework catches.** Tool/resource handlers are pure — throw on failure, no `try/catch`. Plain `Error` is fine; the framework catches, classifies, and formats. Use error factories (`notFound()`, `validationError()`, etc.) when the error code matters.
76
+ - **Logic throws, framework catches.** Tool/resource handlers are pure — throw on failure, no `try/catch`. The framework catches, classifies, and formats. Prefer typed error contracts (`errors[]` + `ctx.fail`) for declared failure modes; fall back to error factories (`notFound()`, `validationError()`, etc.) for ad-hoc throws.
77
77
  - **Use `ctx.log`** for request-scoped logging. No `console` calls.
78
78
  - **Use `ctx.state`** for tenant-scoped storage. Never access persistence directly.
79
79
  - **Check `ctx.elicit` / `ctx.sample`** for presence before calling.
@@ -87,11 +87,19 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
87
87
 
88
88
  ```ts
89
89
  import { tool, z } from '@cyanheads/mcp-ts-core';
90
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
90
91
  import { getSocrataService } from '@/services/socrata/socrata-service.js';
91
92
 
92
93
  export const getDatasetSchema = tool('cdc_get_dataset_schema', {
93
94
  description: 'Fetch the full column schema for a CDC dataset.',
94
95
  annotations: { readOnlyHint: true },
96
+
97
+ errors: [
98
+ { reason: 'dataset_not_found', code: JsonRpcErrorCode.NotFound,
99
+ when: 'Dataset ID does not exist or has been retired.',
100
+ recovery: 'Search again with cdc_discover_datasets to find a current ID.' },
101
+ ],
102
+
95
103
  input: z.object({
96
104
  datasetId: z.string().regex(/^[a-z0-9]{4}-[a-z0-9]{4}$/).describe('Four-by-four dataset identifier.'),
97
105
  }),
@@ -109,8 +117,9 @@ export const getDatasetSchema = tool('cdc_get_dataset_schema', {
109
117
  return metadata;
110
118
  },
111
119
 
112
- // format() populates content[] the only field most LLM clients forward to
113
- // the model. Render all data the LLM needs, not just a count or title.
120
+ // Different MCP clients read different surfaces Claude Code reads
121
+ // structuredContent, Claude Desktop reads content[]. format() is the
122
+ // markdown twin of structuredContent and must carry the same data.
114
123
  format: (result) => [{
115
124
  type: 'text',
116
125
  text: [`## ${result.name}`, ...result.columns.map(c => `- \`${c.fieldName}\` (${c.dataType})`)].join('\n'),
@@ -160,23 +169,27 @@ export const analyzeHealthTrend = prompt('analyze_health_trend', {
160
169
  ```ts
161
170
  // src/config/server-config.ts — lazy-parsed, separate from framework config
162
171
  import { z } from '@cyanheads/mcp-ts-core';
172
+ import { parseEnvConfig } from '@cyanheads/mcp-ts-core/config';
163
173
 
164
174
  const ServerConfigSchema = z.object({
165
175
  appToken: z.string().optional().describe('Socrata app token for higher rate limits'),
166
176
  baseUrl: z.string().url().default('https://data.cdc.gov').describe('Base URL for SODA API requests'),
167
177
  catalogUrl: z.string().url().default('https://api.us.socrata.com/api/catalog/v1').describe('Discovery API URL'),
168
178
  });
179
+
169
180
  let _config: z.infer<typeof ServerConfigSchema> | undefined;
170
181
  export function getServerConfig() {
171
- _config ??= ServerConfigSchema.parse({
172
- appToken: process.env.CDC_APP_TOKEN,
173
- baseUrl: process.env.CDC_BASE_URL,
174
- catalogUrl: process.env.CDC_CATALOG_URL,
182
+ _config ??= parseEnvConfig(ServerConfigSchema, {
183
+ appToken: 'CDC_APP_TOKEN',
184
+ baseUrl: 'CDC_BASE_URL',
185
+ catalogUrl: 'CDC_CATALOG_URL',
175
186
  });
176
187
  return _config;
177
188
  }
178
189
  ```
179
190
 
191
+ `parseEnvConfig` maps Zod schema paths → env var names so validation errors name the actual variable (`CDC_APP_TOKEN`) rather than the internal path (`appToken`).
192
+
180
193
  ---
181
194
 
182
195
  ## Context
@@ -198,24 +211,40 @@ Handlers receive a unified `ctx` object. Key properties:
198
211
 
199
212
  ## Errors
200
213
 
201
- Handlers throw — the framework catches, classifies, and formats. Three escalation levels:
214
+ Handlers throw — the framework catches, classifies, and formats.
215
+
216
+ **Recommended: typed error contract.** Declare `errors: [{ reason, code, when, recovery, retryable? }]` on `tool()` / `resource()` to receive a typed `ctx.fail(reason, …)` keyed by the declared reason union. TypeScript catches `ctx.fail('typo')` at compile time, `data.reason` is auto-populated for observability, and the linter enforces conformance against the handler body. The `recovery` field is required descriptive metadata (≥ 5 words, lint-validated) — the contract is the single source of truth. Spread `ctx.recoveryFor('reason')` into `data` to opt the contract recovery onto the wire. Baseline codes (`InternalError`, `ServiceUnavailable`, `Timeout`, `ValidationError`, `SerializationError`) bubble freely without declaring.
202
217
 
203
218
  ```ts
204
- // 1. Plain Error — framework auto-classifies from message patterns
205
- throw new Error('Item not found'); // NotFound
206
- throw new Error('Invalid query format'); // ValidationError
219
+ errors: [
220
+ { reason: 'no_match', code: JsonRpcErrorCode.NotFound,
221
+ when: 'No item matched the query.',
222
+ recovery: 'Broaden the query or check the spelling and try again.' },
223
+ ],
224
+ async handler(input, ctx) {
225
+ const item = await db.find(input.id);
226
+ if (!item) throw ctx.fail('no_match', `No item ${input.id}`, { ...ctx.recoveryFor('no_match') });
227
+ return item;
228
+ }
229
+ ```
230
+
231
+ **Declare contracts inline on each tool, even when similar across tools.** The contract is part of the tool's documented public surface — per-tool repetition is the intended cost of locality. Don't extract a shared `errors[]` constant.
207
232
 
208
- // 2. Error factoriesexplicit code, concise
209
- import { notFound, validationError, forbidden, serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
233
+ **Service-thrown errors** carry contract `reason` via `data: { reason }` on the factory call services don't have `ctx.fail`. The auto-classifier preserves `data` so clients see the same shape.
234
+
235
+ **Fallback** for ad-hoc throws (no contract entry fits, prototype tools, service-layer code):
236
+
237
+ ```ts
238
+ import { notFound, validationError, serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
210
239
  throw notFound('Item not found', { itemId });
211
240
  throw serviceUnavailable('API unavailable', { url }, { cause: err });
212
241
 
213
- // 3. McpError — full control over code and data
242
+ // McpError — when no factory exists for the code
214
243
  import { McpError, JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
215
244
  throw new McpError(JsonRpcErrorCode.DatabaseError, 'Connection failed', { pool: 'primary' });
216
245
  ```
217
246
 
218
- Plain `Error` is fine for most cases. Use factories when the error code matters. See framework CLAUDE.md for the full auto-classification table and all available factories.
247
+ See framework CLAUDE.md and the `api-errors` skill for the full auto-classification table, factory list, and contract reference.
219
248
 
220
249
  ---
221
250
 
@@ -265,23 +294,28 @@ Available skills:
265
294
  | `setup` | Post-init project orientation |
266
295
  | `design-mcp-server` | Design tool surface, resources, and services for a new server |
267
296
  | `add-tool` | Scaffold a new tool definition |
297
+ | `add-app-tool` | Scaffold an MCP App tool + paired UI resource |
268
298
  | `add-resource` | Scaffold a new resource definition |
269
299
  | `add-prompt` | Scaffold a new prompt definition |
270
300
  | `add-service` | Scaffold a new service integration |
271
301
  | `add-test` | Scaffold test file for a tool, resource, or service |
272
302
  | `field-test` | Exercise tools/resources/prompts via live HTTP + JSON-RPC, report findings |
303
+ | `tool-defs-analysis` | Read-only audit of definition language across the surface (10 categories) |
273
304
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
274
305
  | `security-pass` | Eight-axis security audit before release (injection, scope, input sinks, leakage, etc.) |
275
306
  | `release-and-publish` | Post-wrapup ship workflow — npm, MCP Registry, GHCR |
276
307
  | `maintenance` | Investigate, adopt, and verify dependency updates (framework changelog review + skill/script sync) |
308
+ | `migrate-mcp-ts-template` | Migrate a fork of mcp-ts-template to depend on the framework as a package |
277
309
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
278
310
  | `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
279
311
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
312
+ | `api-canvas` | DataCanvas Tier 3 SQL/analytical workspace + `spillover()` helper (opt-in via CANVAS_PROVIDER_TYPE) |
280
313
  | `api-config` | AppConfig, parseConfig, parseEnvConfig, env vars |
281
314
  | `api-context` | Context interface, logger, state, progress |
282
- | `api-errors` | McpError, JsonRpcErrorCode, error patterns |
315
+ | `api-errors` | McpError, JsonRpcErrorCode, typed error contracts, error patterns |
283
316
  | `api-linter` | Reference for every MCP definition lint rule (`format-parity`, `describe-on-fields`, `server-json-*`, etc.) |
284
317
  | `api-services` | LLM, Speech, Graph services |
318
+ | `api-telemetry` | OTel catalog: spans, metrics, completion logs, env config, cardinality rules |
285
319
  | `api-testing` | createMockContext, test patterns |
286
320
  | `api-utils` | Formatting, parsing, security, pagination, scheduling |
287
321
  | `api-workers` | Cloudflare Workers runtime |
@@ -301,10 +335,8 @@ When you complete a skill's checklist, check the boxes and add a completion time
301
335
  | `bun run tree` | Generate directory structure doc |
302
336
  | `bun run format` | Auto-fix formatting |
303
337
  | `bun run test` | Run tests |
304
- | `bun run dev:stdio` | Dev mode (stdio) |
305
- | `bun run dev:http` | Dev mode (HTTP) |
306
- | `bun run start:stdio` | Production mode (stdio) |
307
- | `bun run start:http` | Production mode (HTTP) |
338
+ | `bun run start:stdio` | Production mode (stdio) — `bun run rebuild && bun run start:stdio` for dev smoke-tests |
339
+ | `bun run start:http` | Production mode (HTTP) — `bun run rebuild && bun run start:http` for dev smoke-tests |
308
340
 
309
341
  ---
310
342
 
@@ -323,12 +355,13 @@ import { getSocrataService } from '@/services/socrata/socrata-service.js';
323
355
 
324
356
  ## Checklist
325
357
 
326
- - [ ] Zod schemas: all fields have `.describe()`, only JSON-Schema-serializable types (no `z.custom()`, `z.date()`, `z.transform()`, etc.)
327
- - [ ] Optional nested objects: handler guards for empty inner values from form-based clients (`if (input.obj?.field && ...)`, not just `if (input.obj)`)
358
+ - [ ] Zod schemas: all fields have `.describe()`, only JSON-Schema-serializable types (no `z.custom()`, `z.date()`, `z.transform()`, `z.bigint()`, `z.symbol()`, `z.void()`, `z.map()`, `z.set()`, `z.function()`, `z.nan()`)
359
+ - [ ] Optional nested objects: handler guards for empty inner values from form-based clients (`if (input.obj?.field && ...)`, not just `if (input.obj)`). When regex/length constraints matter, use `z.union([z.literal(''), z.string().regex(...).describe(...)])` — literal variants are exempt from `describe-on-fields`.
328
360
  - [ ] JSDoc `@fileoverview` + `@module` on every file
329
361
  - [ ] `ctx.log` for logging, `ctx.state` for storage
330
- - [ ] Handlers throw on failure — error factories or plain `Error`, no try/catch
331
- - [ ] `format()` renders all data the LLM needs — `content[]` is the only field most clients forward to the model
362
+ - [ ] Handlers throw on failure — typed `errors[]` + `ctx.fail` for declared modes, factories or `Error` for ad-hoc; no try/catch
363
+ - [ ] `format()` renders all data the LLM needs — different clients forward different surfaces (Claude Code → `structuredContent`, Claude Desktop → `content[]`); both must carry the same data
364
+ - [ ] Service-thrown errors carry contract `reason` via `data: { reason }` on factory calls when applicable
332
365
  - [ ] Registered in `createApp()` arrays (directly or via barrel exports)
333
366
  - [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
334
367
  - [ ] `bun run devcheck` passes
package/Dockerfile CHANGED
@@ -4,7 +4,7 @@
4
4
  # This stage installs all dependencies (including dev), builds the TypeScript
5
5
  # source code into JavaScript, and prepares the production assets.
6
6
  # ==============================================================================
7
- FROM oven/bun:1 AS build
7
+ FROM oven/bun:1.3 AS build
8
8
 
9
9
  WORKDIR /usr/src/app
10
10
 
@@ -28,7 +28,7 @@ RUN bun run build
28
28
  # application. It uses a slim base image and only includes production
29
29
  # dependencies and build artifacts.
30
30
  # ==============================================================================
31
- FROM oven/bun:1-slim AS production
31
+ FROM oven/bun:1.3-slim AS production
32
32
 
33
33
  WORKDIR /usr/src/app
34
34
 
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![npm](https://img.shields.io/npm/v/@cyanheads/cdc-health-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/cdc-health-mcp-server) [![Version](https://img.shields.io/badge/Version-0.6.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-259?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/)
10
+ [![npm](https://img.shields.io/npm/v/@cyanheads/cdc-health-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/cdc-health-mcp-server) [![Version](https://img.shields.io/badge/Version-0.6.2-blue.svg?style=flat-square)](./CHANGELOG.md) [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-259?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/)
11
11
 
12
12
  [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![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.2-blueviolet.svg?style=flat-square)](https://bun.sh/)
13
13
 
@@ -3,7 +3,25 @@
3
3
  * @module mcp-server/resources/definitions/dataset-detail
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
6
7
  export declare const datasetDetailResource: import("@cyanheads/mcp-ts-core").ResourceDefinition<z.ZodObject<{
7
8
  datasetId: z.ZodString;
8
- }, z.core.$strip>, undefined>;
9
+ }, z.core.$strip>, undefined, readonly [{
10
+ readonly reason: "dataset_not_found";
11
+ readonly code: JsonRpcErrorCode.NotFound;
12
+ readonly when: "Dataset ID does not exist or has been retired.";
13
+ readonly recovery: "Search again with cdc_discover_datasets to find a current ID for the topic of interest.";
14
+ }, {
15
+ readonly reason: "rate_limited";
16
+ readonly code: JsonRpcErrorCode.RateLimited;
17
+ readonly when: "Socrata API returns 429 Too Many Requests.";
18
+ readonly retryable: true;
19
+ readonly recovery: "Wait briefly and retry, or set CDC_APP_TOKEN for higher rate limits.";
20
+ }, {
21
+ readonly reason: "upstream_error";
22
+ readonly code: JsonRpcErrorCode.ServiceUnavailable;
23
+ readonly when: "Socrata metadata API returned a non-success status outside of 404/429.";
24
+ readonly retryable: true;
25
+ readonly recovery: "Retry after a brief delay; data.cdc.gov may be temporarily unavailable.";
26
+ }]>;
9
27
  //# sourceMappingURL=dataset-detail.resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-detail.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/dataset-detail.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGrD,eAAO,MAAM,qBAAqB;;6BAuChC,CAAC"}
1
+ {"version":3,"file":"dataset-detail.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/dataset-detail.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAY,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;GA+DhC,CAAC"}
@@ -3,11 +3,34 @@
3
3
  * @module mcp-server/resources/definitions/dataset-detail
4
4
  */
5
5
  import { resource, z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
6
7
  import { getSocrataService } from '../../../services/socrata/socrata-service.js';
7
8
  export const datasetDetailResource = resource('cdc://datasets/{datasetId}', {
8
9
  name: 'CDC Dataset Detail',
9
10
  description: 'Dataset metadata and column schema for a specific CDC dataset. Equivalent to cdc_get_dataset_schema — useful for injecting dataset context directly.',
10
11
  mimeType: 'application/json',
12
+ errors: [
13
+ {
14
+ reason: 'dataset_not_found',
15
+ code: JsonRpcErrorCode.NotFound,
16
+ when: 'Dataset ID does not exist or has been retired.',
17
+ recovery: 'Search again with cdc_discover_datasets to find a current ID for the topic of interest.',
18
+ },
19
+ {
20
+ reason: 'rate_limited',
21
+ code: JsonRpcErrorCode.RateLimited,
22
+ when: 'Socrata API returns 429 Too Many Requests.',
23
+ retryable: true,
24
+ recovery: 'Wait briefly and retry, or set CDC_APP_TOKEN for higher rate limits.',
25
+ },
26
+ {
27
+ reason: 'upstream_error',
28
+ code: JsonRpcErrorCode.ServiceUnavailable,
29
+ when: 'Socrata metadata API returned a non-success status outside of 404/429.',
30
+ retryable: true,
31
+ recovery: 'Retry after a brief delay; data.cdc.gov may be temporarily unavailable.',
32
+ },
33
+ ],
11
34
  list: async () => ({
12
35
  resources: [
13
36
  {
@@ -1 +1 @@
1
- {"version":3,"file":"dataset-detail.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/dataset-detail.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAC,4BAA4B,EAAE;IAC1E,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,sJAAsJ;IACxJ,QAAQ,EAAE,kBAAkB;IAE5B,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,0BAA0B;gBAC/B,IAAI,EAAE,+CAA+C;gBACrD,QAAQ,EAAE,kBAAkB;aAC7B;YACD;gBACE,GAAG,EAAE,0BAA0B;gBAC/B,IAAI,EAAE,4CAA4C;gBAClD,QAAQ,EAAE,kBAAkB;aAC7B;SACF;KACF,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,KAAK,CAAC,2BAA2B,CAAC;aAClC,QAAQ,CAAC,sDAAsD,CAAC;KACpE,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG;QACvB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE;YAC/C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"dataset-detail.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/dataset-detail.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAC,4BAA4B,EAAE;IAC1E,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,sJAAsJ;IACxJ,QAAQ,EAAE,kBAAkB;IAE5B,MAAM,EAAE;QACN;YACE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,gDAAgD;YACtD,QAAQ,EACN,yFAAyF;SAC5F;QACD;YACE,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,gBAAgB,CAAC,WAAW;YAClC,IAAI,EAAE,4CAA4C;YAClD,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,sEAAsE;SACjF;QACD;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,wEAAwE;YAC9E,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,yEAAyE;SACpF;KACF;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACjB,SAAS,EAAE;YACT;gBACE,GAAG,EAAE,0BAA0B;gBAC/B,IAAI,EAAE,+CAA+C;gBACrD,QAAQ,EAAE,kBAAkB;aAC7B;YACD;gBACE,GAAG,EAAE,0BAA0B;gBAC/B,IAAI,EAAE,4CAA4C;gBAClD,QAAQ,EAAE,kBAAkB;aAC7B;SACF;KACF,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,KAAK,CAAC,2BAA2B,CAAC;aAClC,QAAQ,CAAC,sDAAsD,CAAC;KACpE,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG;QACvB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,EAAE;YAC/C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC,CAAC"}
@@ -4,5 +4,5 @@
4
4
  */
5
5
  export declare const datasetsResource: import("@cyanheads/mcp-ts-core").ResourceDefinition<import("zod").ZodObject<Readonly<{
6
6
  [k: string]: import("zod/v4/core").$ZodType<unknown, unknown, import("zod/v4/core").$ZodTypeInternals<unknown, unknown>>;
7
- }>, import("zod/v4/core").$strip>, undefined>;
7
+ }>, import("zod/v4/core").$strip>, undefined, undefined>;
8
8
  //# sourceMappingURL=datasets.resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"datasets.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/datasets.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,gBAAgB;;6CAgC3B,CAAC"}
1
+ {"version":3,"file":"datasets.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/datasets.resource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,gBAAgB;;wDAgC3B,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * @module mcp-server/tools/definitions/discover-datasets
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
6
7
  export declare const discoverDatasets: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
7
8
  query: z.ZodOptional<z.ZodString>;
8
9
  category: z.ZodOptional<z.ZodString>;
@@ -27,5 +28,17 @@ export declare const discoverDatasets: import("@cyanheads/mcp-ts-core").ToolDefi
27
28
  category: z.ZodOptional<z.ZodString>;
28
29
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
29
30
  }, z.core.$strip>;
30
- }, z.core.$strip>>;
31
+ }, z.core.$strip>, readonly [{
32
+ readonly reason: "rate_limited";
33
+ readonly code: JsonRpcErrorCode.RateLimited;
34
+ readonly when: "Socrata API returns 429 Too Many Requests.";
35
+ readonly retryable: true;
36
+ readonly recovery: "Wait briefly and retry, or set CDC_APP_TOKEN for higher rate limits.";
37
+ }, {
38
+ readonly reason: "upstream_error";
39
+ readonly code: JsonRpcErrorCode.ServiceUnavailable;
40
+ readonly when: "Socrata catalog API returned a non-success status outside of 404/429.";
41
+ readonly retryable: true;
42
+ readonly recovery: "Retry after a brief delay; the catalog may be temporarily unavailable.";
43
+ }]>;
31
44
  //# sourceMappingURL=discover-datasets.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discover-datasets.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/discover-datasets.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;kBA0I3B,CAAC"}
1
+ {"version":3,"file":"discover-datasets.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/discover-datasets.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,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2J3B,CAAC"}
@@ -3,10 +3,27 @@
3
3
  * @module mcp-server/tools/definitions/discover-datasets
4
4
  */
5
5
  import { tool, z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
6
7
  import { getSocrataService } from '../../../services/socrata/socrata-service.js';
7
8
  export const discoverDatasets = tool('cdc_discover_datasets', {
8
9
  description: 'Search the CDC dataset catalog by keyword, category, or tag. Returns dataset IDs, names, descriptions, column lists, and update timestamps. Use this first to find the right dataset before querying.',
9
10
  annotations: { readOnlyHint: true },
11
+ errors: [
12
+ {
13
+ reason: 'rate_limited',
14
+ code: JsonRpcErrorCode.RateLimited,
15
+ when: 'Socrata API returns 429 Too Many Requests.',
16
+ retryable: true,
17
+ recovery: 'Wait briefly and retry, or set CDC_APP_TOKEN for higher rate limits.',
18
+ },
19
+ {
20
+ reason: 'upstream_error',
21
+ code: JsonRpcErrorCode.ServiceUnavailable,
22
+ when: 'Socrata catalog API returned a non-success status outside of 404/429.',
23
+ retryable: true,
24
+ recovery: 'Retry after a brief delay; the catalog may be temporarily unavailable.',
25
+ },
26
+ ],
10
27
  input: z.object({
11
28
  query: z
12
29
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"discover-datasets.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/discover-datasets.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover-datasets.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/discover-datasets.tool.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * @module mcp-server/tools/definitions/get-dataset-schema
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
6
7
  export declare const getDatasetSchema: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
7
8
  datasetId: z.ZodString;
8
9
  }, z.core.$strip>, z.ZodObject<{
@@ -15,5 +16,22 @@ export declare const getDatasetSchema: import("@cyanheads/mcp-ts-core").ToolDefi
15
16
  dataType: z.ZodString;
16
17
  description: z.ZodOptional<z.ZodString>;
17
18
  }, z.core.$strip>>;
18
- }, z.core.$strip>>;
19
+ }, z.core.$strip>, readonly [{
20
+ readonly reason: "dataset_not_found";
21
+ readonly code: JsonRpcErrorCode.NotFound;
22
+ readonly when: "Dataset ID does not exist or has been retired.";
23
+ readonly recovery: "Search again with cdc_discover_datasets to find a current ID for the topic of interest.";
24
+ }, {
25
+ readonly reason: "rate_limited";
26
+ readonly code: JsonRpcErrorCode.RateLimited;
27
+ readonly when: "Socrata API returns 429 Too Many Requests.";
28
+ readonly retryable: true;
29
+ readonly recovery: "Wait briefly and retry, or set CDC_APP_TOKEN for higher rate limits.";
30
+ }, {
31
+ readonly reason: "upstream_error";
32
+ readonly code: JsonRpcErrorCode.ServiceUnavailable;
33
+ readonly when: "Socrata metadata API returned a non-success status outside of 404/429.";
34
+ readonly retryable: true;
35
+ readonly recovery: "Retry after a brief delay; data.cdc.gov may be temporarily unavailable.";
36
+ }]>;
19
37
  //# sourceMappingURL=get-dataset-schema.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-dataset-schema.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-dataset-schema.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;kBAkE3B,CAAC"}
1
+ {"version":3,"file":"get-dataset-schema.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-dataset-schema.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,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0F3B,CAAC"}
@@ -3,10 +3,33 @@
3
3
  * @module mcp-server/tools/definitions/get-dataset-schema
4
4
  */
5
5
  import { tool, z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
6
7
  import { getSocrataService } from '../../../services/socrata/socrata-service.js';
7
8
  export const getDatasetSchema = tool('cdc_get_dataset_schema', {
8
9
  description: 'Fetch the full column schema for a CDC dataset — names, data types, descriptions, row count, and last-updated timestamp. Essential before writing SoQL queries against unfamiliar datasets.',
9
10
  annotations: { readOnlyHint: true },
11
+ errors: [
12
+ {
13
+ reason: 'dataset_not_found',
14
+ code: JsonRpcErrorCode.NotFound,
15
+ when: 'Dataset ID does not exist or has been retired.',
16
+ recovery: 'Search again with cdc_discover_datasets to find a current ID for the topic of interest.',
17
+ },
18
+ {
19
+ reason: 'rate_limited',
20
+ code: JsonRpcErrorCode.RateLimited,
21
+ when: 'Socrata API returns 429 Too Many Requests.',
22
+ retryable: true,
23
+ recovery: 'Wait briefly and retry, or set CDC_APP_TOKEN for higher rate limits.',
24
+ },
25
+ {
26
+ reason: 'upstream_error',
27
+ code: JsonRpcErrorCode.ServiceUnavailable,
28
+ when: 'Socrata metadata API returned a non-success status outside of 404/429.',
29
+ retryable: true,
30
+ recovery: 'Retry after a brief delay; data.cdc.gov may be temporarily unavailable.',
31
+ },
32
+ ],
10
33
  input: z.object({
11
34
  datasetId: z
12
35
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"get-dataset-schema.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-dataset-schema.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-dataset-schema.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-dataset-schema.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,EAAE;IAC7D,WAAW,EACT,6LAA6L;IAC/L,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;IAEnC,MAAM,EAAE;QACN;YACE,MAAM,EAAE,mBAAmB;YAC3B,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,gDAAgD;YACtD,QAAQ,EACN,yFAAyF;SAC5F;QACD;YACE,MAAM,EAAE,cAAc;YACtB,IAAI,EAAE,gBAAgB,CAAC,WAAW;YAClC,IAAI,EAAE,4CAA4C;YAClD,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,sEAAsE;SACjF;QACD;YACE,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;YACzC,IAAI,EAAE,wEAAwE;YAC9E,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,yEAAyE;SACpF;KACF;IAED,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,KAAK,CAAC,2BAA2B,CAAC;aAClC,QAAQ,CACP,yFAAyF,CAC1F;KACJ,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACjF,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,uEAAuE,CAAC;QACpF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACtF,OAAO,EAAE,CAAC;aACP,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YACtF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SACjF,CAAC;aACD,QAAQ,CAAC,wCAAwC,CAAC,CACtD;aACA,QAAQ,CAAC,8CAA8C,CAAC;KAC5D,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAExE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;YACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1F,KAAK,CAAC,IAAI,CACR,aAAa,IAAI,mBAAmB,MAAM,CAAC,SAAS,IAAI,GAAG,EAAE,EAC7D,EAAE,EACF,iCAAiC,EACjC,iCAAiC,CAClC,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,WAAW,IAAI,GAAG,IAAI,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * @module mcp-server/tools/definitions/query-dataset
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
6
7
  export declare const queryDataset: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
7
8
  datasetId: z.ZodString;
8
9
  search: z.ZodOptional<z.ZodString>;
@@ -17,5 +18,37 @@ export declare const queryDataset: import("@cyanheads/mcp-ts-core").ToolDefiniti
17
18
  rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
18
19
  rowCount: z.ZodNumber;
19
20
  query: z.ZodString;
20
- }, z.core.$strip>>;
21
+ }, z.core.$strip>, readonly [{
22
+ readonly reason: "dataset_not_found";
23
+ readonly code: JsonRpcErrorCode.NotFound;
24
+ readonly when: "Dataset ID does not exist or has been retired.";
25
+ readonly recovery: "Search again with cdc_discover_datasets to find a current ID for the topic of interest.";
26
+ }, {
27
+ readonly reason: "no_such_column";
28
+ readonly code: JsonRpcErrorCode.ValidationError;
29
+ readonly when: "WHERE/SELECT/GROUP/ORDER references a column that does not exist on this dataset.";
30
+ readonly recovery: "Call cdc_get_dataset_schema for this dataset and rewrite the query using actual column names.";
31
+ }, {
32
+ readonly reason: "type_mismatch";
33
+ readonly code: JsonRpcErrorCode.ValidationError;
34
+ readonly when: "Filter value type does not match the column data type (e.g., quoting a number).";
35
+ readonly recovery: "Inspect column types via cdc_get_dataset_schema and adjust filter literals to match (numbers unquoted, strings single-quoted).";
36
+ }, {
37
+ readonly reason: "invalid_query";
38
+ readonly code: JsonRpcErrorCode.ValidationError;
39
+ readonly when: "Socrata rejected the SoQL query for other syntax or semantic reasons.";
40
+ readonly recovery: "Read the error message for the specific clause and consult the dataset schema before retrying.";
41
+ }, {
42
+ readonly reason: "rate_limited";
43
+ readonly code: JsonRpcErrorCode.RateLimited;
44
+ readonly when: "Socrata API returns 429 Too Many Requests.";
45
+ readonly retryable: true;
46
+ readonly recovery: "Wait briefly and retry, or set CDC_APP_TOKEN for higher rate limits.";
47
+ }, {
48
+ readonly reason: "upstream_error";
49
+ readonly code: JsonRpcErrorCode.ServiceUnavailable;
50
+ readonly when: "Socrata data API returned a non-success status outside of the modeled cases.";
51
+ readonly retryable: true;
52
+ readonly recovery: "Retry after a brief delay; data.cdc.gov may be temporarily unavailable.";
53
+ }]>;
21
54
  //# sourceMappingURL=query-dataset.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-dataset.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/query-dataset.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAKjD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;kBAkHvB,CAAC"}
1
+ {"version":3,"file":"query-dataset.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/query-dataset.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAKjE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+JvB,CAAC"}
@@ -3,11 +3,52 @@
3
3
  * @module mcp-server/tools/definitions/query-dataset
4
4
  */
5
5
  import { tool, z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
6
7
  import { getSocrataService } from '../../../services/socrata/socrata-service.js';
7
8
  const MAX_LIMIT = 5000;
8
9
  export const queryDataset = tool('cdc_query_dataset', {
9
10
  description: 'Execute a SoQL query against any CDC dataset. Supports filtering, aggregation, sorting, full-text search, and field selection. Use cdc_discover_datasets to find dataset IDs and cdc_get_dataset_schema to inspect columns before querying.',
10
11
  annotations: { readOnlyHint: true },
12
+ errors: [
13
+ {
14
+ reason: 'dataset_not_found',
15
+ code: JsonRpcErrorCode.NotFound,
16
+ when: 'Dataset ID does not exist or has been retired.',
17
+ recovery: 'Search again with cdc_discover_datasets to find a current ID for the topic of interest.',
18
+ },
19
+ {
20
+ reason: 'no_such_column',
21
+ code: JsonRpcErrorCode.ValidationError,
22
+ when: 'WHERE/SELECT/GROUP/ORDER references a column that does not exist on this dataset.',
23
+ recovery: 'Call cdc_get_dataset_schema for this dataset and rewrite the query using actual column names.',
24
+ },
25
+ {
26
+ reason: 'type_mismatch',
27
+ code: JsonRpcErrorCode.ValidationError,
28
+ when: 'Filter value type does not match the column data type (e.g., quoting a number).',
29
+ recovery: 'Inspect column types via cdc_get_dataset_schema and adjust filter literals to match (numbers unquoted, strings single-quoted).',
30
+ },
31
+ {
32
+ reason: 'invalid_query',
33
+ code: JsonRpcErrorCode.ValidationError,
34
+ when: 'Socrata rejected the SoQL query for other syntax or semantic reasons.',
35
+ recovery: 'Read the error message for the specific clause and consult the dataset schema before retrying.',
36
+ },
37
+ {
38
+ reason: 'rate_limited',
39
+ code: JsonRpcErrorCode.RateLimited,
40
+ when: 'Socrata API returns 429 Too Many Requests.',
41
+ retryable: true,
42
+ recovery: 'Wait briefly and retry, or set CDC_APP_TOKEN for higher rate limits.',
43
+ },
44
+ {
45
+ reason: 'upstream_error',
46
+ code: JsonRpcErrorCode.ServiceUnavailable,
47
+ when: 'Socrata data API returned a non-success status outside of the modeled cases.',
48
+ retryable: true,
49
+ recovery: 'Retry after a brief delay; data.cdc.gov may be temporarily unavailable.',
50
+ },
51
+ ],
11
52
  input: z.object({
12
53
  datasetId: z
13
54
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"query-dataset.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/query-dataset.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-dataset.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/query-dataset.tool.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@ export declare class SocrataService {
38
38
  * Execute a SoQL query against a CDC dataset.
39
39
  */
40
40
  query(options: QueryOptions, signal?: AbortSignal): Promise<QueryResult>;
41
- private formatBadRequestError;
41
+ private throwBadRequest;
42
42
  private validateDatasetId;
43
43
  private fetchJson;
44
44
  private throttle;
@@ -1 +1 @@
1
- {"version":3,"file":"socrata-service.d.ts","sourceRoot":"","sources":["../../../src/services/socrata/socrata-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAGV,eAAe,EACf,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AAKpB,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7B;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,eAAe,CAAK;IAE5B;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IA8CvF;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAkCpF;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAyB9E,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,iBAAiB;YAQX,SAAS;YAoCT,QAAQ;CAQvB;AAID,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAIlD"}
1
+ {"version":3,"file":"socrata-service.d.ts","sourceRoot":"","sources":["../../../src/services/socrata/socrata-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAGV,eAAe,EACf,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AAKpB,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7B;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,eAAe,CAAK;IAE5B;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IA8CvF;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAiCpF;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAyB9E,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,iBAAiB;YASX,SAAS;YA0CT,QAAQ;CAQvB;AAID,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAMlD"}
@@ -3,6 +3,7 @@
3
3
  * Handles discovery, metadata, and SoQL queries with rate-limit-aware request spacing.
4
4
  * @module services/socrata/socrata-service
5
5
  */
6
+ import { notFound, rateLimited, serviceUnavailable, validationError, } from '@cyanheads/mcp-ts-core/errors';
6
7
  import { getServerConfig } from '../../config/server-config.js';
7
8
  const DATASET_ID_PATTERN = /^[a-z0-9]{4}-[a-z0-9]{4}$/;
8
9
  const MIN_REQUEST_INTERVAL_MS = 250;
@@ -74,8 +75,7 @@ export class SocrataService {
74
75
  });
75
76
  const firstColCache = rawColumns[0]?.cachedContents;
76
77
  const rawCount = firstColCache?.count;
77
- const parsedCount = rawCount != null ? Number(rawCount) : Number.NaN;
78
- const rowCount = Number.isFinite(parsedCount) ? parsedCount : undefined;
78
+ const rowCount = rawCount != null ? Number(rawCount) : Number.NaN;
79
79
  const rowsUpdatedAt = data.rowsUpdatedAt;
80
80
  const updatedAt = typeof rowsUpdatedAt === 'number' ? new Date(rowsUpdatedAt * 1000).toISOString() : undefined;
81
81
  const description = data.description;
@@ -83,7 +83,7 @@ export class SocrataService {
83
83
  name: data.name ?? '',
84
84
  columns,
85
85
  ...(description ? { description } : {}),
86
- ...(typeof rowCount === 'number' ? { rowCount } : {}),
86
+ ...(Number.isFinite(rowCount) ? { rowCount } : {}),
87
87
  ...(updatedAt ? { updatedAt } : {}),
88
88
  };
89
89
  }
@@ -117,30 +117,39 @@ export class SocrataService {
117
117
  query: decodeURIComponent(queryString),
118
118
  };
119
119
  }
120
- formatBadRequestError(body) {
120
+ throwBadRequest(body, url) {
121
+ let parsed;
121
122
  try {
122
- const parsed = JSON.parse(body);
123
- const code = parsed.errorCode;
124
- const data = parsed.data;
125
- if (code === 'query.soql.no-such-column') {
126
- const col = data?.column ?? 'unknown';
127
- return `No such column "${col}". Use cdc_get_dataset_schema to see available columns for this dataset.`;
128
- }
129
- if (code === 'query.soql.type-mismatch') {
130
- return `SoQL type mismatch: ${parsed.message?.split(';')[1]?.trim() ?? 'check column types'}. Use cdc_get_dataset_schema to verify column data types.`;
131
- }
132
- const msg = parsed.message ?? parsed.error;
133
- if (typeof msg === 'string')
134
- return `Socrata query error: ${msg.slice(0, 300)}`;
123
+ parsed = JSON.parse(body);
135
124
  }
136
125
  catch {
137
- // Body wasn't JSON — fall through
126
+ // Body wasn't JSON — fall through to generic.
127
+ }
128
+ const code = parsed?.errorCode;
129
+ const data = parsed?.data;
130
+ if (code === 'query.soql.no-such-column') {
131
+ const col = data?.column ?? 'unknown';
132
+ throw validationError(`No such column "${col}". Use cdc_get_dataset_schema to see available columns for this dataset.`, { reason: 'no_such_column', column: col, url });
138
133
  }
139
- return `Socrata API error 400: ${body.slice(0, 300)}`;
134
+ if (code === 'query.soql.type-mismatch') {
135
+ const detail = parsed?.message?.split(';')[1]?.trim() ?? 'check column types';
136
+ throw validationError(`SoQL type mismatch: ${detail}. Use cdc_get_dataset_schema to verify column data types.`, { reason: 'type_mismatch', url });
137
+ }
138
+ const msg = parsed && (parsed.message ?? parsed.error);
139
+ if (typeof msg === 'string') {
140
+ throw validationError(`Socrata query error: ${msg.slice(0, 300)}`, {
141
+ reason: 'invalid_query',
142
+ url,
143
+ });
144
+ }
145
+ throw validationError(`Socrata API error 400: ${body.slice(0, 300)}`, {
146
+ reason: 'invalid_query',
147
+ url,
148
+ });
140
149
  }
141
150
  validateDatasetId(datasetId) {
142
151
  if (!DATASET_ID_PATTERN.test(datasetId)) {
143
- throw new Error(`Invalid dataset ID "${datasetId}" — must match format [a-z0-9]{4}-[a-z0-9]{4} (e.g., "bi63-dtpu"). Get valid IDs from cdc_discover_datasets.`);
152
+ throw validationError(`Invalid dataset ID "${datasetId}" — must match format [a-z0-9]{4}-[a-z0-9]{4} (e.g., "bi63-dtpu"). Get valid IDs from cdc_discover_datasets.`, { reason: 'invalid_dataset_id', datasetId });
144
153
  }
145
154
  }
146
155
  async fetchJson(url, signal) {
@@ -156,15 +165,19 @@ export class SocrataService {
156
165
  if (!response.ok) {
157
166
  const body = await response.text().catch(() => '');
158
167
  if (response.status === 404) {
159
- throw new Error('Dataset not found (404). Verify the dataset ID exists — it may have been retired or replaced. Search again with cdc_discover_datasets.');
168
+ throw notFound('Dataset not found (404). Verify the dataset ID exists — it may have been retired or replaced. Search again with cdc_discover_datasets.', { reason: 'dataset_not_found', url });
160
169
  }
161
170
  if (response.status === 429) {
162
- throw new Error('Rate limited by Socrata API (429). Retry after a brief delay. Consider setting CDC_APP_TOKEN for higher limits.');
171
+ throw rateLimited('Rate limited by Socrata API (429). Retry after a brief delay. Consider setting CDC_APP_TOKEN for higher limits.', { reason: 'rate_limited', url });
163
172
  }
164
173
  if (response.status === 400) {
165
- throw new Error(this.formatBadRequestError(body));
174
+ this.throwBadRequest(body, url);
166
175
  }
167
- throw new Error(`Socrata API error ${response.status}: ${body.slice(0, 500)}`);
176
+ throw serviceUnavailable(`Socrata API error ${response.status}: ${body.slice(0, 500)}`, {
177
+ reason: 'upstream_error',
178
+ status: response.status,
179
+ url,
180
+ });
168
181
  }
169
182
  return (await response.json());
170
183
  }
@@ -183,7 +196,7 @@ export function initSocrataService() {
183
196
  }
184
197
  export function getSocrataService() {
185
198
  if (!_service)
186
- throw new Error('SocrataService not initialized — call initSocrataService() in setup()');
199
+ throw serviceUnavailable('SocrataService not initialized — call initSocrataService() in setup()');
187
200
  return _service;
188
201
  }
189
202
  //# sourceMappingURL=socrata-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"socrata-service.js","sourceRoot":"","sources":["../../../src/services/socrata/socrata-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socrata-service.js","sourceRoot":"","sources":["../../../src/services/socrata/socrata-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/cdc-health-mcp-server",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "description": "MCP server for discovering and querying CDC public health datasets via the Socrata SODA API.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,8 +18,6 @@
18
18
  "format": "biome check --write --unsafe .",
19
19
  "lint:mcp": "bun scripts/lint-mcp.ts",
20
20
  "test": "vitest run",
21
- "dev:stdio": "MCP_TRANSPORT_TYPE=stdio bun --watch src/index.ts",
22
- "dev:http": "MCP_TRANSPORT_TYPE=http bun --watch src/index.ts",
23
21
  "start:stdio": "MCP_TRANSPORT_TYPE=stdio node dist/index.js",
24
22
  "start:http": "MCP_TRANSPORT_TYPE=http node dist/index.js"
25
23
  },
@@ -56,24 +54,24 @@
56
54
  "license": "Apache-2.0",
57
55
  "engines": {
58
56
  "bun": ">=1.3.2",
59
- "node": ">=22.0.0"
57
+ "node": ">=24.0.0"
60
58
  },
61
59
  "packageManager": "bun@1.3.11",
62
60
  "publishConfig": {
63
61
  "access": "public"
64
62
  },
65
63
  "dependencies": {
66
- "@cyanheads/mcp-ts-core": "^0.7.0",
64
+ "@cyanheads/mcp-ts-core": "^0.8.19",
67
65
  "pino-pretty": "^13.1.3"
68
66
  },
69
67
  "devDependencies": {
70
- "@biomejs/biome": "^2.4.13",
68
+ "@biomejs/biome": "^2.4.14",
71
69
  "@opentelemetry/api": "^1.9.1",
72
- "@types/node": "^25.6.0",
70
+ "@types/node": "^25.6.2",
73
71
  "@vitest/coverage-istanbul": "^4.1.5",
74
72
  "depcheck": "^1.4.7",
75
73
  "ignore": "^7.0.5",
76
- "tsc-alias": "^1.8.16",
74
+ "tsc-alias": "^1.8.17",
77
75
  "typescript": "^6.0.3",
78
76
  "vitest": "^4.1.5"
79
77
  }
package/server.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/cyanheads/cdc-health-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.6.0",
9
+ "version": "0.6.2",
10
10
  "remotes": [
11
11
  {
12
12
  "type": "streamable-http",
@@ -19,7 +19,7 @@
19
19
  "registryBaseUrl": "https://registry.npmjs.org",
20
20
  "identifier": "@cyanheads/cdc-health-mcp-server",
21
21
  "runtimeHint": "node",
22
- "version": "0.6.0",
22
+ "version": "0.6.2",
23
23
  "packageArguments": [
24
24
  {
25
25
  "type": "positional",
@@ -54,7 +54,7 @@
54
54
  "registryBaseUrl": "https://registry.npmjs.org",
55
55
  "identifier": "@cyanheads/cdc-health-mcp-server",
56
56
  "runtimeHint": "node",
57
- "version": "0.6.0",
57
+ "version": "0.6.2",
58
58
  "packageArguments": [
59
59
  {
60
60
  "type": "positional",