lt-open-data-sdk 1.1.2 → 1.1.4

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/README.md CHANGED
@@ -127,6 +127,8 @@ for await (const municipality of client.stream(
127
127
  }
128
128
  ```
129
129
 
130
+ > ⚠️ **Do not use `.select()` with `stream()`**. The API does not return pagination tokens when field projection is used, causing the stream to stop after the first page (100 items).
131
+
130
132
  ### Discovery
131
133
 
132
134
  #### `listNamespace(namespace)` — Browse datasets
@@ -395,6 +397,53 @@ The SDK handles token caching and automatic refresh.
395
397
 
396
398
  ---
397
399
 
400
+ ## MCP Server (AI Agent Integration)
401
+
402
+ This SDK exposes a **Model Context Protocol (MCP)** server, allowing AI agents (like Claude Desktop, Cursor, or other MCP clients) to directly access Lithuanian Open Data.
403
+
404
+ ### Setup
405
+
406
+ Add this to your MCP configuration file (`claude_desktop_config.json` or similar):
407
+
408
+ ```json
409
+ {
410
+ "mcpServers": {
411
+ "lt-open-data": {
412
+ "command": "npx",
413
+ "args": ["-y", "lt-open-data-sdk", "--mcp"]
414
+ }
415
+ }
416
+ }
417
+ ```
418
+
419
+ ### Available Tools
420
+
421
+ | Tool | Description |
422
+ | ------------------ | -------------------------------------------------------- |
423
+ | **Metadata** | |
424
+ | `list_namespace` | Browse dataset hierarchy (Start here!) |
425
+ | `search_datasets` | Find datasets by keyword (returns titles & descriptions) |
426
+ | `describe_model` | Get schema/fields for a dataset (auto-infers if needed) |
427
+ | `get_last_updated` | Check when a dataset was last modified |
428
+ | **Data Access** | |
429
+ | `query_data` | Query records with filtering, sorting, pagination |
430
+ | `count_records` | Count records matching a filter |
431
+ | `get_record` | Fetch a single record by ID |
432
+ | `get_sample_data` | Get a small sample to inspect data structure |
433
+ | **Analysis** | |
434
+ | `get_summary` | Get distribution histograms for numeric fields |
435
+ | `generate_types` | Generate TypeScript interfaces for a dataset |
436
+
437
+ ### Example Agent Workflow
438
+
439
+ 1. **User:** "Find datasets about population in Vilnius"
440
+ 2. **Agent:**
441
+ - `search_datasets("population Vilnius")` → Finds `dataset/path`
442
+ - `describe_model("dataset/path")` → Sees fields `year`, `count`, `district`
443
+ - `query_data("dataset/path", filter="year=2024")` → Returns data
444
+
445
+ ---
446
+
398
447
  ## License
399
448
 
400
449
  MIT
package/dist/cli/index.js CHANGED
@@ -21,12 +21,14 @@ import { SpintaClient } from '../client/SpintaClient.js';
21
21
  import { crawlNamespace, fetchAllModelsMetadata } from './crawler.js';
22
22
  import { generateDeclarationFile } from './generator.js';
23
23
  import { modelPathToInterfaceName } from './typeMapper.js';
24
+ import { startMcpServer } from '../mcp/server.js';
24
25
  function parseArgs(args) {
25
26
  const options = {
26
27
  namespace: '',
27
28
  output: undefined,
28
29
  baseUrl: 'https://get.data.gov.lt',
29
30
  help: false,
31
+ mcp: false,
30
32
  };
31
33
  let skipNext = false;
32
34
  for (const [index, arg] of args.entries()) {
@@ -37,6 +39,9 @@ function parseArgs(args) {
37
39
  if (arg === '--help' || arg === '-h') {
38
40
  options.help = true;
39
41
  }
42
+ else if (arg === '--mcp') {
43
+ options.mcp = true;
44
+ }
40
45
  else if (arg === '--output' || arg === '-o') {
41
46
  const nextArg = args[index + 1];
42
47
  if (nextArg !== undefined) {
@@ -70,17 +75,24 @@ Arguments:
70
75
  Options:
71
76
  --output, -o Output file path (default: stdout)
72
77
  --base-url Base URL for the API (default: https://get.data.gov.lt)
78
+ --mcp Start MCP server for AI agent integration
73
79
  --help, -h Show this help message
74
80
 
75
81
  Examples:
76
82
  lt-gen datasets/gov/ivpk/adk
77
83
  lt-gen datasets/gov/ivpk/adk -o ./types/adk.d.ts
78
- lt-gen datasets/gov/ivpk/adk --base-url https://get-test.data.gov.lt
84
+ lt-gen --mcp # Start MCP server for AI agents
79
85
  `);
