mcp-cnbs 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/License +201 -0
- package/README.md +226 -0
- package/README.zh-CN.md +225 -0
- package/dist/constants/index.d.ts +3 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +3 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/regions.d.ts +16 -0
- package/dist/constants/regions.d.ts.map +1 -0
- package/dist/constants/regions.js +68 -0
- package/dist/constants/regions.js.map +1 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +7 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +306 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +44 -0
- package/dist/server.js.map +1 -0
- package/dist/services/api.d.ts +47 -0
- package/dist/services/api.d.ts.map +1 -0
- package/dist/services/api.js +434 -0
- package/dist/services/api.js.map +1 -0
- package/dist/services/cache.d.ts +48 -0
- package/dist/services/cache.d.ts.map +1 -0
- package/dist/services/cache.js +215 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/data.d.ts +16 -0
- package/dist/services/data.d.ts.map +1 -0
- package/dist/services/data.js +90 -0
- package/dist/services/data.js.map +1 -0
- package/dist/services/error.d.ts +44 -0
- package/dist/services/error.d.ts.map +1 -0
- package/dist/services/error.js +171 -0
- package/dist/services/error.js.map +1 -0
- package/dist/services/search.d.ts +18 -0
- package/dist/services/search.d.ts.map +1 -0
- package/dist/services/search.js +39 -0
- package/dist/services/search.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +686 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +182 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/worker.d.ts +17 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +262 -0
- package/dist/worker.js.map +1 -0
- package/llms.txt +603 -0
- package/package.json +63 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export const CNBS_REGIONS = [
|
|
2
|
+
{ code: '000000000000', name: '全国', shortName: '全国', level: 'province' },
|
|
3
|
+
{ code: '110000000000', name: '北京市', shortName: '北京', level: 'province' },
|
|
4
|
+
{ code: '120000000000', name: '天津市', shortName: '天津', level: 'province' },
|
|
5
|
+
{ code: '130000000000', name: '河北省', shortName: '河北', level: 'province' },
|
|
6
|
+
{ code: '140000000000', name: '山西省', shortName: '山西', level: 'province' },
|
|
7
|
+
{ code: '150000000000', name: '内蒙古自治区', shortName: '内蒙古', level: 'province' },
|
|
8
|
+
{ code: '210000000000', name: '辽宁省', shortName: '辽宁', level: 'province' },
|
|
9
|
+
{ code: '220000000000', name: '吉林省', shortName: '吉林', level: 'province' },
|
|
10
|
+
{ code: '230000000000', name: '黑龙江省', shortName: '黑龙江', level: 'province' },
|
|
11
|
+
{ code: '310000000000', name: '上海市', shortName: '上海', level: 'province' },
|
|
12
|
+
{ code: '320000000000', name: '江苏省', shortName: '江苏', level: 'province' },
|
|
13
|
+
{ code: '330000000000', name: '浙江省', shortName: '浙江', level: 'province' },
|
|
14
|
+
{ code: '340000000000', name: '安徽省', shortName: '安徽', level: 'province' },
|
|
15
|
+
{ code: '350000000000', name: '福建省', shortName: '福建', level: 'province' },
|
|
16
|
+
{ code: '360000000000', name: '江西省', shortName: '江西', level: 'province' },
|
|
17
|
+
{ code: '370000000000', name: '山东省', shortName: '山东', level: 'province' },
|
|
18
|
+
{ code: '410000000000', name: '河南省', shortName: '河南', level: 'province' },
|
|
19
|
+
{ code: '420000000000', name: '湖北省', shortName: '湖北', level: 'province' },
|
|
20
|
+
{ code: '430000000000', name: '湖南省', shortName: '湖南', level: 'province' },
|
|
21
|
+
{ code: '440000000000', name: '广东省', shortName: '广东', level: 'province' },
|
|
22
|
+
{ code: '450000000000', name: '广西壮族自治区', shortName: '广西', level: 'province' },
|
|
23
|
+
{ code: '460000000000', name: '海南省', shortName: '海南', level: 'province' },
|
|
24
|
+
{ code: '500000000000', name: '重庆市', shortName: '重庆', level: 'province' },
|
|
25
|
+
{ code: '510000000000', name: '四川省', shortName: '四川', level: 'province' },
|
|
26
|
+
{ code: '520000000000', name: '贵州省', shortName: '贵州', level: 'province' },
|
|
27
|
+
{ code: '530000000000', name: '云南省', shortName: '云南', level: 'province' },
|
|
28
|
+
{ code: '540000000000', name: '西藏自治区', shortName: '西藏', level: 'province' },
|
|
29
|
+
{ code: '610000000000', name: '陕西省', shortName: '陕西', level: 'province' },
|
|
30
|
+
{ code: '620000000000', name: '甘肃省', shortName: '甘肃', level: 'province' },
|
|
31
|
+
{ code: '630000000000', name: '青海省', shortName: '青海', level: 'province' },
|
|
32
|
+
{ code: '640000000000', name: '宁夏回族自治区', shortName: '宁夏', level: 'province' },
|
|
33
|
+
{ code: '650000000000', name: '新疆维吾尔自治区', shortName: '新疆', level: 'province' },
|
|
34
|
+
{ code: '710000000000', name: '台湾省', shortName: '台湾', level: 'province' },
|
|
35
|
+
{ code: '810000000000', name: '香港特别行政区', shortName: '香港', level: 'province' },
|
|
36
|
+
{ code: '820000000000', name: '澳门特别行政区', shortName: '澳门', level: 'province' },
|
|
37
|
+
];
|
|
38
|
+
export const CNBS_CATEGORY_INFO = {
|
|
39
|
+
'1': { name: '月度数据', code: '1', dtType: 'MM' },
|
|
40
|
+
'2': { name: '季度数据', code: '2', dtType: 'SS' },
|
|
41
|
+
'3': { name: '年度数据', code: '3', dtType: 'YY' },
|
|
42
|
+
'5': { name: '分省季度数据', code: '5', dtType: 'SS' },
|
|
43
|
+
'6': { name: '分省年度数据', code: '6', dtType: 'YY' },
|
|
44
|
+
'7': { name: '其他数据', code: '7', dtType: 'YY' },
|
|
45
|
+
'8': { name: '主要城市年度数据', code: '8', dtType: 'YY' },
|
|
46
|
+
'9': { name: '港澳台月度数据', code: '9', dtType: 'MM' },
|
|
47
|
+
'10': { name: '港澳台年度数据', code: '10', dtType: 'YY' },
|
|
48
|
+
'11': { name: '主要国家(地区)月度数据', code: '11', dtType: 'MM' },
|
|
49
|
+
'12': { name: '三大经济体月度数据', code: '12', dtType: 'MM' },
|
|
50
|
+
'14': { name: '主要国家(地区)年度数据', code: '14', dtType: 'YY' },
|
|
51
|
+
'32': { name: '澳门特别行政区年度数据', code: '32', dtType: 'YY' },
|
|
52
|
+
};
|
|
53
|
+
export function getRegionByCode(code) {
|
|
54
|
+
return CNBS_REGIONS.find(r => r.code === code);
|
|
55
|
+
}
|
|
56
|
+
export function getRegionByName(name) {
|
|
57
|
+
return CNBS_REGIONS.find(r => r.name === name ||
|
|
58
|
+
r.shortName === name ||
|
|
59
|
+
r.name.includes(name) ||
|
|
60
|
+
name.includes(r.shortName));
|
|
61
|
+
}
|
|
62
|
+
export function searchRegions(keyword) {
|
|
63
|
+
const lowerKeyword = keyword.toLowerCase();
|
|
64
|
+
return CNBS_REGIONS.filter(r => r.name.toLowerCase().includes(lowerKeyword) ||
|
|
65
|
+
r.shortName.toLowerCase().includes(lowerKeyword) ||
|
|
66
|
+
r.code.includes(keyword));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=regions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regions.js","sourceRoot":"","sources":["../../src/constants/regions.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACxE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;IAC7E,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;IAC3E,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IAC7E,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IACzE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE;IAC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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const CNBS_API_BASE = "https://data.stats.gov.cn/dg/website/publicrelease/web/external";
|
|
2
|
+
export declare const CNBS_TEXT_LIMIT = 25000;
|
|
3
|
+
export declare const CNBS_NODE_CACHE_TTL: number;
|
|
4
|
+
export declare const CNBS_METRIC_CACHE_TTL: number;
|
|
5
|
+
export declare const CNBS_DATA_CACHE_TTL: number;
|
|
6
|
+
export declare const CNBS_DEFAULT_ROOT = "fc982599aa684be7969d7b90b1bd0e84";
|
|
7
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,oEAAoE,CAAC;AAE/F,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,eAAO,MAAM,mBAAmB,QAAsB,CAAC;AACvD,eAAO,MAAM,qBAAqB,QAAsB,CAAC;AACzD,eAAO,MAAM,mBAAmB,QAAiB,CAAC;AAElD,eAAO,MAAM,iBAAiB,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const CNBS_API_BASE = 'https://data.stats.gov.cn/dg/website/publicrelease/web/external';
|
|
2
|
+
export const CNBS_TEXT_LIMIT = 25000;
|
|
3
|
+
export const CNBS_NODE_CACHE_TTL = 24 * 60 * 60 * 1000;
|
|
4
|
+
export const CNBS_METRIC_CACHE_TTL = 12 * 60 * 60 * 1000;
|
|
5
|
+
export const CNBS_DATA_CACHE_TTL = 60 * 60 * 1000;
|
|
6
|
+
export const CNBS_DEFAULT_ROOT = 'fc982599aa684be7969d7b90b1bd0e84';
|
|
7
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,iEAAiE,CAAC;AAE/F,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAG,kCAAkC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
4
|
+
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import http from 'http';
|
|
7
|
+
import { createCnbsServer } from './server.js';
|
|
8
|
+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
function checkAuth(authToken, authHeader) {
|
|
10
|
+
if (!authToken) {
|
|
11
|
+
return { authorized: true };
|
|
12
|
+
}
|
|
13
|
+
if (!authHeader) {
|
|
14
|
+
return { authorized: false, error: 'Missing Authorization header. Please provide: Authorization: Bearer <token>' };
|
|
15
|
+
}
|
|
16
|
+
const match = authHeader.match(/^Bearer\s+(.+)$/i);
|
|
17
|
+
if (!match) {
|
|
18
|
+
return { authorized: false, error: 'Invalid Authorization format. Use: Bearer <token>' };
|
|
19
|
+
}
|
|
20
|
+
const token = match[1];
|
|
21
|
+
if (token !== authToken) {
|
|
22
|
+
return { authorized: false, error: 'Invalid token. Please check your authentication token.' };
|
|
23
|
+
}
|
|
24
|
+
return { authorized: true };
|
|
25
|
+
}
|
|
26
|
+
const corsHeaders = {
|
|
27
|
+
'Access-Control-Allow-Origin': '*',
|
|
28
|
+
'Access-Control-Allow-Methods': 'GET, POST, DELETE, OPTIONS',
|
|
29
|
+
'Access-Control-Allow-Headers': 'Content-Type, Authorization, Mcp-Session-Id, Mcp-Protocol-Version',
|
|
30
|
+
};
|
|
31
|
+
async function launchCnbsServer() {
|
|
32
|
+
const program = new Command();
|
|
33
|
+
program
|
|
34
|
+
.option('-p, --port <port>', 'Port to listen on for HTTP/SSE mode')
|
|
35
|
+
.option('-H, --host <host>', 'Host to listen on for HTTP/SSE mode', '127.0.0.1')
|
|
36
|
+
.option('-a, --auth-token <token>', 'Authorization token for HTTP mode (or use MCP_CNBS_AUTH_TOKEN env var)')
|
|
37
|
+
.parse();
|
|
38
|
+
const options = program.opts();
|
|
39
|
+
const authToken = options.authToken || process.env.MCP_CNBS_AUTH_TOKEN;
|
|
40
|
+
if (options.port) {
|
|
41
|
+
const port = parseInt(options.port, 10);
|
|
42
|
+
const transports = new Map();
|
|
43
|
+
const sseTransports = new Map();
|
|
44
|
+
if (authToken) {
|
|
45
|
+
console.error(`CNBS MCP HTTP server running on ${options.host}:${port} with authentication enabled`);
|
|
46
|
+
console.error('Authorization: Bearer <token> required');
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
console.error(`CNBS MCP HTTP server running on ${options.host}:${port} (no authentication)`);
|
|
50
|
+
}
|
|
51
|
+
const server = http.createServer(async (req, res) => {
|
|
52
|
+
const url = new URL(req.url || '/', `http://${req.headers.host}`);
|
|
53
|
+
if (req.method === 'OPTIONS') {
|
|
54
|
+
res.writeHead(204, corsHeaders);
|
|
55
|
+
res.end();
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const authResult = checkAuth(authToken, req.headers.authorization);
|
|
59
|
+
if (!authResult.authorized) {
|
|
60
|
+
res.writeHead(401, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
61
|
+
res.end(JSON.stringify({
|
|
62
|
+
jsonrpc: '2.0',
|
|
63
|
+
error: { code: -32600, message: `Authentication failed: ${authResult.error}` },
|
|
64
|
+
id: null
|
|
65
|
+
}));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// SSE endpoint
|
|
69
|
+
if (url.pathname === '/sse' || url.pathname === '/sse/') {
|
|
70
|
+
if (req.method !== 'GET') {
|
|
71
|
+
res.writeHead(405, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
72
|
+
res.end(JSON.stringify({
|
|
73
|
+
jsonrpc: '2.0',
|
|
74
|
+
error: { code: -32601, message: 'Method not allowed. Use GET for SSE endpoint.' },
|
|
75
|
+
id: null
|
|
76
|
+
}));
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const transport = new SSEServerTransport('/message', res);
|
|
80
|
+
sseTransports.set(transport.sessionId, transport);
|
|
81
|
+
res.on('close', () => {
|
|
82
|
+
sseTransports.delete(transport.sessionId);
|
|
83
|
+
});
|
|
84
|
+
const mcpServer = createCnbsServer();
|
|
85
|
+
await mcpServer.connect(transport);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// SSE message endpoint
|
|
89
|
+
if (url.pathname === '/message') {
|
|
90
|
+
if (req.method !== 'POST') {
|
|
91
|
+
res.writeHead(405, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
92
|
+
res.end(JSON.stringify({
|
|
93
|
+
jsonrpc: '2.0',
|
|
94
|
+
error: { code: -32601, message: 'Method not allowed. Use POST for message endpoint.' },
|
|
95
|
+
id: null
|
|
96
|
+
}));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const sessionId = url.searchParams.get('sessionId');
|
|
100
|
+
if (!sessionId) {
|
|
101
|
+
res.writeHead(400, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
102
|
+
res.end(JSON.stringify({
|
|
103
|
+
jsonrpc: '2.0',
|
|
104
|
+
error: { code: -32600, message: 'Missing sessionId parameter' },
|
|
105
|
+
id: null
|
|
106
|
+
}));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const transport = sseTransports.get(sessionId);
|
|
110
|
+
if (!transport) {
|
|
111
|
+
res.writeHead(404, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
112
|
+
res.end(JSON.stringify({
|
|
113
|
+
jsonrpc: '2.0',
|
|
114
|
+
error: { code: -32001, message: 'Session not found' },
|
|
115
|
+
id: null
|
|
116
|
+
}));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
let body = null;
|
|
120
|
+
try {
|
|
121
|
+
body = await new Promise((resolve, reject) => {
|
|
122
|
+
let data = '';
|
|
123
|
+
req.on('data', chunk => data += chunk);
|
|
124
|
+
req.on('end', () => {
|
|
125
|
+
try {
|
|
126
|
+
resolve(JSON.parse(data));
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
resolve(null);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
req.on('error', reject);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
res.writeHead(500, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
137
|
+
res.end(JSON.stringify({
|
|
138
|
+
jsonrpc: '2.0',
|
|
139
|
+
error: { code: -32603, message: 'Internal error reading request body' },
|
|
140
|
+
id: null
|
|
141
|
+
}));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
await transport.handlePostMessage(req, res, body);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
// Streamable HTTP endpoints
|
|
148
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
149
|
+
if (sessionId) {
|
|
150
|
+
const transport = transports.get(sessionId);
|
|
151
|
+
if (!transport) {
|
|
152
|
+
res.writeHead(404, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
153
|
+
res.end(JSON.stringify({
|
|
154
|
+
jsonrpc: '2.0',
|
|
155
|
+
error: { code: -32001, message: 'Session not found. Server not initialized.' },
|
|
156
|
+
id: null
|
|
157
|
+
}));
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (req.method === 'POST') {
|
|
161
|
+
let body = null;
|
|
162
|
+
try {
|
|
163
|
+
body = await new Promise((resolve, reject) => {
|
|
164
|
+
let data = '';
|
|
165
|
+
req.on('data', chunk => data += chunk);
|
|
166
|
+
req.on('end', () => {
|
|
167
|
+
try {
|
|
168
|
+
resolve(JSON.parse(data));
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
resolve(null);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
req.on('error', reject);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
res.writeHead(500, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
179
|
+
res.end(JSON.stringify({
|
|
180
|
+
jsonrpc: '2.0',
|
|
181
|
+
error: { code: -32603, message: 'Internal error reading request body' },
|
|
182
|
+
id: null
|
|
183
|
+
}));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
await transport.handleRequest(req, res, body);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
if (req.method === 'GET') {
|
|
190
|
+
const acceptHeader = req.headers['accept'] || '';
|
|
191
|
+
if (!acceptHeader.includes('text/event-stream')) {
|
|
192
|
+
res.writeHead(406, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
193
|
+
res.end(JSON.stringify({
|
|
194
|
+
jsonrpc: '2.0',
|
|
195
|
+
error: { code: -32600, message: 'Not Acceptable: Client must accept text/event-stream for GET requests' },
|
|
196
|
+
id: null
|
|
197
|
+
}));
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
await transport.handleRequest(req, res);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
if (req.method === 'DELETE') {
|
|
204
|
+
await transport.handleRequest(req, res);
|
|
205
|
+
transports.delete(sessionId);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
res.writeHead(405, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
209
|
+
res.end(JSON.stringify({
|
|
210
|
+
jsonrpc: '2.0',
|
|
211
|
+
error: { code: -32601, message: 'Method not allowed. Use POST, GET, or DELETE.' },
|
|
212
|
+
id: null
|
|
213
|
+
}));
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (req.method === 'POST' && (url.pathname === '/' || url.pathname === '/mcp')) {
|
|
217
|
+
let body;
|
|
218
|
+
try {
|
|
219
|
+
body = await new Promise((resolve, reject) => {
|
|
220
|
+
let data = '';
|
|
221
|
+
req.on('data', chunk => data += chunk);
|
|
222
|
+
req.on('end', () => {
|
|
223
|
+
try {
|
|
224
|
+
resolve(JSON.parse(data));
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
resolve(null);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
req.on('error', reject);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
res.writeHead(500, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
235
|
+
res.end(JSON.stringify({
|
|
236
|
+
jsonrpc: '2.0',
|
|
237
|
+
error: { code: -32603, message: 'Internal error reading request body' },
|
|
238
|
+
id: null
|
|
239
|
+
}));
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
if (!body) {
|
|
243
|
+
res.writeHead(400, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
244
|
+
res.end(JSON.stringify({
|
|
245
|
+
jsonrpc: '2.0',
|
|
246
|
+
error: { code: -32700, message: 'Parse error: Invalid JSON' },
|
|
247
|
+
id: null
|
|
248
|
+
}));
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const messages = Array.isArray(body) ? body : [body];
|
|
252
|
+
const isInit = messages.some((m) => isInitializeRequest(m));
|
|
253
|
+
if (isInit) {
|
|
254
|
+
const transport = new StreamableHTTPServerTransport({
|
|
255
|
+
sessionIdGenerator: () => crypto.randomUUID(),
|
|
256
|
+
onsessioninitialized: (sessionId) => {
|
|
257
|
+
transports.set(sessionId, transport);
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
transport.onclose = () => {
|
|
261
|
+
if (transport.sessionId) {
|
|
262
|
+
transports.delete(transport.sessionId);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
const mcpServer = createCnbsServer();
|
|
266
|
+
await mcpServer.connect(transport);
|
|
267
|
+
await transport.handleRequest(req, res, body);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
res.writeHead(400, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
271
|
+
res.end(JSON.stringify({
|
|
272
|
+
jsonrpc: '2.0',
|
|
273
|
+
error: { code: -32002, message: 'Server not initialized. Send initialize request first.' },
|
|
274
|
+
id: null
|
|
275
|
+
}));
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
if (req.method === 'GET' && (url.pathname === '/' || url.pathname === '/mcp')) {
|
|
279
|
+
res.writeHead(400, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
280
|
+
res.end(JSON.stringify({
|
|
281
|
+
jsonrpc: '2.0',
|
|
282
|
+
error: { code: -32002, message: 'Server not initialized. Send initialize request first.' },
|
|
283
|
+
id: null
|
|
284
|
+
}));
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
res.writeHead(404, { 'Content-Type': 'application/json', ...corsHeaders });
|
|
288
|
+
res.end(JSON.stringify({
|
|
289
|
+
jsonrpc: '2.0',
|
|
290
|
+
error: { code: -32601, message: 'Method not found. Use POST / for Streamable HTTP or GET /sse for SSE.' },
|
|
291
|
+
id: null
|
|
292
|
+
}));
|
|
293
|
+
});
|
|
294
|
+
server.listen(port, options.host);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
const server = createCnbsServer();
|
|
298
|
+
const transport = new StdioServerTransport();
|
|
299
|
+
await server.connect(transport);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
launchCnbsServer().catch((error) => {
|
|
303
|
+
console.error('Failed to launch CNBS server:', error);
|
|
304
|
+
process.exit(1);
|
|
305
|
+
});
|
|
306
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,gBAAgB,cAyC/B"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { registerCnbsTools } from './tools/index.js';
|
|
3
|
+
const CNBS_VERSION = '1.0.0';
|
|
4
|
+
export function createCnbsServer() {
|
|
5
|
+
const server = new McpServer({
|
|
6
|
+
name: 'mcp-cnbs',
|
|
7
|
+
version: CNBS_VERSION,
|
|
8
|
+
});
|
|
9
|
+
server.instructions = `
|
|
10
|
+
该服务用于查询中国国家统计局的统计数据(基于 UUID 标识符的新版 API)。
|
|
11
|
+
|
|
12
|
+
数据查询三步走:
|
|
13
|
+
1. cnbs_search - 关键词搜索, 找到目标数据集的 setId
|
|
14
|
+
2. cnbs_fetch_metrics - 根据 setId 获取指标列表, 找到 metricId
|
|
15
|
+
3. cnbs_fetch_series - 用 setId + metricId + 时间范围查询具体数据
|
|
16
|
+
|
|
17
|
+
核心工具说明:
|
|
18
|
+
- cnbs_search(keyword, sortBy, sortOrder, categories, periodRange): 关键词搜索, 支持排序和过滤
|
|
19
|
+
- cnbs_fetch_nodes(category, parentId?): 浏览分类树, category=1月度/2季度/3年度/5分省季度/6分省年度/7其他。isEnd=true 的 id 即为 setId
|
|
20
|
+
- cnbs_fetch_metrics(setId): 获取某数据集下的所有指标
|
|
21
|
+
- cnbs_fetch_series(setId, metricIds, periods, areas?): 核心数据查询接口
|
|
22
|
+
- cnbs_fetch_end_nodes(category): 递归获取所有叶子节点(耗时, 不建议频繁用)
|
|
23
|
+
- cnbs_format_number(value, precision): 格式化数据值, 支持设置精度
|
|
24
|
+
- cnbs_transform_unit(value, sourceUnit, targetUnit): 在不同单位之间转换数据值
|
|
25
|
+
- cnbs_compute_stats(values): 计算数据的基本统计信息
|
|
26
|
+
- cnbs_get_cache_stats(): 获取缓存使用情况
|
|
27
|
+
- cnbs_flush_caches(): 清除所有缓存数据
|
|
28
|
+
|
|
29
|
+
时间格式:
|
|
30
|
+
- 月度: YYYYMM, 如 202501, 后缀 MM
|
|
31
|
+
- 季度: YYYYQ, 如 20254, 后缀 SS
|
|
32
|
+
- 年度: YYYY, 如 2025, 后缀 YY
|
|
33
|
+
- 范围: Start-End, 如 202501MM-202503MM
|
|
34
|
+
|
|
35
|
+
地区代码:
|
|
36
|
+
- 000000000000 = 全国
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
author's blog is https://log.cns.red
|
|
40
|
+
`;
|
|
41
|
+
registerCnbsTools(server);
|
|
42
|
+
return server;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IAEF,MAAc,CAAC,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BhC,CAAC;IAEA,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { CnbsSeriesQuery, CnbsNodeQuery, CnbsMetricQuery, CnbsSearchQuery, CnbsCategory, CnbsClientConfig, LegacyApiResponse, LegacySearchResult, LegacyParsedResult, LegacyCategoryResponse, LegacyPeriodResponse } from '../types/index.js';
|
|
2
|
+
export declare class CnbsLegacyClient {
|
|
3
|
+
private baseUrl;
|
|
4
|
+
private codeMap;
|
|
5
|
+
find(keyword: string, db?: string, page?: number): Promise<LegacySearchResult>;
|
|
6
|
+
processFindResult(result: LegacySearchResult): LegacyParsedResult[];
|
|
7
|
+
fetchCategories(dbCode: string, dimCode?: string): Promise<LegacyCategoryResponse>;
|
|
8
|
+
fetchEndNodes(dbCode: string): Promise<LegacyCategoryResponse>;
|
|
9
|
+
private fetchSpecificNode;
|
|
10
|
+
fetchPeriodOptions(dbCode: string): Promise<LegacyPeriodResponse>;
|
|
11
|
+
fetchData(metricCode: string, dbCode: string, period?: string): Promise<LegacyApiResponse>;
|
|
12
|
+
batchFetch(queries: Array<{
|
|
13
|
+
metricCode: string;
|
|
14
|
+
dbCode: string;
|
|
15
|
+
period: string;
|
|
16
|
+
}>): Promise<Array<{
|
|
17
|
+
query: {
|
|
18
|
+
metricCode: string;
|
|
19
|
+
dbCode: string;
|
|
20
|
+
period: string;
|
|
21
|
+
};
|
|
22
|
+
result: LegacyApiResponse | null;
|
|
23
|
+
error?: string;
|
|
24
|
+
}>>;
|
|
25
|
+
}
|
|
26
|
+
export declare class CnbsModernClient {
|
|
27
|
+
private baseUrl;
|
|
28
|
+
private timeout;
|
|
29
|
+
private rootId;
|
|
30
|
+
private nodeCache;
|
|
31
|
+
private metricCache;
|
|
32
|
+
private seriesCache;
|
|
33
|
+
constructor(config?: CnbsClientConfig);
|
|
34
|
+
findItems(params: CnbsSearchQuery): Promise<any>;
|
|
35
|
+
batchFindItems(keywords: string[], pageSize?: number): Promise<Record<string, any>>;
|
|
36
|
+
fetchNodes(params: CnbsNodeQuery): Promise<any>;
|
|
37
|
+
fetchAllEndNodes(category: CnbsCategory): Promise<any[]>;
|
|
38
|
+
fetchMetrics(params: CnbsMetricQuery): Promise<any>;
|
|
39
|
+
fetchSeries(params: CnbsSeriesQuery): Promise<any>;
|
|
40
|
+
findAndFetch(keyword: string, metricName?: string, startPeriod?: string, endPeriod?: string): Promise<any>;
|
|
41
|
+
private extractSetIdFromGlobalRef;
|
|
42
|
+
flushAllCaches(): void;
|
|
43
|
+
getCacheStats(): any;
|
|
44
|
+
updateRootId(rootId: string): void;
|
|
45
|
+
fetchRootId(): string;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAuBA,OAAO,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,OAAO,CAGb;IAEI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAE,MAAW,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqB3F,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,EAAE;IAyB7D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAsBxF,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;YAoCtD,iBAAiB;IAsBzB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0BjE,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4BpG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;QACtG,KAAK,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9D,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CAsBJ;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,WAAW,CAAM;gBAEb,MAAM,CAAC,EAAE,gBAAgB;IAwB/B,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAqBhD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAetF,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IA8B/C,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IA2BxD,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAiCnD,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IA0ClD,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,CAAC;IA0Df,OAAO,CAAC,yBAAyB;IAMjC,cAAc,IAAI,IAAI;IAMtB,aAAa,IAAI,GAAG;IAIpB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIlC,WAAW,IAAI,MAAM;CAGtB"}
|