bps-mcp-server 0.14.0 → 0.15.1

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
@@ -9,13 +9,18 @@ MCP (Model Context Protocol) server untuk data statistik BPS (Badan Pusat Statis
9
9
  ## Fitur
10
10
 
11
11
  - **39 tools** mencakup seluruh endpoint BPS WebAPI v1 + AllStats Search + AI-friendly shortcuts
12
- - **AI-friendly** — tool `find_data` memungkinkan AI mendapat data dalam 1 langkah (tanpa perlu navigasi hierarki BPS)
12
+ - **AI-friendly** — tool `find_data` dengan intent detection otomatis (resolve wilayah detect intent cari variabel → ambil data)
13
+ - **Intent Detection** — otomatis detect: single value, comparison, trend, ranking, table/breakdown, publication
14
+ - **Stopwords-ISO** — noise removal otomatis untuk 758 kata Indonesia + 1298 kata Inggris
15
+ - **Static Table Fallback** — `find_data` otomatis fallback ke tabel statis jika dynamic data tidak tersedia (misal: data agama)
16
+ - **Result Hints** — setiap response include tips lanjutan yang actionable
13
17
  - **Integrasi AllStats Search** — pencarian unified + full-text PDF search (tanpa API key)
14
18
  - **Smart fallback** — WebAPI search otomatis fallback ke AllStats jika tidak ada hasil
15
19
  - **3 MCP Resources** — domain list, kabupaten per provinsi, subjek per domain
16
20
  - **5 MCP Prompts** — template analisis data siap pakai
17
21
  - **Domain resolver** dengan fuzzy matching (ketik "Jatim" → Jawa Timur)
18
22
  - **Data formatter** yang mengubah raw BPS data menjadi format mudah dibaca
23
+ - **Persistent learning store** — auto-learn variable mappings, survive restart
19
24
  - **In-memory cache** dengan TTL per tipe data
20
25
  - **Rate limiting** — 60 req/menit per API key (remote worker)
21
26
  - **Bilingual** — error messages dan response mendukung bahasa Indonesia dan Inggris
@@ -229,11 +234,14 @@ User: "Berapa angka kemiskinan Indonesia 2023?"
229
234
  AI menggunakan: find_data(query="penduduk miskin", region="Indonesia", year="2023")
230
235
 
231
236
  Proses internal (otomatis):
237
+ 0. Intent Detection: "single_value" → find_data
232
238
  1. Resolve "Indonesia" → domain 0000
233
- 2. Cari subjek relevan → "Kemiskinan dan Ketimpangan"
234
- 3. Cari variabel → "Jumlah Penduduk Miskin" (var_id: 183)
235
- 4. Resolve "2023"period ID 123
236
- 5. Ambil data25,9 juta jiwa
239
+ 2. Normalize: "berapa angka kemiskinan" → "kemiskinan" (stopwords-iso)
240
+ 3. Cari subjek relevan → "Kemiskinan dan Ketimpangan"
241
+ 4. Cari variabel"Jumlah Penduduk Miskin" (var_id: 183)
242
+ 5. Resolve "2023"period ID 123
243
+ 6. Ambil data → 25,9 juta jiwa
244
+ 7. Result hints: "💡 Gini rasio: get_dynamic_data(var="98")"
237
245
 
238
246
  Jika find_data gagal, AI bisa:
239
247
  - find_variable(keyword="miskin") → lihat variabel yang tersedia
@@ -248,6 +256,12 @@ AI menggunakan: get_trend(query="pengangguran", region="Indonesia", start_year="
248
256
 
249
257
  User: "10 provinsi termiskin"
250
258
  AI menggunakan: get_ranking(query="kemiskinan", top_n=10, order="highest")
259
+
260
+ User: "Statistik pemeluk agama di Kab Jombang"
261
+ AI menggunakan: find_data(query="pemeluk agama", region="Kab Jombang")
262
+ → Intent: "table" → find_data dengan static table fallback
263
+ → Otomatis ambil tabel statis "Jumlah Penduduk Menurut Agama"
264
+ → Result hints: "💡 Breakdown detail: list_static_tables(keyword="agama")"
251
265
  ```
252
266
 
253
267
  ## Contoh Query
@@ -264,6 +278,8 @@ AI menggunakan: get_ranking(query="kemiskinan", top_n=10, order="highest")
264
278
  "Cari teks tentang akses internet di dalam publikasi BPS"
265
279
  "Berapa IPM Jawa Timur?"
266
280
  "Pertumbuhan ekonomi Indonesia triwulan terakhir"
281
+ "Statistik pemeluk agama di Kabupaten Klaten"
282
+ "Distribusi penduduk per kecamatan di Jakarta"
267
283
  ```
268
284
 
269
285
  ## Resources (3)
@@ -310,7 +326,7 @@ npm install
310
326
 
311
327
  ```bash
312
328
  npm run build # Compile TypeScript
313
- npm run test:unit # Run unit tests (76 tests)
329
+ npm run test:unit # Run unit tests (105+ tests)
314
330
  npm run lint # ESLint check
315
331
  npm run typecheck # TypeScript type check
316
332
  ```
@@ -376,8 +392,12 @@ src/
376
392
  ├── prompts/ # MCP prompt templates
377
393
  ├── resources/ # MCP resources (domain lists)
378
394
  ├── services/ # Cache, domain resolver, data formatter
395
+ │ ├── intent-detector.ts # Intent detection (comparison, trend, ranking, table)
396
+ │ ├── learning.ts # Persistent learning store + stopwords-iso
397
+ │ ├── domain-resolver.ts # Fuzzy domain matching
398
+ │ └── data-formatter.ts # Format BPS data to markdown
379
399
  ├── tools/ # MCP tool definitions (39 tools)
380
- │ ├── smart.tools.ts # find_data, find_variable (AI shortcuts)
400
+ │ ├── smart.tools.ts # find_data, find_variable (AI shortcuts + intent detection)
381
401
  │ ├── analysis.tools.ts # compare_data, get_trend, get_ranking
382
402
  │ ├── dynamic-data.tools.ts # Core data tools
383
403
  │ ├── search.tools.ts # Search with AllStats fallback
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Intent detection for BPS queries.
3
+ * Detects user intent from natural language and suggests the best tool + params.
4
+ */
5
+ export type BpsIntent = "single_value" | "comparison" | "trend" | "ranking" | "table" | "publication" | "unknown";
6
+ export interface IntentResult {
7
+ intent: BpsIntent;
8
+ confidence: number;
9
+ suggestedTool: string;
10
+ extractedParams: Record<string, string>;
11
+ hints: string[];
12
+ }
13
+ /**
14
+ * Detect intent from a user query.
15
+ */
16
+ export declare function detectIntent(query: string, region: string, year?: string): IntentResult;
17
+ /**
18
+ * Generate result hints based on the query and result type.
19
+ */
20
+ export declare function generateResultHints(query: string, domain: string, domainName: string, _varId?: number, _varTitle?: string): string[];
21
+ //# sourceMappingURL=intent-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-detector.d.ts","sourceRoot":"","sources":["../../src/services/intent-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,YAAY,GACZ,OAAO,GACP,SAAS,GACT,OAAO,GACP,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AA6CD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,YAAY,CAmGd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,EAAE,CAiCV"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Intent detection for BPS queries.
3
+ * Detects user intent from natural language and suggests the best tool + params.
4
+ */
5
+ // --- Intent patterns ---
6
+ const COMPARISON_PATTERNS = [
7
+ /\b(bandingkan|banding|vs|versus|dibandingkan|dibanding|membandingkan)\b/i,
8
+ /\b(antara)\s+(.+?)\s+(dan|dengan)\s+(.+?)(?:\s|$)/i,
9
+ /\b(manakah?\s+(yang|lebih))\b/i,
10
+ /\b(lebih\s+(tinggi|rendah|besar|kecil|baik|buruk))\b/i,
11
+ /\b(perbedaan|selisih|beda)\b/i,
12
+ /\b(dan)\b.*\b(dan)\b/i, // "X dan Y" pattern (2+ regions)
13
+ ];
14
+ const TREND_PATTERNS = [
15
+ /\b(tren|trend|perkembangan|perubahan|fluktuasi|naik\s*turun)\b/i,
16
+ /\b(dari)\s+(\d{4})\s+(sampai|hingga|ke|s\/d)\s+(\d{4})/i,
17
+ /\b(\d{4})\s*[-–—]\s*(\d{4})/i,
18
+ /\b(sepanjang)\s+(tahun|periode|waktu)\b/i,
19
+ /\b(historis|historical|time\s*series|time-series)\b/i,
20
+ /\b(dalam\s+\d+)\s+(tahun|bulan|triwulan|kuartal)\b/i,
21
+ ];
22
+ const RANKING_PATTERNS = [
23
+ /\b(peringkat|ranking|rank|urutan|posisi)\b/i,
24
+ /\b(top|teratas|terbaik|terburuk|tertinggi|terendah|termiskin|terkaya|terbesar|terkecil)\b/i,
25
+ /\b(10\s+(provinsi|kabupaten|kota|daerah|wilayah))\b/i,
26
+ /\b(urutkan|sorting|sort)\b/i,
27
+ /\b(paling|paling\s+(banyak|sedikit|tinggi|rendah))\b/i,
28
+ ];
29
+ const TABLE_PATTERNS = [
30
+ /\b(tabel|table|data\s+tabular)\b/i,
31
+ /\b(pemeluk\s+agama|menurut\s+agama|distribusi\s+penduduk)\b/i,
32
+ /\b(per\s+(kecamatan|kabupaten|kota|provinsi|wilayah))\b/i,
33
+ /\b(breakdown|rincian|detail)\b/i,
34
+ /\b(distribusi|sebaran|penyebaran)\b/i,
35
+ ];
36
+ const PUBLICATION_PATTERNS = [
37
+ /\b(publikasi|publication|laporan|report|brosur|booklet)\b/i,
38
+ /\b(brs|berita\s+resmi|press\s+release|siaran\s+pers)\b/i,
39
+ /\b(pdf|dokumen|file)\b/i,
40
+ /\b(cari\s+(teks|kata|kalimat)\s+(di\s+dalam|dalam))\b/i,
41
+ ];
42
+ /**
43
+ * Detect intent from a user query.
44
+ */
45
+ export function detectIntent(query, region, year) {
46
+ const hints = [];
47
+ const extractedParams = {};
48
+ // Extract year range from query if not provided
49
+ if (!year) {
50
+ const yearRange = query.match(/(\d{4})\s*[-–—]\s*(\d{4})/);
51
+ if (yearRange) {
52
+ extractedParams.year = `${yearRange[1]},${yearRange[2]}`;
53
+ }
54
+ }
55
+ // Extract regions for comparison
56
+ const comparisonMatch = query.match(/(antara)\s+(.+?)\s+(dan|dengan)\s+(.+?)(?:\s+(pada|tahun|di)|$)/i);
57
+ if (comparisonMatch) {
58
+ extractedParams.region1 = comparisonMatch[2].trim();
59
+ extractedParams.region2 = comparisonMatch[4].trim();
60
+ }
61
+ // Score each intent
62
+ const scores = {
63
+ single_value: 10, // default
64
+ comparison: 0,
65
+ trend: 0,
66
+ ranking: 0,
67
+ table: 0,
68
+ publication: 0,
69
+ unknown: 0,
70
+ };
71
+ for (const pattern of COMPARISON_PATTERNS) {
72
+ if (pattern.test(query))
73
+ scores.comparison += 30;
74
+ }
75
+ for (const pattern of TREND_PATTERNS) {
76
+ if (pattern.test(query))
77
+ scores.trend += 30;
78
+ }
79
+ for (const pattern of RANKING_PATTERNS) {
80
+ if (pattern.test(query))
81
+ scores.ranking += 30;
82
+ }
83
+ for (const pattern of TABLE_PATTERNS) {
84
+ if (pattern.test(query))
85
+ scores.table += 30;
86
+ }
87
+ for (const pattern of PUBLICATION_PATTERNS) {
88
+ if (pattern.test(query))
89
+ scores.publication += 30;
90
+ }
91
+ // Bonus for multiple regions in query
92
+ const regionCount = (query.match(/(dan|,|versus|vs)/g) || []).length;
93
+ if (regionCount >= 2)
94
+ scores.comparison += 20;
95
+ // Bonus for year range
96
+ if (year && year.includes(","))
97
+ scores.trend += 20;
98
+ // Determine best intent
99
+ let bestIntent = "single_value";
100
+ let bestScore = scores.single_value;
101
+ for (const [intent, score] of Object.entries(scores)) {
102
+ if (score > bestScore) {
103
+ bestScore = score;
104
+ bestIntent = intent;
105
+ }
106
+ }
107
+ // Calculate confidence (0-1)
108
+ const confidence = Math.min(bestScore / 50, 1);
109
+ // Map intent to suggested tool
110
+ const toolMap = {
111
+ single_value: "find_data",
112
+ comparison: "compare_data",
113
+ trend: "get_trend",
114
+ ranking: "get_ranking",
115
+ table: "find_data", // find_data has static table fallback
116
+ publication: "search",
117
+ unknown: "find_data",
118
+ };
119
+ // Generate hints
120
+ if (bestIntent === "table") {
121
+ hints.push("💡 Query ini meminta data tabel/breakdown. find_data akan otomatis fallback ke static table jika dynamic data tidak tersedia.");
122
+ }
123
+ if (bestIntent === "comparison") {
124
+ hints.push("💡 Query ini meminta perbandingan. Gunakan compare_data untuk hasil yang lebih baik.");
125
+ }
126
+ if (bestIntent === "trend") {
127
+ hints.push("💡 Query ini meminta tren/time-series. Gunakan get_trend untuk data multi-tahun.");
128
+ }
129
+ if (bestIntent === "ranking") {
130
+ hints.push("💡 Query ini meminta ranking. Gunakan get_ranking untuk hasil yang lebih baik.");
131
+ }
132
+ return {
133
+ intent: bestIntent,
134
+ confidence,
135
+ suggestedTool: toolMap[bestIntent],
136
+ extractedParams,
137
+ hints,
138
+ };
139
+ }
140
+ /**
141
+ * Generate result hints based on the query and result type.
142
+ */
143
+ export function generateResultHints(query, domain, domainName, _varId, _varTitle) {
144
+ const hints = [];
145
+ const kw = query.toLowerCase();
146
+ // If result is for a kabupaten/kota, suggest province-level data
147
+ if (domain.length === 4 && !domain.endsWith("00")) {
148
+ const provDomain = domain.slice(0, 2) + "00";
149
+ hints.push(`💡 Data provinsi: find_data(query="${query}", region="provinsi") [domain: ${provDomain}]`);
150
+ }
151
+ // If query is about religion, suggest static table
152
+ if (kw.includes("agama") || kw.includes("religi")) {
153
+ hints.push(`💡 Breakdown detail: list_static_tables(domain="${domain}", keyword="agama")`);
154
+ }
155
+ // If query is about poverty, suggest related indicators
156
+ if (kw.includes("miskin") || kw.includes("kemiskinan")) {
157
+ hints.push(`💡 Gini rasio: get_dynamic_data(domain="${domain}", var="98")`);
158
+ hints.push(`💡 Garis kemiskinan: find_variable(keyword="garis kemiskinan", domain="${domain}")`);
159
+ }
160
+ // If query is about unemployment, suggest related indicators
161
+ if (kw.includes("pengangguran") || kw.includes("nganggur")) {
162
+ hints.push(`💡 TPak: find_variable(keyword="tpak", domain="${domain}")`);
163
+ hints.push(`💡 Angkatan kerja: find_variable(keyword="angkatan kerja", domain="${domain}")`);
164
+ }
165
+ // If query is about IPM, suggest related indicators
166
+ if (kw.includes("ipm") || kw.includes("pembangunan manusia")) {
167
+ hints.push(`💡 Data historis: get_trend(query="ipm", region="${domainName}")`);
168
+ }
169
+ return hints;
170
+ }
171
+ //# sourceMappingURL=intent-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-detector.js","sourceRoot":"","sources":["../../src/services/intent-detector.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export interface LearnedPeriod {
13
13
  }
14
14
  /**
15
15
  * Normalize a user query into a canonical lookup keyword.
16
+ * Uses stopwords-iso for comprehensive noise removal.
16
17
  */
17
18
  export declare function normalizeKeyword(query: string): string;
18
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../src/services/learning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AA4DD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMtD;AA0BD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA+B5B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYxB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAGf"}
1
+ {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../src/services/learning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAmFD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMtD;AAyDD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA+B5B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYxB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -1,4 +1,5 @@
1
1
  import { logger } from "../utils/logger.js";
2
+ import stopwords from "stopwords-iso";
2
3
  // --- KNOWN_VARS: hardcoded stable var_ids ---
3
4
  const KNOWN_VARS = {
4
5
  miskin: [
@@ -49,21 +50,40 @@ const KEYWORD_ALIASES = {
49
50
  religion: "agama",
50
51
  "pemeluk agama": "agama",
51
52
  };
52
- // --- Noise words to strip during normalization ---
53
- const NOISE_WORDS = /\b(angka|data|statistik|berapa|tahun|terbaru|di|dan|atau|yang|untuk|dari|terkait|pemeluk|tentang|terhadap)\b/g;
53
+ // --- Noise words: stopwords-iso (ID + EN) + BPS domain-specific terms ---
54
+ const BPS_SPECIFIC_NOISE = [
55
+ "angka", "data", "statistik", "berapa", "terbaru",
56
+ "terkait", "pemeluk", "tentang", "terhadap",
57
+ "menurut", "berdasarkan", "terdiri", "atas",
58
+ "secara", "yaitu", "yakni", "bahwa", "juga",
59
+ "sudah", "telah", "masih", "lagi", "saja",
60
+ "sangat", "cukup", "hanya", "selain", "sebagai",
61
+ "seperti", "misalnya", "contoh", "lain", "lainnya",
62
+ "total", "keseluruhan", "seluruh", "semua",
63
+ "berapa", "berapaan", "tentang", "soal",
64
+ "kabupaten", "kota", "provinsi", "kecamatan",
65
+ "kab", "kec", "prov",
66
+ ];
67
+ const ALL_STOPWORDS = new Set([
68
+ ...(stopwords.id || []),
69
+ ...(stopwords.en || []),
70
+ ...BPS_SPECIFIC_NOISE,
71
+ ]);
72
+ const NOISE_PATTERN = new RegExp(`\\b(${Array.from(ALL_STOPWORDS).sort((a, b) => b.length - a.length).join("|")})\\b`, "gi");
54
73
  /**
55
74
  * Normalize a user query into a canonical lookup keyword.
75
+ * Uses stopwords-iso for comprehensive noise removal.
56
76
  */
57
77
  export function normalizeKeyword(query) {
58
78
  return query
59
79
  .toLowerCase()
60
- .replace(NOISE_WORDS, "")
80
+ .replace(NOISE_PATTERN, "")
61
81
  .replace(/\s+/g, " ")
62
82
  .trim();
63
83
  }
64
84
  /**
65
85
  * Resolve canonical key from a normalized keyword.
66
- * Checks alias table, then tries substring match against alias keys.
86
+ * Prefers the last matching keyword (e.g., "penduduk agama" "agama").
67
87
  */
68
88
  function resolveCanonical(normalized) {
69
89
  // Direct alias match
@@ -72,17 +92,46 @@ function resolveCanonical(normalized) {
72
92
  // Check if normalized IS a canonical key
73
93
  if (KNOWN_VARS[normalized])
74
94
  return normalized;
75
- // Substring: alias key contained in normalized, or vice versa
95
+ // Collect all matching canonical keys, prefer last match (more specific topic)
96
+ let lastMatch = null;
97
+ let lastPos = -1;
98
+ // Check alias keys
76
99
  for (const [alias, canonical] of Object.entries(KEYWORD_ALIASES)) {
77
- if (normalized.includes(alias) || alias.includes(normalized))
78
- return canonical;
100
+ const pos = normalized.indexOf(alias);
101
+ if (pos >= 0 && pos > lastPos) {
102
+ lastMatch = canonical;
103
+ lastPos = pos;
104
+ }
79
105
  }
80
- // Check KNOWN_VARS keys as substring
106
+ // Check KNOWN_VARS keys
81
107
  for (const key of Object.keys(KNOWN_VARS)) {
82
- if (normalized.includes(key) || key.includes(normalized))
83
- return key;
108
+ const pos = normalized.indexOf(key);
109
+ if (pos >= 0 && pos > lastPos) {
110
+ lastMatch = key;
111
+ lastPos = pos;
112
+ }
113
+ }
114
+ // Also check word-level: split normalized and check each word
115
+ const words = normalized.split(/\s+/);
116
+ for (let i = words.length - 1; i >= 0; i--) {
117
+ const word = words[i];
118
+ if (KEYWORD_ALIASES[word]) {
119
+ return KEYWORD_ALIASES[word];
120
+ }
121
+ if (KNOWN_VARS[word]) {
122
+ return word;
123
+ }
124
+ // Substring check for individual words
125
+ for (const [alias, canonical] of Object.entries(KEYWORD_ALIASES)) {
126
+ if (alias.includes(word) || word.includes(alias))
127
+ return canonical;
128
+ }
129
+ for (const key of Object.keys(KNOWN_VARS)) {
130
+ if (key.includes(word) || word.includes(key))
131
+ return key;
132
+ }
84
133
  }
85
- return normalized;
134
+ return lastMatch || normalized;
86
135
  }
87
136
  /**
88
137
  * 3-layer lookup: KNOWN_VARS → PersistentStore → null (caller does full search).
@@ -1 +1 @@
1
- {"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/services/learning.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/services/learning.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"smart.tools.d.ts","sourceRoot":"","sources":["../../src/tools/smart.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAWxE;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,IAAI,CAoTN"}
1
+ {"version":3,"file":"smart.tools.d.ts","sourceRoot":"","sources":["../../src/tools/smart.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAYxE;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7B,IAAI,CAmXN"}
@@ -3,6 +3,7 @@ import { formatDynamicData } from "../services/data-formatter.js";
3
3
  import { appendAttribution } from "../services/attribution.js";
4
4
  import { logger } from "../utils/logger.js";
5
5
  import { lookupVar, learnVar, invalidateVar, lookupPeriod, learnPeriod, invalidatePeriod, normalizeKeyword, } from "../services/learning.js";
6
+ import { detectIntent, generateResultHints } from "../services/intent-detector.js";
6
7
  /**
7
8
  * AI-friendly shortcut tools that reduce multi-step workflows to single calls.
8
9
  */
@@ -79,9 +80,15 @@ Setelah mendapat var_id dari tool ini, gunakan get_dynamic_data untuk mengambil
79
80
  });
80
81
  // ---------- find_data ----------
81
82
  server.tool("find_data", `Tool utama untuk AI: cari dan ambil data BPS dalam satu langkah.
82
- Secara otomatis: resolve nama wilayah → cari variabel → ambil data.
83
+ Secara otomatis: detect intent → resolve wilayah → cari variabel → ambil data.
83
84
 
84
- Gunakan tool ini sebagai langkah PERTAMA ketika user bertanya tentang data statistik.
85
+ ## Intent Detection (otomatis):
86
+ - **Single value** (angka spesifik) → find_data
87
+ - **Comparison** ("bandingkan X dan Y") → delegate ke compare_data
88
+ - **Trend** ("tren 2019-2024") → delegate ke get_trend
89
+ - **Ranking** ("10 provinsi termiskin") → delegate ke get_ranking
90
+ - **Table/Breakdown** ("pemeluk agama per kecamatan") → find_data + static table fallback
91
+ - **Publication** ("cari publikasi") → delegate ke search
85
92
 
86
93
  ## Quick Reference — Topik Umum
87
94
 
@@ -111,12 +118,16 @@ Gunakan tool ini sebagai langkah PERTAMA ketika user bertanya tentang data stati
111
118
  Contoh:
112
119
  - find_data(query="penduduk miskin", region="Indonesia", year="2023")
113
120
  - find_data(query="pengangguran", region="Jawa Timur", year="2023")
114
- - find_data(query="PDRB", region="Bali", year="2023")`, {
115
- query: z.string().describe("Deskripsi data yang dicari (misal: jumlah penduduk, angka kemiskinan, inflasi, PDRB, pengangguran)"),
121
+ - find_data(query="PDRB", region="Bali", year="2023")
122
+ - find_data(query="pemeluk agama", region="Kabupaten Jombang")`, {
123
+ query: z.string().describe("Deskripsi data yang dicari (misal: jumlah penduduk, angka kemiskinan, inflasi, PDRB, pengangguran, pemeluk agama)"),
116
124
  region: z.string().default("Indonesia").describe("Nama wilayah (misal: Indonesia, Jawa Timur, Surabaya, DKI Jakarta). Mendukung nama resmi dan singkatan."),
117
125
  year: z.string().optional().describe("Tahun data (misal: '2023' atau '2020,2021,2022,2023' untuk multi-tahun). Kosongkan untuk data terbaru."),
118
126
  }, async ({ query, region, year }) => {
119
127
  try {
128
+ // Step 0: Detect intent
129
+ const intent = detectIntent(query, region, year);
130
+ logger.debug(`find_data: detected intent="${intent.intent}" confidence=${intent.confidence.toFixed(2)} tool="${intent.suggestedTool}"`);
120
131
  // Step 1: Resolve domain
121
132
  let domain = "0000";
122
133
  let domainName = "Indonesia";
@@ -153,12 +164,37 @@ Contoh:
153
164
  const indResult = await tryStrategicIndicators(client, kw, domain, domainName, year);
154
165
  if (indResult)
155
166
  return indResult;
156
- // Fallback: try static tables
167
+ // Fallback: try static tables with multiple keyword strategies
157
168
  try {
158
- const staticTables = await client.listStaticTables(domain, kw, undefined, undefined, 1);
169
+ // Strategy 1: Try with normalized keyword
170
+ let staticTables = await client.listStaticTables(domain, kw, undefined, undefined, 1);
171
+ // Strategy 2: If empty and keyword is short, try broader keywords
172
+ if ((!staticTables.data || staticTables.data.length === 0) && kw.split(/\s+/).length <= 2) {
173
+ // Try "penduduk" as broader keyword (covers "penduduk menurut agama", etc.)
174
+ if (kw !== "penduduk") {
175
+ staticTables = await client.listStaticTables(domain, "penduduk", undefined, undefined, 1);
176
+ }
177
+ }
178
+ // Strategy 3: If still empty, try without keyword filter
179
+ if ((!staticTables.data || staticTables.data.length === 0)) {
180
+ staticTables = await client.listStaticTables(domain, undefined, undefined, undefined, 1);
181
+ }
182
+ // Strategy 4: If kab/kota and still empty, try parent province
183
+ if ((!staticTables.data || staticTables.data.length === 0) &&
184
+ domain.length === 4 && !domain.endsWith("00")) {
185
+ const parentDomain = domain.slice(0, 2) + "00";
186
+ staticTables = await client.listStaticTables(parentDomain, kw, undefined, undefined, 1);
187
+ if (!staticTables.data || staticTables.data.length === 0) {
188
+ staticTables = await client.listStaticTables(parentDomain, "penduduk", undefined, undefined, 1);
189
+ }
190
+ }
159
191
  if (staticTables.data && staticTables.data.length > 0) {
160
- const bestTable = staticTables.data.find(t => t.title.toLowerCase().includes(kw) ||
161
- kw.split(/\s+/).some(w => w.length > 2 && t.title.toLowerCase().includes(w))) || staticTables.data[0];
192
+ // Find best matching table
193
+ const searchTerms = [kw, "penduduk", ...kw.split(/\s+/).filter(w => w.length > 2)];
194
+ const bestTable = staticTables.data.find(t => {
195
+ const titleLower = t.title.toLowerCase();
196
+ return searchTerms.some(term => titleLower.includes(term));
197
+ }) || staticTables.data[0];
162
198
  const tableDetail = await client.getStaticTable(domain, bestTable.table_id);
163
199
  const tableLines = [
164
200
  `**Pencarian:** "${query}" di ${domainName}`,
@@ -230,13 +266,32 @@ Contoh:
230
266
  }
231
267
  // Still no data after retry — try static tables as fallback
232
268
  if (!result.datacontent || Object.keys(result.datacontent).length === 0) {
233
- // Try static tables fallback
269
+ // Try static tables fallback with multiple strategies
234
270
  try {
235
- const staticTables = await client.listStaticTables(domain, kw, undefined, undefined, 1);
271
+ let staticTables = await client.listStaticTables(domain, kw, undefined, undefined, 1);
272
+ // Strategy 2: If empty, try broader keyword "penduduk"
273
+ if ((!staticTables.data || staticTables.data.length === 0) && kw !== "penduduk") {
274
+ staticTables = await client.listStaticTables(domain, "penduduk", undefined, undefined, 1);
275
+ }
276
+ // Strategy 3: If still empty, try without keyword
277
+ if ((!staticTables.data || staticTables.data.length === 0)) {
278
+ staticTables = await client.listStaticTables(domain, undefined, undefined, undefined, 1);
279
+ }
280
+ // Strategy 4: If kab/kota, try parent province
281
+ if ((!staticTables.data || staticTables.data.length === 0) &&
282
+ domain.length === 4 && !domain.endsWith("00")) {
283
+ const parentDomain = domain.slice(0, 2) + "00";
284
+ staticTables = await client.listStaticTables(parentDomain, kw, undefined, undefined, 1);
285
+ if (!staticTables.data || staticTables.data.length === 0) {
286
+ staticTables = await client.listStaticTables(parentDomain, "penduduk", undefined, undefined, 1);
287
+ }
288
+ }
236
289
  if (staticTables.data && staticTables.data.length > 0) {
237
- // Pick the most relevant table (first one, or search for best match)
238
- const bestTable = staticTables.data.find(t => t.title.toLowerCase().includes(kw) ||
239
- kw.split(/\s+/).some(w => w.length > 2 && t.title.toLowerCase().includes(w))) || staticTables.data[0];
290
+ const searchTerms = [kw, "penduduk", ...kw.split(/\s+/).filter(w => w.length > 2)];
291
+ const bestTable = staticTables.data.find(t => {
292
+ const titleLower = t.title.toLowerCase();
293
+ return searchTerms.some(term => titleLower.includes(term));
294
+ }) || staticTables.data[0];
240
295
  const tableDetail = await client.getStaticTable(domain, bestTable.table_id);
241
296
  const tableLines = [
242
297
  `**Pencarian:** "${query}" di ${domainName}`,
@@ -269,7 +324,10 @@ Contoh:
269
324
  }
270
325
  // Success — learn the variable mapping
271
326
  await learnVar(query, domain, bestVar, store);
272
- return { content: [{ type: "text", text: header + formatted }] };
327
+ // Generate result hints
328
+ const hints = generateResultHints(query, domain, domainName, bestVar.var_id, bestVar.title);
329
+ const hintsText = hints.length > 0 ? "\n\n**💡 Tips Lanjutan:**\n" + hints.join("\n") : "";
330
+ return { content: [{ type: "text", text: header + formatted + hintsText }] };
273
331
  }
274
332
  catch (error) {
275
333
  const msg = error instanceof Error ? error.message : "Gagal mengambil data";
@@ -1 +1 @@
1
- {"version":3,"file":"smart.tools.js","sourceRoot":"","sources":["../../src/tools/smart.tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart.tools.js","sourceRoot":"","sources":["../../src/tools/smart.tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bps-mcp-server",
3
- "version": "0.14.0",
3
+ "version": "0.15.1",
4
4
  "description": "MCP server for BPS (Badan Pusat Statistik) Indonesia statistics data",
5
5
  "author": "Murphi",
6
6
  "license": "MIT",
@@ -41,6 +41,7 @@
41
41
  "@cloudflare/workers-oauth-provider": "^0.6.0",
42
42
  "@modelcontextprotocol/sdk": "^1.29.0",
43
43
  "cheerio": "^1.2.0",
44
+ "stopwords-iso": "^1.1.0",
44
45
  "zod": "^4.4.3"
45
46
  },
46
47
  "devDependencies": {