@cyanheads/eia-energy-mcp-server 0.2.5 → 0.2.7
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 +5 -6
- package/README.md +1 -1
- package/changelog/0.2.x/0.2.6.md +35 -0
- package/changelog/0.2.x/0.2.7.md +17 -0
- package/dist/config/server-config.d.ts +1 -1
- package/dist/config/server-config.js +1 -1
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.d.ts +9 -3
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.js +18 -5
- package/dist/mcp-server/tools/definitions/dataframe-query.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/query-route.tool.d.ts +5 -1
- package/dist/mcp-server/tools/definitions/query-route.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/query-route.tool.js +27 -1
- package/dist/mcp-server/tools/definitions/query-route.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-routes.tool.d.ts +3 -0
- package/dist/mcp-server/tools/definitions/search-routes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-routes.tool.js +11 -1
- package/dist/mcp-server/tools/definitions/search-routes.tool.js.map +1 -1
- package/dist/services/canvas-bridge/canvas-bridge.d.ts +23 -3
- package/dist/services/canvas-bridge/canvas-bridge.d.ts.map +1 -1
- package/dist/services/canvas-bridge/canvas-bridge.js +59 -7
- package/dist/services/canvas-bridge/canvas-bridge.js.map +1 -1
- package/package.json +6 -6
- package/server.json +3 -3
- package/dist/services/canvas-bridge/sql-gate-extras.d.ts +0 -13
- package/dist/services/canvas-bridge/sql-gate-extras.d.ts.map +0 -1
- package/dist/services/canvas-bridge/sql-gate-extras.js +0 -37
- package/dist/services/canvas-bridge/sql-gate-extras.js.map +0 -1
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Agent Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** @cyanheads/eia-energy-mcp-server
|
|
4
|
-
**Version:** 0.2.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.
|
|
4
|
+
**Version:** 0.2.7
|
|
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
|
|
|
8
8
|
> **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.
|
|
@@ -184,7 +184,6 @@ src/
|
|
|
184
184
|
types.ts # EIA domain types
|
|
185
185
|
canvas-bridge/
|
|
186
186
|
canvas-bridge.ts # DataCanvas bridge (register/describe/query/drop)
|
|
187
|
-
sql-gate-extras.ts # System-catalog deny-list for read-only enforcement
|
|
188
187
|
mcp-server/
|
|
189
188
|
tools/definitions/
|
|
190
189
|
browse-routes.tool.ts # eia_browse_routes
|
|
@@ -223,7 +222,7 @@ src/
|
|
|
223
222
|
|
|
224
223
|
**Retry / rate limits:** Wrap fetch + parse in `withRetry`. DEMO_KEY hits limits quickly; production keys have higher caps. Detect EIA's `OVER_RATE_LIMIT` response and classify as `ServiceUnavailable` (retryable).
|
|
225
224
|
|
|
226
|
-
**DataCanvas:** Opt-in via `CANVAS_PROVIDER_TYPE=duckdb`. Check `ctx.core.canvas?` at runtime; degrade gracefully to preview-only when absent. Large result sets (total > length) spill to canvas and return a `canvas_id` for SQL queries.
|
|
225
|
+
**DataCanvas:** Opt-in via `CANVAS_PROVIDER_TYPE=duckdb`. Check `ctx.core.canvas?` at runtime; degrade gracefully to preview-only when absent. Large result sets (total > length) spill to canvas and return a `canvas_id` for SQL queries. Column names are sanitized to the canvas identifier shape before registration — EIA's hyphenated `{col}-units` companions become `{col}_units` in the staged table (the inline preview keeps the hyphenated names); query the sanitized names, which `eia_dataframe_describe` reports.
|
|
227
226
|
|
|
228
227
|
---
|
|
229
228
|
|
|
@@ -290,7 +289,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
290
289
|
| `bun run test` | Run tests |
|
|
291
290
|
| `bun run lint:mcp` | Validate MCP definitions against spec |
|
|
292
291
|
| `bun run lint:packaging` | Validate env var alignment between `manifest.json` and `server.json` |
|
|
293
|
-
| `bun run bundle` | Build and
|
|
292
|
+
| `bun run bundle` | Build, pack, and clean a `.mcpb` for one-click Claude Desktop install |
|
|
294
293
|
| `bun run start:stdio` | Production mode (stdio) |
|
|
295
294
|
| `bun run start:http` | Production mode (HTTP) |
|
|
296
295
|
| `bun run changelog:build` | Regenerate `CHANGELOG.md` from per-version files |
|
|
@@ -302,7 +301,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
302
301
|
|
|
303
302
|
## Bundling
|
|
304
303
|
|
|
305
|
-
`bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. MCPB is stdio-only — HTTP deployments are unaffected. Delete `manifest.json` and `.mcpbignore` if not needed; `lint:packaging` skips cleanly.
|
|
304
|
+
`bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. The pack step is followed by `scripts/clean-mcpb.ts`, which prunes dev dependencies (`mcpb clean`) and strips dependency-shipped agent docs (`node_modules/**` `skills/`, `.claude/`, `.agents/`, `SKILL.md`) that root-anchored `.mcpbignore` patterns cannot reach. MCPB is stdio-only — HTTP deployments are unaffected. Delete `manifest.json` and `.mcpbignore` if not needed; `lint:packaging` skips cleanly.
|
|
306
305
|
|
|
307
306
|
**Adding an env var requires both files:** `server.json` (`environmentVariables[]`) and `manifest.json` (`mcp_config.env`). `lint:packaging` (run by `devcheck`) verifies the names match.
|
|
308
307
|
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/eia-energy-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/eia-energy-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
[](https://github.com/cyanheads/eia-energy-mcp-server/releases/latest/download/eia-energy-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=eia-energy-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvZWlhLWVuZXJneS1tY3Atc2VydmVyIl0sImVudiI6eyJFSUFfQVBJX0tFWSI6InlvdXItYXBpLWtleSJ9fQ==) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22eia-energy-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads/eia-energy-mcp-server%22%5D%2C%22env%22%3A%7B%22EIA_API_KEY%22%3A%22your-api-key%22%7D%7D)
|
|
13
13
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Adopt @cyanheads/mcp-ts-core ^0.10.6; server-level instructions; eia_search_routes truncation fields; canvas-bridge uses the framework system-catalog gate"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.2.6 — 2026-06-12
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **Server-level `instructions`**: `createApp()` now ships an `instructions` string describing the `eia_*` tool surface, the search → describe → query workflow, and the string-valued/DataCanvas data shape — surfaced to clients on initialize.
|
|
12
|
+
- **In-code identity**: explicit `name` and `title` (both `eia-energy-mcp-server`) on `createApp()`, keeping the served `server_name` and display title off the npm scope prefix.
|
|
13
|
+
- **`eia_search_routes` truncation signal**: `truncated`, `shown`, and `cap` are now required output fields. `truncated` is `true` when matches reach the requested `limit` (more may exist), with a notice to narrow the query or raise `limit` (max 30).
|
|
14
|
+
|
|
15
|
+
## Changed
|
|
16
|
+
|
|
17
|
+
- **Canvas SQL gate**: `eia_dataframe_query`'s system-catalog denial (`information_schema`, `pg_catalog`, `sqlite_master`, `duckdb_*`) now runs through the framework gate via `denySystemCatalogs: true` instead of a bridge-layer pre-check. Behavior is unchanged — references to those catalogs still reject with a `ValidationError`.
|
|
18
|
+
- **`EIA_DATAFRAME_DROP_ENABLED` parsing**: the `dataframeDropEnabled` config now uses `z.stringbool()` so `"false"`/`"0"`/`"no"` disable the flag, instead of the prior `z.preprocess` boolean where only omitting the variable was falsy.
|
|
19
|
+
- **Packaging linters** (synced from the framework): `lint:packaging` adds bundle-content guards (anchored `.mcpbignore` patterns, no stripping of runtime `node_modules` paths), a post-bundle agent-doc check, and an identity check that `name`/`title`/`display_name` equal the unscoped package name. `check-framework-antipatterns` adds a `z.coerce.boolean()` env-flag rule and skips comment-line matches. `.mcpbignore` patterns are anchored with a leading `/`.
|
|
20
|
+
- **`bundle` script** now runs `scripts/clean-mcpb.ts` after `mcpb pack` — prunes dev dependencies and strips dependency-shipped agent docs (`node_modules/**` `skills/`, `.claude/`, `.agents/`, `SKILL.md`) that root-anchored `.mcpbignore` patterns cannot reach.
|
|
21
|
+
|
|
22
|
+
## Removed
|
|
23
|
+
|
|
24
|
+
- **`sql-gate-extras.ts`** and its test: the bridge-layer `assertNoSystemCatalogAccess` helper is superseded by the framework's `denySystemCatalogs` gate.
|
|
25
|
+
|
|
26
|
+
## Fixed
|
|
27
|
+
|
|
28
|
+
- **`eia_query_route` inverted date range** now classifies as `ValidationError` (was `NotFound`): an inverted range (start after end) is invalid input, not a missing resource, so agents routing on the error code self-correct instead of treating it as a transport-level not-found.
|
|
29
|
+
|
|
30
|
+
## Dependencies
|
|
31
|
+
|
|
32
|
+
- `@cyanheads/mcp-ts-core` ^0.9.21 → ^0.10.6
|
|
33
|
+
- `fuse.js` ^7.4.1 → ^7.4.2
|
|
34
|
+
- `@biomejs/biome` ^2.4.16 → ^2.5.0 (dev)
|
|
35
|
+
- `@types/node` ^25.9.1 → ^25.9.3 (dev)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Fix DataCanvas spillover for EIA's {col}-units columns; echo applied query inputs in eia_query_route and the executed SQL in eia_dataframe_query; declare system_catalog_access in the error contract"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.2.7 — 2026-06-13
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`eia_dataframe_query` `system_catalog_access` error contract** ([#21](https://github.com/cyanheads/eia-energy-mcp-server/issues/21)): the framework's `denySystemCatalogs` gate already rejects references to `information_schema`, `pg_catalog`, `sqlite_master`, and `duckdb_*` with `data.reason: 'system_catalog_access'`, but the rejection was undeclared and fell through as a generic error. Now a typed `errors[]` entry (`ValidationError`) carries the recovery hint to query only `df_<id>` tables — so agents routing on `data.reason` can self-correct.
|
|
12
|
+
- **`eia_dataframe_query` `executedSql` echo** ([#23](https://github.com/cyanheads/eia-energy-mcp-server/issues/23)): the executed SQL statement is echoed back as a required output field and via enrichment, so agents can verify the query that ran matches the query they intended (CTEs and window functions otherwise produce unexpected column names with no confirmation).
|
|
13
|
+
- **`eia_query_route` applied-input echoes** ([#23](https://github.com/cyanheads/eia-energy-mcp-server/issues/23)): `appliedStart`, `appliedEnd`, `appliedFrequency`, and `appliedColumns` join the existing `appliedFilters`/`effectiveRoute` enrichment, each populated only when the caller provided the value. `appliedColumns` also renders in the `content[]` trailer.
|
|
14
|
+
|
|
15
|
+
## Fixed
|
|
16
|
+
|
|
17
|
+
- **DataCanvas spillover for `{col}-units` columns** ([#25](https://github.com/cyanheads/eia-energy-mcp-server/issues/25)): EIA returns paired `{col}` / `{col}-units` companion columns, and the hyphen failed the canvas identifier gate (`CANVAS_IDENTIFIER_REGEX`), so `registerDataframe` threw and returned `canvas_id: null` for nearly every data query — silently degrading to the inline preview instead of staging the full result. `canvas-bridge.ts` now sanitizes column identifiers before registration (`{col}-units` → `{col}_units`, collisions disambiguated with a numeric suffix); the staged table and `eia_dataframe_describe` report the sanitized names, while the caller's inline rows keep the hyphenated `{col}-units` keys for display.
|
|
@@ -8,7 +8,7 @@ declare const ServerConfigSchema: z.ZodObject<{
|
|
|
8
8
|
apiKey: z.ZodString;
|
|
9
9
|
baseUrl: z.ZodDefault<z.ZodString>;
|
|
10
10
|
datasetTtlSeconds: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
11
|
-
dataframeDropEnabled: z.ZodDefault<z.
|
|
11
|
+
dataframeDropEnabled: z.ZodDefault<z.ZodCodec<z.ZodString, z.ZodBoolean>>;
|
|
12
12
|
}, z.core.$strip>;
|
|
13
13
|
export type ServerConfig = z.infer<typeof ServerConfigSchema>;
|
|
14
14
|
export declare function getServerConfig(): ServerConfig;
|
|
@@ -15,7 +15,7 @@ const ServerConfigSchema = z.object({
|
|
|
15
15
|
.default(86400)
|
|
16
16
|
.describe('Per-table TTL for canvas dataframes in seconds (default 24 h)'),
|
|
17
17
|
dataframeDropEnabled: z
|
|
18
|
-
.
|
|
18
|
+
.stringbool()
|
|
19
19
|
.default(false)
|
|
20
20
|
.describe('Expose eia_dataframe_drop when true'),
|
|
21
21
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACxF,iBAAiB,EAAE,CAAC,CAAC,MAAM;SACxB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,oBAAoB,EAAE,CAAC;SACpB,UAAU,
|
|
1
|
+
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IACxF,iBAAiB,EAAE,CAAC,CAAC,MAAM;SACxB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,oBAAoB,EAAE,CAAC;SACpB,UAAU,EAAE;SACZ,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,qCAAqC,CAAC;CACnD,CAAC,CAAC;AAIH,IAAI,OAAiC,CAAC;AAEtC,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,cAAc,CAAC,kBAAkB,EAAE;QAC7C,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,cAAc;QACvB,iBAAiB,EAAE,yBAAyB;QAC5C,oBAAoB,EAAE,4BAA4B;KACnD,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,kBAAkB;IAChC,OAAO,GAAG,SAAS,CAAC;AACtB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,9 @@ const dropTool = serverConfig.dataframeDropEnabled
|
|
|
22
22
|
hint: 'EIA_DATAFRAME_DROP_ENABLED=true',
|
|
23
23
|
});
|
|
24
24
|
await createApp({
|
|
25
|
+
name: 'eia-energy-mcp-server',
|
|
26
|
+
title: 'eia-energy-mcp-server',
|
|
27
|
+
instructions: 'Use the `eia_*` tools for U.S. Energy Information Administration (EIA) API v2 energy data. Requires an `EIA_API_KEY`. Routes use path identifiers (e.g. `electricity`, `petroleum/pri`). Workflow: `eia_search_routes` or `eia_browse_routes` to find a leaf route → `eia_describe_route` for its facets and columns → `eia_query_route` with facet-ID filters. Facet values come only from describe, not route metadata, so describe before querying. Values arrive as strings; large results spill to a DataCanvas table queried via SQL with `eia_dataframe_query`.',
|
|
25
28
|
tools: [
|
|
26
29
|
browseRoutesTool,
|
|
27
30
|
describeRouteTool,
|
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,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AAEvC,MAAM,QAAQ,GAAG,YAAY,CAAC,oBAAoB;IAChD,CAAC,CAAC,iBAAiB;IACnB,CAAC,CAAC,YAAY,CAAC,iBAAiB,EAAE;QAC9B,MAAM,EAAE,gDAAgD;QACxD,IAAI,EAAE,iCAAiC;KACxC,CAAC,CAAC;AAEP,MAAM,SAAS,CAAC;IACd,KAAK,EAAE;QACL,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,cAAc;QACd,qBAAqB;QACrB,kBAAkB;QAClB,QAAQ;KACT;IACD,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;IAC/B,KAAK,CAAC,IAAI;QACR,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AAEvC,MAAM,QAAQ,GAAG,YAAY,CAAC,oBAAoB;IAChD,CAAC,CAAC,iBAAiB;IACnB,CAAC,CAAC,YAAY,CAAC,iBAAiB,EAAE;QAC9B,MAAM,EAAE,gDAAgD;QACxD,IAAI,EAAE,iCAAiC;KACxC,CAAC,CAAC;AAEP,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,uBAAuB;IAC9B,YAAY,EACV,wiBAAwiB;IAC1iB,KAAK,EAAE;QACL,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,cAAc;QACd,qBAAqB;QACrB,kBAAkB;QAClB,QAAQ;KACT;IACD,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;IAC/B,KAAK,CAAC,IAAI;QACR,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Tool definition for eia_dataframe_query. Runs a single-statement
|
|
3
|
-
* SELECT against canvas dataframes registered by eia_query_route.
|
|
4
|
-
*
|
|
5
|
-
* EXPLAIN-plan walk
|
|
3
|
+
* SELECT against canvas dataframes registered by eia_query_route. Read-only
|
|
4
|
+
* enforcement in the framework SQL gate: text deny-list, statement count,
|
|
5
|
+
* statement type, EXPLAIN-plan walk, and system-catalog deny (denySystemCatalogs).
|
|
6
6
|
* EIA data values are VARCHAR — cast to DOUBLE for arithmetic.
|
|
7
7
|
* @module mcp-server/tools/definitions/dataframe-query.tool
|
|
8
8
|
*/
|
|
@@ -23,9 +23,15 @@ export declare const dataframeQueryTool: import("@cyanheads/mcp-ts-core").ToolDe
|
|
|
23
23
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
24
24
|
readonly when: "DataCanvas service is not configured for this deployment.";
|
|
25
25
|
readonly recovery: "Set CANVAS_PROVIDER_TYPE=duckdb in the server environment to enable dataframes.";
|
|
26
|
+
}, {
|
|
27
|
+
readonly reason: "system_catalog_access";
|
|
28
|
+
readonly code: JsonRpcErrorCode.ValidationError;
|
|
29
|
+
readonly when: "SQL references a denied system catalog (information_schema, pg_catalog, sqlite_master, duckdb_*).";
|
|
30
|
+
readonly recovery: "Query only df_<id> tables — list them with eia_dataframe_describe.";
|
|
26
31
|
}], {
|
|
27
32
|
readonly totalRows: z.ZodNumber;
|
|
28
33
|
readonly returnedRows: z.ZodNumber;
|
|
34
|
+
readonly executedSql: z.ZodString;
|
|
29
35
|
readonly notice: z.ZodOptional<z.ZodString>;
|
|
30
36
|
}>;
|
|
31
37
|
//# sourceMappingURL=dataframe-query.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataframe-query.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/dataframe-query.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"dataframe-query.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/dataframe-query.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;EA8J7B,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Tool definition for eia_dataframe_query. Runs a single-statement
|
|
3
|
-
* SELECT against canvas dataframes registered by eia_query_route.
|
|
4
|
-
*
|
|
5
|
-
* EXPLAIN-plan walk
|
|
3
|
+
* SELECT against canvas dataframes registered by eia_query_route. Read-only
|
|
4
|
+
* enforcement in the framework SQL gate: text deny-list, statement count,
|
|
5
|
+
* statement type, EXPLAIN-plan walk, and system-catalog deny (denySystemCatalogs).
|
|
6
6
|
* EIA data values are VARCHAR — cast to DOUBLE for arithmetic.
|
|
7
7
|
* @module mcp-server/tools/definitions/dataframe-query.tool
|
|
8
8
|
*/
|
|
@@ -11,7 +11,7 @@ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
|
11
11
|
import { getCanvasBridge } from '../../../services/canvas-bridge/canvas-bridge.js';
|
|
12
12
|
export const dataframeQueryTool = tool('eia_dataframe_query', {
|
|
13
13
|
title: 'Query EIA Dataframes',
|
|
14
|
-
description: 'Run a single-statement SELECT against canvas dataframes registered by eia_query_route. Standard DuckDB SQL — joins, aggregates, window functions, CTEs all supported. Reference dataframes by the df_<id> handles returned by eia_query_route or listed by eia_dataframe_describe. Read-only: writes, DDL, DROP, COPY, PRAGMA, ATTACH, and external-file table functions are rejected. System catalogs (information_schema, pg_catalog, sqlite_master, duckdb_*) are denied
|
|
14
|
+
description: 'Run a single-statement SELECT against canvas dataframes registered by eia_query_route. Standard DuckDB SQL — joins, aggregates, window functions, CTEs all supported. Reference dataframes by the df_<id> handles returned by eia_query_route or listed by eia_dataframe_describe. Read-only: writes, DDL, DROP, COPY, PRAGMA, ATTACH, and external-file table functions are rejected. System catalogs (information_schema, pg_catalog, sqlite_master, duckdb_*) are denied. EIA data values are VARCHAR — use CAST(col AS DOUBLE) for arithmetic and aggregation. Optional register_as chains results as a new dataframe with a fresh TTL.',
|
|
15
15
|
annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: false },
|
|
16
16
|
errors: [
|
|
17
17
|
{
|
|
@@ -20,6 +20,12 @@ export const dataframeQueryTool = tool('eia_dataframe_query', {
|
|
|
20
20
|
when: 'DataCanvas service is not configured for this deployment.',
|
|
21
21
|
recovery: 'Set CANVAS_PROVIDER_TYPE=duckdb in the server environment to enable dataframes.',
|
|
22
22
|
},
|
|
23
|
+
{
|
|
24
|
+
reason: 'system_catalog_access',
|
|
25
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
26
|
+
when: 'SQL references a denied system catalog (information_schema, pg_catalog, sqlite_master, duckdb_*).',
|
|
27
|
+
recovery: 'Query only df_<id> tables — list them with eia_dataframe_describe.',
|
|
28
|
+
},
|
|
23
29
|
],
|
|
24
30
|
input: z.object({
|
|
25
31
|
sql: z
|
|
@@ -67,6 +73,9 @@ export const dataframeQueryTool = tool('eia_dataframe_query', {
|
|
|
67
73
|
.number()
|
|
68
74
|
.describe('Total rows the query produced (may exceed rows.length when capped by row_limit).'),
|
|
69
75
|
returnedRows: z.number().describe('Rows included in this response.'),
|
|
76
|
+
executedSql: z
|
|
77
|
+
.string()
|
|
78
|
+
.describe('Echo of the SQL statement that was executed — confirms the exact query that ran.'),
|
|
70
79
|
notice: z
|
|
71
80
|
.string()
|
|
72
81
|
.optional()
|
|
@@ -91,7 +100,11 @@ export const dataframeQueryTool = tool('eia_dataframe_query', {
|
|
|
91
100
|
returned: result.rows.length,
|
|
92
101
|
registeredAs: meta?.tableName,
|
|
93
102
|
});
|
|
94
|
-
ctx.enrich({
|
|
103
|
+
ctx.enrich({
|
|
104
|
+
totalRows: result.rowCount,
|
|
105
|
+
returnedRows: result.rows.length,
|
|
106
|
+
executedSql: input.sql,
|
|
107
|
+
});
|
|
95
108
|
if (result.rowCount > result.rows.length) {
|
|
96
109
|
ctx.enrich.notice(`Showing ${result.rows.length.toLocaleString()} of ${result.rowCount.toLocaleString()} rows — increase row_limit or use register_as to chain into a new dataframe.`);
|
|
97
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataframe-query.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/dataframe-query.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAE5E,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE;IAC5D,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"dataframe-query.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/dataframe-query.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,7 @@ export declare const queryRouteTool: import("@cyanheads/mcp-ts-core").ToolDefini
|
|
|
49
49
|
readonly recovery: "Call eia_describe_route to see valid facet IDs for this route.";
|
|
50
50
|
}, {
|
|
51
51
|
readonly reason: "no_data";
|
|
52
|
-
readonly code: JsonRpcErrorCode.
|
|
52
|
+
readonly code: JsonRpcErrorCode.ValidationError;
|
|
53
53
|
readonly when: "Date range is inverted (start is after end).";
|
|
54
54
|
readonly recovery: "Swap start and end values — start must be earlier than or equal to end.";
|
|
55
55
|
}, {
|
|
@@ -68,5 +68,9 @@ export declare const queryRouteTool: import("@cyanheads/mcp-ts-core").ToolDefini
|
|
|
68
68
|
readonly totalCount: z.ZodNumber;
|
|
69
69
|
readonly returnedCount: z.ZodNumber;
|
|
70
70
|
readonly appliedFilters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
71
|
+
readonly appliedStart: z.ZodOptional<z.ZodString>;
|
|
72
|
+
readonly appliedEnd: z.ZodOptional<z.ZodString>;
|
|
73
|
+
readonly appliedFrequency: z.ZodOptional<z.ZodString>;
|
|
74
|
+
readonly appliedColumns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
71
75
|
}>;
|
|
72
76
|
//# sourceMappingURL=query-route.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-route.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/query-route.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"query-route.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/query-route.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyYzB,CAAC"}
|
|
@@ -102,6 +102,22 @@ export const queryRouteTool = tool('eia_query_route', {
|
|
|
102
102
|
.record(z.string(), z.union([z.string(), z.array(z.string())]))
|
|
103
103
|
.optional()
|
|
104
104
|
.describe('Facet filters applied to the query, when provided.'),
|
|
105
|
+
appliedStart: z
|
|
106
|
+
.string()
|
|
107
|
+
.optional()
|
|
108
|
+
.describe('Echo of the start period as applied, when a start was provided.'),
|
|
109
|
+
appliedEnd: z
|
|
110
|
+
.string()
|
|
111
|
+
.optional()
|
|
112
|
+
.describe('Echo of the end period as applied, when an end was provided.'),
|
|
113
|
+
appliedFrequency: z
|
|
114
|
+
.string()
|
|
115
|
+
.optional()
|
|
116
|
+
.describe('Echo of the frequency as applied, when a frequency was provided.'),
|
|
117
|
+
appliedColumns: z
|
|
118
|
+
.array(z.string())
|
|
119
|
+
.optional()
|
|
120
|
+
.describe('Echo of the column projection as applied, when columns were provided.'),
|
|
105
121
|
},
|
|
106
122
|
enrichmentTrailer: {
|
|
107
123
|
appliedFilters: {
|
|
@@ -114,6 +130,11 @@ export const queryRouteTool = tool('eia_query_route', {
|
|
|
114
130
|
return `**Applied Filters:**\n${entries}`;
|
|
115
131
|
},
|
|
116
132
|
},
|
|
133
|
+
appliedColumns: {
|
|
134
|
+
render: (columns) => columns && columns.length > 0
|
|
135
|
+
? `**Applied Columns:** ${columns.join(', ')}`
|
|
136
|
+
: null,
|
|
137
|
+
},
|
|
117
138
|
},
|
|
118
139
|
errors: [
|
|
119
140
|
{
|
|
@@ -130,7 +151,7 @@ export const queryRouteTool = tool('eia_query_route', {
|
|
|
130
151
|
},
|
|
131
152
|
{
|
|
132
153
|
reason: 'no_data',
|
|
133
|
-
code: JsonRpcErrorCode.
|
|
154
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
134
155
|
when: 'Date range is inverted (start is after end).',
|
|
135
156
|
recovery: 'Swap start and end values — start must be earlier than or equal to end.',
|
|
136
157
|
},
|
|
@@ -185,6 +206,11 @@ export const queryRouteTool = tool('eia_query_route', {
|
|
|
185
206
|
Object.keys(input.filters).length > 0 && {
|
|
186
207
|
appliedFilters: input.filters,
|
|
187
208
|
}),
|
|
209
|
+
...(input.start !== undefined && { appliedStart: input.start }),
|
|
210
|
+
...(input.end !== undefined && { appliedEnd: input.end }),
|
|
211
|
+
...(input.frequency !== undefined && { appliedFrequency: input.frequency }),
|
|
212
|
+
...(input.columns !== undefined &&
|
|
213
|
+
input.columns.length > 0 && { appliedColumns: input.columns }),
|
|
188
214
|
});
|
|
189
215
|
const result = {
|
|
190
216
|
route: input.route,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-route.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/query-route.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-route.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/query-route.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,9 @@ export declare const searchRoutesTool: import("@cyanheads/mcp-ts-core").ToolDefi
|
|
|
21
21
|
}, z.core.$strip>, undefined, {
|
|
22
22
|
readonly effectiveQuery: z.ZodString;
|
|
23
23
|
readonly totalIndexed: z.ZodNumber;
|
|
24
|
+
readonly truncated: z.ZodBoolean;
|
|
25
|
+
readonly shown: z.ZodNumber;
|
|
26
|
+
readonly cap: z.ZodNumber;
|
|
24
27
|
readonly notice: z.ZodOptional<z.ZodString>;
|
|
25
28
|
}>;
|
|
26
29
|
//# sourceMappingURL=search-routes.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-routes.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-routes.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGjD,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"search-routes.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-routes.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGjD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;EA4H3B,CAAC"}
|
|
@@ -52,6 +52,9 @@ export const searchRoutesTool = tool('eia_search_routes', {
|
|
|
52
52
|
totalIndexed: z
|
|
53
53
|
.number()
|
|
54
54
|
.describe('Total entries in the search index (routes + STEO series names).'),
|
|
55
|
+
truncated: z.boolean().describe('True when matches were capped at limit; more may exist.'),
|
|
56
|
+
shown: z.number().describe('Number of results returned.'),
|
|
57
|
+
cap: z.number().describe('The limit that was applied.'),
|
|
55
58
|
notice: z
|
|
56
59
|
.string()
|
|
57
60
|
.optional()
|
|
@@ -62,10 +65,17 @@ export const searchRoutesTool = tool('eia_search_routes', {
|
|
|
62
65
|
const service = getEiaApiService();
|
|
63
66
|
const { results, totalIndexed } = await service.search(input.query, input.limit, ctx);
|
|
64
67
|
ctx.enrich.echo(input.query);
|
|
65
|
-
ctx.enrich({ totalIndexed });
|
|
68
|
+
ctx.enrich({ totalIndexed, shown: results.length, cap: input.limit, truncated: false });
|
|
66
69
|
if (results.length === 0) {
|
|
67
70
|
ctx.enrich.notice(`No routes matched "${input.query}". Try different search terms or use eia_browse_routes to explore the taxonomy.`);
|
|
68
71
|
}
|
|
72
|
+
else if (results.length >= input.limit) {
|
|
73
|
+
ctx.enrich.truncated({
|
|
74
|
+
shown: results.length,
|
|
75
|
+
cap: input.limit,
|
|
76
|
+
guidance: 'More matches may exist — narrow the query or raise limit (max 30).',
|
|
77
|
+
});
|
|
78
|
+
}
|
|
69
79
|
return {
|
|
70
80
|
results: results.map(({ entry, score }) => ({
|
|
71
81
|
route: entry.route,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-routes.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-routes.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE;IACxD,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EACT,ogBAAogB;IACtgB,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;IAEzD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,uEAAuE,CAAC;QACpF,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,iDAAiD,CAAC;KAC/D,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC;aACP,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CAAC,wEAAwE,CAAC;YACrF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACvD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACtD,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CAAC,8DAA8D,CAAC;YAC3E,MAAM,EAAE,CAAC;iBACN,OAAO,EAAE;iBACT,QAAQ,CACP,kFAAkF,CACnF;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CACP,oMAAoM,CACrM;SACJ,CAAC;aACD,QAAQ,CAAC,wBAAwB,CAAC,CACtC;aACA,QAAQ,CAAC,6BAA6B,CAAC;KAC3C,CAAC;IAEF,UAAU,EAAE;QACV,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAC/E,YAAY,EAAE,CAAC;aACZ,MAAM,EAAE;aACR,QAAQ,CAAC,iEAAiE,CAAC;QAC9E,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,iGAAiG,CAClG;KACJ;IAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;QACtB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEtF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"search-routes.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search-routes.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Adapter between EIA tools and the framework DataCanvas
|
|
3
|
-
* primitive. Mints df_<id> table handles,
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* primitive. Mints df_<id> table handles, sanitizes column identifiers to the
|
|
4
|
+
* canvas identifier shape (EIA's {col}-units companion columns carry a hyphen
|
|
5
|
+
* the gate rejects), derives all-nullable column schemas (EIA data values are
|
|
6
|
+
* all strings), tracks per-table TTL and provenance in ctx.state, and
|
|
7
|
+
* lazy-sweeps expired tables on every public operation.
|
|
6
8
|
* Best-effort: failed canvas operations log a warning and return undefined so
|
|
7
9
|
* the caller's inline response remains useful.
|
|
8
10
|
* @module services/canvas-bridge/canvas-bridge
|
|
@@ -47,6 +49,24 @@ export interface BridgeQueryOptions {
|
|
|
47
49
|
* rollbacks when sparse columns carry nulls past the sniff window.
|
|
48
50
|
*/
|
|
49
51
|
export declare function deriveAllNullableSchema(rows: Record<string, unknown>[]): ColumnSchema[];
|
|
52
|
+
/**
|
|
53
|
+
* Sanitize a column name to the canvas identifier shape
|
|
54
|
+
* (`/^[A-Za-z_][A-Za-z0-9_]{0,62}$/`). EIA emits paired `{col}` / `{col}-units`
|
|
55
|
+
* companion columns; the framework's canvas identifier gate rejects the hyphen
|
|
56
|
+
* (`reason: 'identifier_shape'`). Characters outside `[A-Za-z0-9_]` become
|
|
57
|
+
* underscores, a leading non-letter/underscore gets an underscore prefix, and
|
|
58
|
+
* the result is capped at the 63-char identifier limit.
|
|
59
|
+
*/
|
|
60
|
+
export declare function sanitizeColumnName(name: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Remap row keys to canvas-safe column identifiers, returning new row objects so
|
|
63
|
+
* the caller's inline preview keeps the original `{col}-units` keys for display.
|
|
64
|
+
* The original→safe map is built once from the union of all row keys, so the
|
|
65
|
+
* DuckDB appender — which reads `row[col.name]` per schema column — finds every
|
|
66
|
+
* value even when a column is sparse; collisions (two source columns sanitizing
|
|
67
|
+
* to the same identifier) are disambiguated with a numeric suffix.
|
|
68
|
+
*/
|
|
69
|
+
export declare function sanitizeRowsForCanvas(rows: Record<string, unknown>[]): Record<string, unknown>[];
|
|
50
70
|
export declare class CanvasBridge {
|
|
51
71
|
private readonly canvas;
|
|
52
72
|
constructor(canvas: DataCanvas);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-bridge.d.ts","sourceRoot":"","sources":["../../../src/services/canvas-bridge/canvas-bridge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"canvas-bridge.d.ts","sourceRoot":"","sources":["../../../src/services/canvas-bridge/canvas-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Adapter between EIA tools and the framework DataCanvas
|
|
3
|
-
* primitive. Mints df_<id> table handles,
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* primitive. Mints df_<id> table handles, sanitizes column identifiers to the
|
|
4
|
+
* canvas identifier shape (EIA's {col}-units companion columns carry a hyphen
|
|
5
|
+
* the gate rejects), derives all-nullable column schemas (EIA data values are
|
|
6
|
+
* all strings), tracks per-table TTL and provenance in ctx.state, and
|
|
7
|
+
* lazy-sweeps expired tables on every public operation.
|
|
6
8
|
* Best-effort: failed canvas operations log a warning and return undefined so
|
|
7
9
|
* the caller's inline response remains useful.
|
|
8
10
|
* @module services/canvas-bridge/canvas-bridge
|
|
@@ -10,7 +12,6 @@
|
|
|
10
12
|
import { inferSchemaFromRows, } from '@cyanheads/mcp-ts-core/canvas';
|
|
11
13
|
import { idGenerator } from '@cyanheads/mcp-ts-core/utils';
|
|
12
14
|
import { getServerConfig } from '../../config/server-config.js';
|
|
13
|
-
import { assertNoSystemCatalogAccess } from './sql-gate-extras.js';
|
|
14
15
|
const META_PREFIX = 'eia-df-meta/';
|
|
15
16
|
const CANVAS_ID_KEY = 'eia-canvas-id';
|
|
16
17
|
const TABLE_NAME_CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
@@ -22,6 +23,53 @@ const TABLE_NAME_CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
|
22
23
|
export function deriveAllNullableSchema(rows) {
|
|
23
24
|
return inferSchemaFromRows(rows).map((col) => ({ ...col, nullable: true }));
|
|
24
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Sanitize a column name to the canvas identifier shape
|
|
28
|
+
* (`/^[A-Za-z_][A-Za-z0-9_]{0,62}$/`). EIA emits paired `{col}` / `{col}-units`
|
|
29
|
+
* companion columns; the framework's canvas identifier gate rejects the hyphen
|
|
30
|
+
* (`reason: 'identifier_shape'`). Characters outside `[A-Za-z0-9_]` become
|
|
31
|
+
* underscores, a leading non-letter/underscore gets an underscore prefix, and
|
|
32
|
+
* the result is capped at the 63-char identifier limit.
|
|
33
|
+
*/
|
|
34
|
+
export function sanitizeColumnName(name) {
|
|
35
|
+
const replaced = name.replace(/[^A-Za-z0-9_]/g, '_');
|
|
36
|
+
const prefixed = /^[A-Za-z_]/.test(replaced) ? replaced : `_${replaced}`;
|
|
37
|
+
return prefixed.slice(0, 63);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Remap row keys to canvas-safe column identifiers, returning new row objects so
|
|
41
|
+
* the caller's inline preview keeps the original `{col}-units` keys for display.
|
|
42
|
+
* The original→safe map is built once from the union of all row keys, so the
|
|
43
|
+
* DuckDB appender — which reads `row[col.name]` per schema column — finds every
|
|
44
|
+
* value even when a column is sparse; collisions (two source columns sanitizing
|
|
45
|
+
* to the same identifier) are disambiguated with a numeric suffix.
|
|
46
|
+
*/
|
|
47
|
+
export function sanitizeRowsForCanvas(rows) {
|
|
48
|
+
const renameMap = new Map();
|
|
49
|
+
const used = new Set();
|
|
50
|
+
for (const row of rows) {
|
|
51
|
+
for (const key of Object.keys(row)) {
|
|
52
|
+
if (renameMap.has(key))
|
|
53
|
+
continue;
|
|
54
|
+
let safe = sanitizeColumnName(key);
|
|
55
|
+
if (used.has(safe)) {
|
|
56
|
+
let suffix = 2;
|
|
57
|
+
while (used.has(`${safe}_${suffix}`))
|
|
58
|
+
suffix++;
|
|
59
|
+
safe = `${safe}_${suffix}`;
|
|
60
|
+
}
|
|
61
|
+
used.add(safe);
|
|
62
|
+
renameMap.set(key, safe);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return rows.map((row) => {
|
|
66
|
+
const remapped = {};
|
|
67
|
+
for (const [key, value] of Object.entries(row)) {
|
|
68
|
+
remapped[renameMap.get(key) ?? key] = value;
|
|
69
|
+
}
|
|
70
|
+
return remapped;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
25
73
|
export class CanvasBridge {
|
|
26
74
|
canvas;
|
|
27
75
|
constructor(canvas) {
|
|
@@ -38,8 +86,12 @@ export class CanvasBridge {
|
|
|
38
86
|
await this.sweepExpired(ctx);
|
|
39
87
|
const instance = await this.acquireSharedCanvas(ctx);
|
|
40
88
|
const tableName = this.mintTableName();
|
|
41
|
-
|
|
42
|
-
|
|
89
|
+
// EIA's {col}-units companion columns carry a hyphen the canvas identifier
|
|
90
|
+
// gate rejects; sanitize keys before registration. options.rows (the
|
|
91
|
+
// caller's inline preview) keeps the original names.
|
|
92
|
+
const safeRows = sanitizeRowsForCanvas(options.rows);
|
|
93
|
+
const schema = deriveAllNullableSchema(safeRows);
|
|
94
|
+
const result = await instance.registerTable(tableName, safeRows, { schema });
|
|
43
95
|
const now = Date.now();
|
|
44
96
|
const ttlMs = getServerConfig().datasetTtlSeconds * 1000;
|
|
45
97
|
const meta = {
|
|
@@ -86,10 +138,10 @@ export class CanvasBridge {
|
|
|
86
138
|
return entries.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
87
139
|
}
|
|
88
140
|
async query(ctx, sql, options = {}) {
|
|
89
|
-
assertNoSystemCatalogAccess(sql);
|
|
90
141
|
await this.sweepExpired(ctx);
|
|
91
142
|
const instance = await this.acquireSharedCanvas(ctx);
|
|
92
143
|
const result = await instance.query(sql, {
|
|
144
|
+
denySystemCatalogs: true,
|
|
93
145
|
...(options.preview !== undefined && { preview: options.preview }),
|
|
94
146
|
...(options.rowLimit !== undefined && { rowLimit: options.rowLimit }),
|
|
95
147
|
...(options.registerAs !== undefined && { registerAs: options.registerAs }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-bridge.js","sourceRoot":"","sources":["../../../src/services/canvas-bridge/canvas-bridge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"canvas-bridge.js","sourceRoot":"","sources":["../../../src/services/canvas-bridge/canvas-bridge.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/eia-energy-mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"mcpName": "io.github.cyanheads/eia-energy-mcp-server",
|
|
5
5
|
"description": "Browse and query the U.S. Energy Information Administration API v2 — electricity, petroleum, natural gas, coal, forecasts, and more via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"format:unsafe": "biome check --write --unsafe .",
|
|
30
30
|
"lint:mcp": "bun run scripts/lint-mcp.ts",
|
|
31
31
|
"lint:packaging": "bun run scripts/lint-packaging.ts",
|
|
32
|
-
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/eia-energy-mcp-server.mcpb",
|
|
32
|
+
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/eia-energy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/eia-energy-mcp-server.mcpb",
|
|
33
33
|
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
34
34
|
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
35
35
|
"list-skills": "bun run scripts/list-skills.ts",
|
|
@@ -90,15 +90,15 @@
|
|
|
90
90
|
"access": "public"
|
|
91
91
|
},
|
|
92
92
|
"dependencies": {
|
|
93
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
93
|
+
"@cyanheads/mcp-ts-core": "^0.10.6",
|
|
94
94
|
"@duckdb/node-api": "^1.5.3-r.3",
|
|
95
|
-
"fuse.js": "^7.4.
|
|
95
|
+
"fuse.js": "^7.4.2",
|
|
96
96
|
"pino-pretty": "^13.1.3",
|
|
97
97
|
"zod": "^4.4.3"
|
|
98
98
|
},
|
|
99
99
|
"devDependencies": {
|
|
100
|
-
"@biomejs/biome": "^2.
|
|
101
|
-
"@types/node": "^25.9.
|
|
100
|
+
"@biomejs/biome": "^2.5.0",
|
|
101
|
+
"@types/node": "^25.9.3",
|
|
102
102
|
"depcheck": "^1.4.7",
|
|
103
103
|
"ignore": "^7.0.5",
|
|
104
104
|
"tsc-alias": "^1.8.17",
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/eia-energy-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.2.
|
|
9
|
+
"version": "0.2.7",
|
|
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/eia-energy-mcp-server",
|
|
21
21
|
"runtimeHint": "bun",
|
|
22
|
-
"version": "0.2.
|
|
22
|
+
"version": "0.2.7",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
75
75
|
"identifier": "@cyanheads/eia-energy-mcp-server",
|
|
76
76
|
"runtimeHint": "bun",
|
|
77
|
-
"version": "0.2.
|
|
77
|
+
"version": "0.2.7",
|
|
78
78
|
"packageArguments": [
|
|
79
79
|
{
|
|
80
80
|
"type": "positional",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Bridge-layer SQL gate additions on top of the framework's
|
|
3
|
-
* read-only gate. Additionally denies access to DuckDB system catalogs
|
|
4
|
-
* (information_schema, pg_catalog, sqlite_master, duckdb_*) so callers cannot
|
|
5
|
-
* enumerate df_<id> handles they don't already hold.
|
|
6
|
-
* @module services/canvas-bridge/sql-gate-extras
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Reject SELECTs referencing DuckDB system catalogs. Throws ValidationError
|
|
10
|
-
* with data.reason = 'system_catalog_access'.
|
|
11
|
-
*/
|
|
12
|
-
export declare function assertNoSystemCatalogAccess(sql: string): void;
|
|
13
|
-
//# sourceMappingURL=sql-gate-extras.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sql-gate-extras.d.ts","sourceRoot":"","sources":["../../../src/services/canvas-bridge/sql-gate-extras.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAc7D"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Bridge-layer SQL gate additions on top of the framework's
|
|
3
|
-
* read-only gate. Additionally denies access to DuckDB system catalogs
|
|
4
|
-
* (information_schema, pg_catalog, sqlite_master, duckdb_*) so callers cannot
|
|
5
|
-
* enumerate df_<id> handles they don't already hold.
|
|
6
|
-
* @module services/canvas-bridge/sql-gate-extras
|
|
7
|
-
*/
|
|
8
|
-
import { validationError } from '@cyanheads/mcp-ts-core/errors';
|
|
9
|
-
const FORBIDDEN_CATALOG_PATTERNS = [
|
|
10
|
-
/\binformation_schema\b/i,
|
|
11
|
-
/\bpg_catalog\b/i,
|
|
12
|
-
/\bsqlite_master\b/i,
|
|
13
|
-
/\bduckdb_[a-z_]+\b/i,
|
|
14
|
-
];
|
|
15
|
-
function stripStringLiterals(sql) {
|
|
16
|
-
return sql.replace(/'([^'\\]|\\.|'')*'/g, "''").replace(/"([^"\\]|\\.|"")*"/g, '""');
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Reject SELECTs referencing DuckDB system catalogs. Throws ValidationError
|
|
20
|
-
* with data.reason = 'system_catalog_access'.
|
|
21
|
-
*/
|
|
22
|
-
export function assertNoSystemCatalogAccess(sql) {
|
|
23
|
-
const stripped = stripStringLiterals(sql);
|
|
24
|
-
for (const pattern of FORBIDDEN_CATALOG_PATTERNS) {
|
|
25
|
-
const match = stripped.match(pattern);
|
|
26
|
-
if (match) {
|
|
27
|
-
throw validationError(`SQL references a denied system catalog: ${match[0]}.`, {
|
|
28
|
-
reason: 'system_catalog_access',
|
|
29
|
-
catalog: match[0],
|
|
30
|
-
recovery: {
|
|
31
|
-
hint: 'Query only df_<id> tables. Use eia_dataframe_describe to list available dataframes.',
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=sql-gate-extras.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sql-gate-extras.js","sourceRoot":"","sources":["../../../src/services/canvas-bridge/sql-gate-extras.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,0BAA0B,GAA0B;IACxD,yBAAyB;IACzB,iBAAiB;IACjB,oBAAoB;IACpB,qBAAqB;CACtB,CAAC;AAEF,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,0BAA0B,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,eAAe,CAAC,2CAA2C,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;gBAC5E,MAAM,EAAE,uBAAuB;gBAC/B,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjB,QAAQ,EAAE;oBACR,IAAI,EAAE,qFAAqF;iBAC5F;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
|