80
86
  }
81
87
  async function main() {
82
88
  const args = process.argv.slice(2);
83
89
  const options = parseArgs(args);
90
+ // Handle MCP server mode
91
+ if (options.mcp) {
92
+ console.error('🚀 Starting MCP server...');
93
+ await startMcpServer();
94
+ return;
95
+ }
84
96
  if (options.help || options.namespace === '') {
85
97
  showHelp();
86
98
  process.exit(options.help ? 0 : 1);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -84,6 +84,10 @@ export declare class SpintaClient {
84
84
  * using the `_page.next` token. Validates token before each page fetch to
85
85
  * avoid mid-stream auth failures on large datasets.
86
86
  *
87
+ * **Warning**: Do NOT use `.select()` with `stream()`. The data.gov.lt API
88
+ * does not return pagination tokens when field projection is used, causing
89
+ * the stream to stop after the first page.
90
+ *
87
91
  * @param model - Full model path
88
92
  * @param query - Optional query builder (should include limit for page size)
89
93
  * @yields Objects one at a time with metadata
@@ -258,6 +262,7 @@ interface NamespaceItem {
258
262
  _id: string;
259
263
  _type: 'ns' | 'model';
260
264
  title?: string;
265
+ description?: string;
261
266
  }
262
267
  export {};
263
268
  //# sourceMappingURL=SpintaClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpintaClient.d.ts","sourceRoot":"","sources":["../../src/client/SpintaClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SpintaClient.d.ts","sourceRoot":"","sources":["../../src/client/SpintaClient.ts"],"names":[],"mappings":"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"}
@@ -129,6 +129,10 @@ export class SpintaClient {
129
129
  * using the `_page.next` token. Validates token before each page fetch to
130
130
  * avoid mid-stream auth failures on large datasets.
131
131
  *
132
+ * **Warning**: Do NOT use `.select()` with `stream()`. The data.gov.lt API
133
+ * does not return pagination tokens when field projection is used, causing
134
+ * the stream to stop after the first page.
135
+ *
132
136
  * @param model - Full model path
133
137
  * @param query - Optional query builder (should include limit for page size)
134
138
  * @yields Objects one at a time with metadata
@@ -215,6 +219,7 @@ export class SpintaClient {
215
219
  _id: cleanPath,
216
220
  _type: isNamespace ? 'ns' : 'model',
217
221
  title: item.title,
222
+ description: item.description,
218
223
  };
219
224
  });
220
225
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SpintaClient.js","sourceRoot":"","sources":["../../src/client/SpintaClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAYH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,mCAAmC;AACnC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AACnD,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AACnD,MAAM,cAAc,GAAsB;IACxC,eAAe;IACf,eAAe;IACf,eAAe;IACf,gBAAgB;CACR,CAAC;AAEX,MAAM,OAAO,YAAY;IACN,OAAO,CAAS;IAChB,UAAU,CAAoB;IAE/C,YAAY,SAAuB,EAAE;QACnC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEvE,0DAA0D;QAC1D,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvE,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAC9B,MAAM,CAAC,OAAO,IAAI,gBAAgB,EAClC,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,MAAM,IAAI,cAAc,CAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,UAAU;QACtB,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;SAC3B,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC/C,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;QAC5C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,KAAK,GAAG,EAAE;QAC/C,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAI,KAAa,EAAE,EAAU;QACvC,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAmB,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,MAAM,CACV,KAAa,EACb,KAAuB;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CACb,KAAa,EACb,KAAuB;QAEvB,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAoB,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,CAAC,MAAM,CACX,KAAa,EACb,KAAuB;QAEvB,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,SAA6B,CAAC;QAElC,GAAG,CAAC;YACF,6CAA6C;YAC7C,IAAI,WAAW,GAAG,SAAS,CAAC;YAC5B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/C,WAAW,GAAG,GAAG,SAAS,GAAG,SAAS,SAAS,SAAS,IAAI,CAAC;YAC/D,CAAC;YAED,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAoB,IAAI,EAAE,WAAW,CAAC,CAAC;YAE1E,kBAAkB;YAClB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,IAAI,CAAC;YACb,CAAC;YAED,sBAAsB;YACtB,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;QACnC,CAAC,QAAQ,SAAS,KAAK,SAAS,EAAE;IACpC,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,KAAK,CAAI,KAAa,EAAE,KAAuB;QACnD,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QAEzB,oBAAoB;QACpB,IAAI,WAAW,GAAG,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACjD,WAAW,GAAG,GAAG,WAAW,GAAG,SAAS,SAAS,CAAC;QAElD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAgB,IAAI,EAAE,WAAW,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,IAAI,GAAG,IAAI,SAAS,MAAM,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,IAAI,CAAC,CAAC;QAEhE,iDAAiD;QACjD,wEAAwE;QACxE,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAiB,EAAE;YAChD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,WAAW;gBAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB;gBAChD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAEd,OAAO;gBACL,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;gBACnC,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,MAAM,QAAQ,GAAG,KAAK,EAAE,EAAU,EAAiB,EAAE;YACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAE3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,IAAI,CAAC,GAAG;wBACd,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,SAAS,EAAE,EAAE;qBACd,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,6BAA6B;oBAC7B,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,eAAe,CAAI,KAAa;QACpC,yEAAyE;QACzE,MAAM,IAAI,GAAG,IAAI,KAAK,cAAc,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAqB,IAAI,CAAC,CAAC;YAC9D,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,KAAK,CAAC,UAAU,CACd,KAAa,EACb,OAAgB,EAChB,KAAK,GAAG,GAAG;QAEX,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,KAAK,aAAa,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,UAAU,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAqB,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,CAAC,aAAa,CAClB,KAAa,EACb,OAAO,GAAG,CAAC,EACX,QAAQ,GAAG,GAAG;QAEd,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,OAAO,OAAO,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAI,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM;YACR,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,MAAM,CAAC;gBACb,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YACvB,CAAC;YAED,wDAAwD;YACxD,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,UAAU,CACd,KAAa,EACb,KAAa;QAEb,MAAM,IAAI,GAAG,IAAI,KAAK,aAAa,KAAK,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkB,IAAI,CAAC,CAAC;QAC3D,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"SpintaClient.js","sourceRoot":"","sources":["../../src/client/SpintaClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP Server exports
3
+ */
4
+ export { createMcpServer, startMcpServer } from './server.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP Server exports
3
+ */
4
+ export { createMcpServer, startMcpServer } from './server.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * MCP Server for lt-open-data-sdk
3
+ *
4
+ * Exposes Lithuanian Open Data as tools for AI agents (Claude, Cursor, etc.)
5
+ */
6
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ /**
8
+ * Create and configure the MCP server with all tools
9
+ */
10
+ export declare function createMcpServer(): McpServer;
11
+ /**
12
+ * Start the MCP server with stdio transport
13
+ * Used when running via CLI: npx lt-open-data-sdk --mcp
14
+ */
15
+ export declare function startMcpServer(): Promise<void>;
16
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE;;GAEG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAY3C;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAIpD"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * MCP Server for lt-open-data-sdk
3
+ *
4
+ * Exposes Lithuanian Open Data as tools for AI agents (Claude, Cursor, etc.)
5
+ */
6
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
+ import { registerDataTools } from './tools/dataTools.js';
9
+ import { registerMetadataTools } from './tools/metadataTools.js';
10
+ import { registerCodegenTools } from './tools/codegenTools.js';
11
+ /**
12
+ * Create and configure the MCP server with all tools
13
+ */
14
+ export function createMcpServer() {
15
+ const server = new McpServer({
16
+ name: 'lt-open-data',
17
+ version: '1.0.0',
18
+ });
19
+ // Register all tool groups
20
+ registerDataTools(server);
21
+ registerMetadataTools(server);
22
+ registerCodegenTools(server);
23
+ return server;
24
+ }
25
+ /**
26
+ * Start the MCP server with stdio transport
27
+ * Used when running via CLI: npx lt-open-data-sdk --mcp
28
+ */
29
+ export async function startMcpServer() {
30
+ const server = createMcpServer();
31
+ const transport = new StdioServerTransport();
32
+ await server.connect(transport);
33
+ }
34
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,2BAA2B;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Code generation tools for MCP server
3
+ *
4
+ * Generates TypeScript interfaces from dataset schemas.
5
+ */
6
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ export declare function registerCodegenTools(server: McpServer): void;
8
+ //# sourceMappingURL=codegenTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegenTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/codegenTools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwE5D"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Code generation tools for MCP server
3
+ *
4
+ * Generates TypeScript interfaces from dataset schemas.
5
+ */
6
+ import { z } from 'zod';
7
+ import { SpintaClient } from '../../client/SpintaClient.js';
8
+ import { fetchModelMetadata } from '../../cli/crawler.js';
9
+ const client = new SpintaClient();
10
+ export function registerCodegenTools(server) {
11
+ // generate_types - Generate TypeScript interfaces from actual data
12
+ server.registerTool('generate_types', {
13
+ description: 'Generate TypeScript interfaces for a dataset. ' +
14
+ 'Infers types from actual data samples, not just metadata. ' +
15
+ 'Returns .d.ts content ready to use in TypeScript projects.',
16
+ inputSchema: {
17
+ namespace: z.string().describe('Namespace or model path'),
18
+ recursive: z.boolean().default(false).describe('Include nested namespaces (slower)'),
19
+ },
20
+ }, async ({ namespace, recursive }) => {
21
+ // Discover models in namespace
22
+ const models = recursive
23
+ ? await client.discoverModels(namespace)
24
+ : [{ path: namespace, title: undefined }];
25
+ if (models.length === 0) {
26
+ return { content: [{ type: 'text', text: 'No models found in this namespace.' }] };
27
+ }
28
+ // Limit to avoid timeout
29
+ const toProcess = models.slice(0, 5);
30
+ const interfaces = [];
31
+ const errors = [];
32
+ for (const model of toProcess) {
33
+ try {
34
+ const metadata = await fetchModelMetadata(client, model.path);
35
+ if (metadata.properties.length === 0) {
36
+ errors.push(`${model.path}: no fields found`);
37
+ continue;
38
+ }
39
+ // Generate interface
40
+ const name = model.path.split('/').pop() ?? 'Unknown';
41
+ const fields = metadata.properties.map(p => {
42
+ const tsType = mapToTsType(p.type);
43
+ return ` ${p.name}?: ${tsType};`;
44
+ });
45
+ interfaces.push([
46
+ `/** ${model.path} */`,
47
+ `export interface ${name} {`,
48
+ ' _id: string;',
49
+ ...fields,
50
+ '}'
51
+ ].join('\n'));
52
+ }
53
+ catch {
54
+ errors.push(`${model.path}: fetch failed`);
55
+ }
56
+ }
57
+ if (interfaces.length === 0) {
58
+ return { content: [{ type: 'text', text: 'Could not generate interfaces. ' + errors.join(', ') }] };
59
+ }
60
+ let result = interfaces.join('\n\n');
61
+ if (models.length > 5) {
62
+ result += `\n\n// Note: Only first 5 of ${String(models.length)} models shown.`;
63
+ }
64
+ if (errors.length > 0) {
65
+ result += `\n\n// Errors: ${errors.join(', ')}`;
66
+ }
67
+ return { content: [{ type: 'text', text: result }] };
68
+ });
69
+ }
70
+ /**
71
+ * Map inferred type to TypeScript type
72
+ */
73
+ function mapToTsType(type) {
74
+ switch (type) {
75
+ case 'string':
76
+ case 'text':
77
+ case 'url':
78
+ return 'string';
79
+ case 'integer':
80
+ case 'number':
81
+ return 'number';
82
+ case 'boolean':
83
+ return 'boolean';
84
+ case 'date':
85
+ case 'datetime':
86
+ return 'string'; // ISO date string
87
+ case 'ref':
88
+ return '{ _id: string }';
89
+ case 'geometry':
90
+ return 'string'; // WKT
91
+ case 'file':
92
+ return '{ _id: string; _content_type?: string }';
93
+ default:
94
+ return 'unknown';
95
+ }
96
+ }
97
+ //# sourceMappingURL=codegenTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegenTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/codegenTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Data access tools for MCP server
3
+ *
4
+ * Core tools for querying Lithuanian open data.
5
+ */
6
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ export declare function registerDataTools(server: McpServer): void;
8
+ //# sourceMappingURL=dataTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/dataTools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0FzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyGzD"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Data access tools for MCP server
3
+ *
4
+ * Core tools for querying Lithuanian open data.
5
+ */
6
+ import { z } from 'zod';
7
+ import { SpintaClient } from '../../client/SpintaClient.js';
8
+ import { QueryBuilder } from '../../builder/QueryBuilder.js';
9
+ const client = new SpintaClient();
10
+ /**
11
+ * Parse a simple filter string into QueryBuilder operations
12
+ * Returns error message if filter is invalid
13
+ */
14
+ function parseFilter(query, filterStr) {
15
+ // Handle contains
16
+ const containsMatch = /^(\w+)\.contains\("(.+)"\)$/.exec(filterStr);
17
+ if (containsMatch !== null) {
18
+ const field = containsMatch[1];
19
+ const value = containsMatch[2];
20
+ if (field !== undefined && value !== undefined) {
21
+ return { query: query.filter(f => f.field(field).contains(value)) };
22
+ }
23
+ }
24
+ // Handle startswith
25
+ const startsMatch = /^(\w+)\.startswith\("(.+)"\)$/.exec(filterStr);
26
+ if (startsMatch !== null) {
27
+ const field = startsMatch[1];
28
+ const value = startsMatch[2];
29
+ if (field !== undefined && value !== undefined) {
30
+ return { query: query.filter(f => f.field(field).startswith(value)) };
31
+ }
32
+ }
33
+ // Handle comparison operators
34
+ const compMatch = /^(\w+)(>=|<=|>|<|!=|=)(.+)$/.exec(filterStr);
35
+ if (compMatch !== null) {
36
+ const field = compMatch[1];
37
+ const op = compMatch[2];
38
+ const rawValue = compMatch[3];
39
+ if (field === undefined || op === undefined || rawValue === undefined) {
40
+ return { query, error: `Could not parse filter "${filterStr}"` };
41
+ }
42
+ // Parse value
43
+ let value;
44
+ if (rawValue.startsWith('"') && rawValue.endsWith('"')) {
45
+ value = rawValue.slice(1, -1);
46
+ }
47
+ else if (!isNaN(Number(rawValue))) {
48
+ value = Number(rawValue);
49
+ }
50
+ else {
51
+ return {
52
+ query,
53
+ error: `Invalid filter value "${rawValue}". Use quotes for strings: ${field}${op}"${rawValue}"`
54
+ };
55
+ }
56
+ return {
57
+ query: query.filter(f => {
58
+ const fieldFilter = f.field(field);
59
+ switch (op) {
60
+ case '=': return fieldFilter.eq(value);
61
+ case '!=': return fieldFilter.ne(value);
62
+ case '>': return fieldFilter.gt(value);
63
+ case '>=': return fieldFilter.ge(value);
64
+ case '<': return fieldFilter.lt(value);
65
+ case '<=': return fieldFilter.le(value);
66
+ default: return fieldFilter.eq(value);
67
+ }
68
+ })
69
+ };
70
+ }
71
+ return {
72
+ query,
73
+ error: `Could not parse filter "${filterStr}". Examples: field=123, field>"text", field.contains("text")`
74
+ };
75
+ }
76
+ /**
77
+ * Strip Spinta metadata from records for cleaner output
78
+ */
79
+ function compactRecord(record) {
80
+ const result = {};
81
+ for (const [key, value] of Object.entries(record)) {
82
+ if (key === '_id' || !key.startsWith('_')) {
83
+ result[key] = value;
84
+ }
85
+ }
86
+ return result;
87
+ }
88
+ export function registerDataTools(server) {
89
+ // query_data - Main query tool
90
+ server.registerTool('query_data', {
91
+ description: 'Query a Lithuanian open data dataset with filtering, sorting, and pagination. ' +
92
+ 'IMPORTANT: First use describe_model to see available fields. ' +
93
+ 'Filter syntax: field=value, field>100, field.contains("text"). ' +
94
+ 'Sort: field or -field for descending. ' +
95
+ 'Example: query_data({ model: "datasets/gov/rc/ar/savivaldybe/Savivaldybe", filter: "sav_kodas>50", limit: 5 })',
96
+ inputSchema: {
97
+ model: z.string().describe('Full dataset path like "datasets/gov/rc/ar/savivaldybe/Savivaldybe"'),
98
+ filter: z.string().optional().describe('Filter: "population>50000" or "name.contains(\\"Vilnius\\")"'),
99
+ sort: z.string().optional().describe('Sort field, prefix with - for descending'),
100
+ limit: z.number().default(20).describe('Max records (default 20, max 1000)'),
101
+ compact: z.boolean().default(true).describe('Strip metadata fields for cleaner output'),
102
+ },
103
+ }, async ({ model, filter, sort, limit, compact }) => {
104
+ let query = new QueryBuilder().limit(Math.min(limit, 1000));
105
+ if (filter !== undefined && filter !== '') {
106
+ const result = parseFilter(query, filter);
107
+ if (result.error !== undefined) {
108
+ return { content: [{ type: 'text', text: `Filter error: ${result.error}` }] };
109
+ }
110
+ query = result.query;
111
+ }
112
+ if (sort !== undefined && sort !== '') {
113
+ if (sort.startsWith('-')) {
114
+ query = query.sortDesc(sort.slice(1));
115
+ }
116
+ else {
117
+ query = query.sort(sort);
118
+ }
119
+ }
120
+ const data = await client.getAll(model, query);
121
+ const output = compact ? data.map(r => compactRecord(r)) : data;
122
+ return { content: [{ type: 'text', text: JSON.stringify(output, null, 2) }] };
123
+ });
124
+ // get_record - Fetch single record
125
+ server.registerTool('get_record', {
126
+ description: 'Fetch a single record by its ID. Use _id value from query_data results.',
127
+ inputSchema: {
128
+ model: z.string().describe('Full dataset path'),
129
+ id: z.string().describe('Record ID (_id field value)'),
130
+ compact: z.boolean().default(true).describe('Strip metadata fields'),
131
+ },
132
+ }, async ({ model, id, compact }) => {
133
+ const record = await client.getOne(model, id);
134
+ const output = compact ? compactRecord(record) : record;
135
+ return { content: [{ type: 'text', text: JSON.stringify(output, null, 2) }] };
136
+ });
137
+ // count_records - Count matching records
138
+ server.registerTool('count_records', {
139
+ description: 'Count records in a dataset, optionally with a filter. Fast way to check dataset size.',
140
+ inputSchema: {
141
+ model: z.string().describe('Full dataset path'),
142
+ filter: z.string().optional().describe('Optional filter expression'),
143
+ },
144
+ }, async ({ model, filter }) => {
145
+ let query = new QueryBuilder();
146
+ if (filter !== undefined && filter !== '') {
147
+ const result = parseFilter(query, filter);
148
+ if (result.error !== undefined) {
149
+ return { content: [{ type: 'text', text: `Filter error: ${result.error}` }] };
150
+ }
151
+ query = result.query;
152
+ }
153
+ const count = await client.count(model, query);
154
+ return { content: [{ type: 'text', text: `Total records: ${String(count)}` }] };
155
+ });
156
+ // get_sample_data - Get sample from dataset
157
+ server.registerTool('get_sample_data', {
158
+ description: 'Get a sample of records from a dataset. Useful for understanding data structure when describe_model is not enough.',
159
+ inputSchema: {
160
+ model: z.string().describe('Full dataset path'),
161
+ count: z.number().default(10).describe('Number of sample records (max 100)'),
162
+ },
163
+ }, async ({ model, count }) => {
164
+ const sampleSize = Math.min(count, 100);
165
+ const query = new QueryBuilder().limit(sampleSize);
166
+ const data = await client.getAll(model, query);
167
+ const output = data.map(r => compactRecord(r));
168
+ return { content: [{ type: 'text', text: JSON.stringify(output, null, 2) }] };
169
+ });
170
+ }
171
+ //# sourceMappingURL=dataTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/dataTools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Metadata tools for MCP server
3
+ *
4
+ * Tools for discovering and understanding datasets before querying.
5
+ */
6
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ export declare function registerMetadataTools(server: McpServer): void;
8
+ //# sourceMappingURL=metadataTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadataTools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/metadataTools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+M7D"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Metadata tools for MCP server
3
+ *
4
+ * Tools for discovering and understanding datasets before querying.
5
+ */
6
+ import { z } from 'zod';
7
+ import { SpintaClient } from '../../client/SpintaClient.js';
8
+ import { fetchModelMetadata } from '../../cli/crawler.js';
9
+ import { QueryBuilder } from '../../builder/QueryBuilder.js';
10
+ const client = new SpintaClient();
11
+ export function registerMetadataTools(server) {
12
+ // list_namespace - Browse dataset hierarchy (ENTRY POINT)
13
+ server.registerTool('list_namespace', {
14
+ description: 'START HERE: List namespaces and datasets within a path. ' +
15
+ 'Begin with "datasets/gov" to see all government data providers. ' +
16
+ 'Drill down through namespaces until you find a "model" (actual dataset). ' +
17
+ 'Example flow: list_namespace("datasets/gov") → list_namespace("datasets/gov/rc") → find models',
18
+ inputSchema: {
19
+ namespace: z.string().default('datasets/gov').describe('Namespace path. Start with "datasets/gov"'),
20
+ },
21
+ }, async ({ namespace }) => {
22
+ const items = await client.listNamespace(namespace);
23
+ // Format with titles and descriptions for better context
24
+ const lines = items.map(item => {
25
+ const typeLabel = item._type === 'ns' ? '📁' : '📊';
26
+ const title = item.title !== undefined && item.title !== '' ? ` - ${item.title}` : '';
27
+ const desc = item.description !== undefined && item.description !== ''
28
+ ? `\n ${item.description}`
29
+ : '';
30
+ return `${typeLabel} ${item._id}${title}${desc}`;
31
+ });
32
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
33
+ });
34
+ // search_datasets - Find datasets by keyword
35
+ server.registerTool('search_datasets', {
36
+ description: 'Search for datasets by keyword. Returns paths with titles and descriptions. ' +
37
+ 'Use this to find relevant datasets before querying. ' +
38
+ 'After finding a dataset, use describe_model to see its fields.',
39
+ inputSchema: {
40
+ query: z.string().describe('Search keyword (matches path, title, or description)'),
41
+ namespace: z.string().default('datasets/gov').describe('Starting namespace'),
42
+ max_results: z.number().default(20).describe('Maximum results'),
43
+ },
44
+ }, async ({ query, namespace, max_results }) => {
45
+ const models = await client.discoverModels(namespace);
46
+ const queryLower = query.toLowerCase();
47
+ const matches = models
48
+ .filter(m => m.path.toLowerCase().includes(queryLower) ||
49
+ (m.title?.toLowerCase().includes(queryLower) ?? false))
50
+ .slice(0, max_results);
51
+ if (matches.length === 0) {
52
+ return { content: [{ type: 'text', text: 'No matching datasets found.' }] };
53
+ }
54
+ const lines = matches.map(m => {
55
+ const title = m.title ?? '(no title)';
56
+ return `${m.path}\n → ${title}`;
57
+ });
58
+ return {
59
+ content: [{
60
+ type: 'text',
61
+ text: `Found ${String(matches.length)} datasets:\n\n${lines.join('\n\n')}`
62
+ }]
63
+ };
64
+ });
65
+ // describe_model - Get schema with auto-fallback to sampling
66
+ server.registerTool('describe_model', {
67
+ description: 'IMPORTANT: Use this before query_data to understand the schema. ' +
68
+ 'Returns field names and their types (string, integer, date, ref, etc). ' +
69
+ 'This helps you write correct filters and know what data to expect.',
70
+ inputSchema: {
71
+ model: z.string().describe('Full dataset path, e.g. "datasets/gov/rc/ar/savivaldybe/Savivaldybe"'),
72
+ },
73
+ }, async ({ model }) => {
74
+ const metadata = await fetchModelMetadata(client, model);
75
+ // If no properties found from metadata, try sampling
76
+ if (metadata.properties.length === 0) {
77
+ // Fallback: sample data and infer fields
78
+ try {
79
+ const query = new QueryBuilder().limit(5);
80
+ const samples = await client.getAll(model, query);
81
+ if (samples.length === 0) {
82
+ return {
83
+ content: [{
84
+ type: 'text',
85
+ text: `Model: ${model}\n\nNo data available in this dataset.`
86
+ }]
87
+ };
88
+ }
89
+ // Infer fields from sample
90
+ const fieldTypes = new Map();
91
+ for (const record of samples) {
92
+ for (const [key, value] of Object.entries(record)) {
93
+ if (!key.startsWith('_') && !fieldTypes.has(key)) {
94
+ fieldTypes.set(key, typeof value);
95
+ }
96
+ }
97
+ }
98
+ const fields = Array.from(fieldTypes.entries())
99
+ .map(([name, type]) => ` - ${name}: ${type}`);
100
+ return {
101
+ content: [{
102
+ type: 'text',
103
+ text: `Model: ${model}\n\nFields (inferred from data):\n${fields.join('\n')}`
104
+ }]
105
+ };
106
+ }
107
+ catch {
108
+ return {
109
+ content: [{
110
+ type: 'text',
111
+ text: `Model: ${model}\n\nCould not determine schema or sample data.`
112
+ }]
113
+ };
114
+ }
115
+ }
116
+ const lines = [
117
+ `Model: ${model}`,
118
+ metadata.title !== undefined && metadata.title !== '' ? `Title: ${metadata.title}` : null,
119
+ metadata.description !== undefined && metadata.description !== '' ? `Description: ${metadata.description}` : null,
120
+ '',
121
+ 'Fields:',
122
+ ...metadata.properties.map(p => ` - ${p.name}: ${p.type}`)
123
+ ].filter(Boolean);
124
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
125
+ });
126
+ // get_last_updated - Check dataset freshness
127
+ server.registerTool('get_last_updated', {
128
+ description: 'Get the timestamp of when a dataset was last updated. Useful for checking data freshness.',
129
+ inputSchema: {
130
+ model: z.string().describe('Full dataset path'),
131
+ },
132
+ }, async ({ model }) => {
133
+ const lastUpdate = await client.getLastUpdatedAt(model);
134
+ if (lastUpdate !== null) {
135
+ const hoursAgo = Math.round((Date.now() - lastUpdate.getTime()) / 1000 / 60 / 60);
136
+ const daysAgo = Math.round(hoursAgo / 24);
137
+ const timeDesc = daysAgo > 0 ? `${String(daysAgo)} days ago` : `${String(hoursAgo)} hours ago`;
138
+ return {
139
+ content: [{
140
+ type: 'text',
141
+ text: `Last updated: ${lastUpdate.toISOString()} (${timeDesc})`
142
+ }],
143
+ };
144
+ }
145
+ return { content: [{ type: 'text', text: 'No update history available.' }] };
146
+ });
147
+ // get_summary - Histogram with cleaner output
148
+ server.registerTool('get_summary', {
149
+ description: 'Get a histogram/distribution for a numeric field. Shows value ranges and counts with percentages.',
150
+ inputSchema: {
151
+ model: z.string().describe('Full dataset path'),
152
+ field: z.string().describe('Numeric field name to summarize'),
153
+ },
154
+ }, async ({ model, field }) => {
155
+ const summary = await client.getSummary(model, field);
156
+ if (summary.length === 0) {
157
+ return { content: [{ type: 'text', text: 'No summary data available.' }] };
158
+ }
159
+ const total = summary.reduce((sum, bin) => sum + bin.count, 0);
160
+ const nonEmpty = summary.filter(b => b.count > 0);
161
+ const lines = nonEmpty.map(bin => {
162
+ const binVal = typeof bin.bin === 'number' ? Math.round(bin.bin) : bin.bin;
163
+ const pct = ((bin.count / total) * 100).toFixed(1);
164
+ return ` ${String(binVal)}: ${String(bin.count)} (${pct}%)`;
165
+ });
166
+ return {
167
+ content: [{
168
+ type: 'text',
169
+ text: `Distribution of "${field}" (${String(total)} total records):\n${lines.join('\n')}`
170
+ }],
171
+ };
172
+ });
173
+ }
174
+ //# sourceMappingURL=metadataTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadataTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/metadataTools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lt-open-data-sdk",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "TypeScript SDK for the Lithuanian Open Data platform (data.gov.lt)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -65,5 +65,9 @@
65
65
  "dist",
66
66
  "README.md",
67
67
  "LICENSE"
68
- ]
68
+ ],
69
+ "dependencies": {
70
+ "@modelcontextprotocol/sdk": "^1.25.1",
71
+ "zod": "^4.3.4"
72
+ }
69
73
  }