@yjzf/mcp-server-yjzf 0.1.3 → 0.1.5
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/dist/tools/count_all_statement.d.ts.map +1 -1
- package/dist/tools/count_all_statement.js +87 -17
- package/dist/tools/count_all_statement.js.map +1 -1
- package/dist/tools/overview_by_c.d.ts.map +1 -1
- package/dist/tools/overview_by_c.js +2 -6
- package/dist/tools/overview_by_c.js.map +1 -1
- package/dist/utils/debug.d.ts +7 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +23 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/env.d.ts +8 -0
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +18 -0
- package/dist/utils/env.js.map +1 -1
- package/package.json +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count_all_statement.d.ts","sourceRoot":"","sources":["../../src/tools/count_all_statement.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"count_all_statement.d.ts","sourceRoot":"","sources":["../../src/tools/count_all_statement.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AA6I5B,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAE1C,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,wBAAsB,OAAO;;;;;;;;;;;;GAiI5B"}
|
|
@@ -1,10 +1,67 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
|
+
import * as xlsx from "xlsx";
|
|
3
4
|
import * as z from "zod/v4";
|
|
4
|
-
import { getDataDir, getApiKey } from "../utils/env.js";
|
|
5
|
+
import { getDataDir, getApiKey, generateDatedFileName } from "../utils/env.js";
|
|
6
|
+
import { debug } from "../utils/debug.js";
|
|
7
|
+
const CITY_FIXED_COLUMNS = [
|
|
8
|
+
["城市公司", "orgLevelSimpleName"],
|
|
9
|
+
["创建日期", "createTmStr"],
|
|
10
|
+
["类型", "businessTypeName"],
|
|
11
|
+
["城市总经理", "managerName"],
|
|
12
|
+
];
|
|
13
|
+
const MKT_FIXED_COLUMNS = [
|
|
14
|
+
["姓名", "userName"],
|
|
15
|
+
["员工id", "employeesId"],
|
|
16
|
+
["工号", "employeesNo"],
|
|
17
|
+
["手机号", "phone"],
|
|
18
|
+
["管理层级名称", "bizlineName"],
|
|
19
|
+
["城市公司", "branchSimpleName"],
|
|
20
|
+
];
|
|
21
|
+
function buildStatsHeaders(statisticsItems) {
|
|
22
|
+
const headers = [];
|
|
23
|
+
for (const item of statisticsItems) {
|
|
24
|
+
if (item.hasChild === 1 && item.childNode) {
|
|
25
|
+
for (const child of item.childNode) {
|
|
26
|
+
headers.push(`${item.topCodeName}_${item.codeName}_${child.name}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
headers.push(`${item.topCodeName}_${item.codeName}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return headers;
|
|
34
|
+
}
|
|
35
|
+
function buildStatsValues(statisticsItems) {
|
|
36
|
+
const values = [];
|
|
37
|
+
for (const item of statisticsItems) {
|
|
38
|
+
if (item.hasChild === 1 && item.childNode) {
|
|
39
|
+
for (const child of item.childNode) {
|
|
40
|
+
values.push(child.count);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
values.push(item.count ?? "");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return values;
|
|
48
|
+
}
|
|
49
|
+
function buildSheetData(list, fixedColumns) {
|
|
50
|
+
if (list.length === 0)
|
|
51
|
+
return [];
|
|
52
|
+
const fixedHeaders = fixedColumns.map(([label]) => label);
|
|
53
|
+
const statsHeaders = buildStatsHeaders(list[0].statisticsItems);
|
|
54
|
+
const headers = [...fixedHeaders, ...statsHeaders];
|
|
55
|
+
const rows = list.map((item) => {
|
|
56
|
+
const fixedValues = fixedColumns.map(([, field]) => String(item[field] ?? ""));
|
|
57
|
+
const statsValues = buildStatsValues(item.statisticsItems);
|
|
58
|
+
return [...fixedValues, ...statsValues];
|
|
59
|
+
});
|
|
60
|
+
return [headers, ...rows];
|
|
61
|
+
}
|
|
5
62
|
export const name = "count_all_statement";
|
|
6
63
|
export const schema = {
|
|
7
|
-
description: "
|
|
64
|
+
description: "获取总部数据指标报表 生成 Excel 文件",
|
|
8
65
|
inputSchema: z.object({}),
|
|
9
66
|
};
|
|
10
67
|
export async function handler() {
|
|
@@ -46,8 +103,10 @@ export async function handler() {
|
|
|
46
103
|
};
|
|
47
104
|
}
|
|
48
105
|
const cities1 = await cities1Response.json();
|
|
106
|
+
debug("zy_cities.json (cities1)", cities1);
|
|
49
107
|
const cities2 = await cities2Response.json();
|
|
50
|
-
|
|
108
|
+
debug("count_all_step2.json (cities2)", cities2);
|
|
109
|
+
// Step 2: POST to count_all_statement
|
|
51
110
|
const payload = { cities1, cities2 };
|
|
52
111
|
const statementResponse = await fetch("https://mcp.yjzf.com/count_all_statement", {
|
|
53
112
|
method: "POST",
|
|
@@ -65,23 +124,34 @@ export async function handler() {
|
|
|
65
124
|
isError: true,
|
|
66
125
|
};
|
|
67
126
|
}
|
|
68
|
-
// Step 3:
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
127
|
+
// Step 3: Parse JSON response and generate Excel
|
|
128
|
+
const apiResponse = await statementResponse.json();
|
|
129
|
+
debug("count_all_statement response", apiResponse);
|
|
130
|
+
if (!apiResponse.succeed) {
|
|
131
|
+
return {
|
|
132
|
+
content: [
|
|
133
|
+
{
|
|
134
|
+
type: "text",
|
|
135
|
+
text: `网关返回错误: ${apiResponse.msg}`,
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
isError: true,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
// Step 4: Build Excel workbook with two sheets
|
|
142
|
+
const workbook = xlsx.utils.book_new();
|
|
143
|
+
const citySheetData = buildSheetData(apiResponse.data.cityData.data.list, CITY_FIXED_COLUMNS);
|
|
144
|
+
const citySheet = xlsx.utils.aoa_to_sheet(citySheetData);
|
|
145
|
+
xlsx.utils.book_append_sheet(workbook, citySheet, "城市公司维度");
|
|
146
|
+
const mktSheetData = buildSheetData(apiResponse.data.marketingData.data.list, MKT_FIXED_COLUMNS);
|
|
147
|
+
const mktSheet = xlsx.utils.aoa_to_sheet(mktSheetData);
|
|
148
|
+
xlsx.utils.book_append_sheet(workbook, mktSheet, "营销线层级维度");
|
|
149
|
+
// Step 5: Save xlsx file
|
|
150
|
+
const fileName = generateDatedFileName("城市指标统计", "xlsx");
|
|
80
151
|
const dataDir = getDataDir();
|
|
81
152
|
fs.mkdirSync(dataDir, { recursive: true });
|
|
82
153
|
const filePath = path.join(dataDir, fileName);
|
|
83
|
-
|
|
84
|
-
fs.writeFileSync(filePath, buffer);
|
|
154
|
+
xlsx.writeFile(workbook, filePath);
|
|
85
155
|
return {
|
|
86
156
|
content: [
|
|
87
157
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count_all_statement.js","sourceRoot":"","sources":["../../src/tools/count_all_statement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"count_all_statement.js","sourceRoot":"","sources":["../../src/tools/count_all_statement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overview_by_c.d.ts","sourceRoot":"","sources":["../../src/tools/overview_by_c.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAqB5B,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAEpC,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,wBAAsB,OAAO;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"overview_by_c.d.ts","sourceRoot":"","sources":["../../src/tools/overview_by_c.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAqB5B,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAEpC,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,wBAAsB,OAAO;;;;;;;;;;;;GA8I5B"}
|
|
@@ -2,7 +2,7 @@ import * as fs from "node:fs";
|
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import * as xlsx from "xlsx";
|
|
4
4
|
import * as z from "zod/v4";
|
|
5
|
-
import { getDataDir, getApiKey } from "../utils/env.js";
|
|
5
|
+
import { getDataDir, getApiKey, generateDatedFileName } from "../utils/env.js";
|
|
6
6
|
export const name = "overview_by_c";
|
|
7
7
|
export const schema = {
|
|
8
8
|
description: "获取直营城市C端行为数据数据指标报表 生成Excel文件",
|
|
@@ -103,11 +103,7 @@ export async function handler() {
|
|
|
103
103
|
const workbook = xlsx.utils.book_new();
|
|
104
104
|
xlsx.utils.book_append_sheet(workbook, worksheet, "城市流量数据");
|
|
105
105
|
// Step 5: Generate filename with date
|
|
106
|
-
const
|
|
107
|
-
const year = now.getFullYear();
|
|
108
|
-
const month = String(now.getMonth() + 1).padStart(2, "0");
|
|
109
|
-
const day = String(now.getDate()).padStart(2, "0");
|
|
110
|
-
const fileName = `${year}${month}${day}_城市流量数据报告_v2.xlsx`;
|
|
106
|
+
const fileName = generateDatedFileName("城市流量数据报告_v2", "xlsx");
|
|
111
107
|
// Ensure data directory exists
|
|
112
108
|
const dataDir = getDataDir();
|
|
113
109
|
fs.mkdirSync(dataDir, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overview_by_c.js","sourceRoot":"","sources":["../../src/tools/overview_by_c.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"overview_by_c.js","sourceRoot":"","sources":["../../src/tools/overview_by_c.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stderr debug logger for MCP server.
|
|
3
|
+
* Enabled by setting DEBUG=1 or DEBUG=true environment variable.
|
|
4
|
+
* Outputs to stderr so it doesn't interfere with stdio JSON-RPC transport.
|
|
5
|
+
*/
|
|
6
|
+
export declare function debug(label: string, data: unknown): void;
|
|
7
|
+
//# sourceMappingURL=debug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/utils/debug.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAiBxD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stderr debug logger for MCP server.
|
|
3
|
+
* Enabled by setting DEBUG=1 or DEBUG=true environment variable.
|
|
4
|
+
* Outputs to stderr so it doesn't interfere with stdio JSON-RPC transport.
|
|
5
|
+
*/
|
|
6
|
+
export function debug(label, data) {
|
|
7
|
+
if (!process.env.DEBUG)
|
|
8
|
+
return;
|
|
9
|
+
const timestamp = new Date().toISOString();
|
|
10
|
+
let formatted;
|
|
11
|
+
if (data instanceof Buffer || data instanceof ArrayBuffer) {
|
|
12
|
+
const byteLength = data instanceof Buffer ? data.byteLength : data.byteLength;
|
|
13
|
+
formatted = `<binary ${byteLength} bytes>`;
|
|
14
|
+
}
|
|
15
|
+
else if (typeof data === "string") {
|
|
16
|
+
formatted = data;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
formatted = JSON.stringify(data, null, 2);
|
|
20
|
+
}
|
|
21
|
+
console.error(`[DEBUG ${timestamp}] ${label}: ${formatted}`);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/utils/debug.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,IAAa;IAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK;QAAE,OAAO;IAE/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,SAAiB,CAAC;IAEtB,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QAC1D,MAAM,UAAU,GACd,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7D,SAAS,GAAG,WAAW,UAAU,SAAS,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpC,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,KAAK,KAAK,KAAK,SAAS,EAAE,CAAC,CAAC;AAC/D,CAAC"}
|
package/dist/utils/env.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
export declare function getDataDir(): string;
|
|
2
2
|
export declare function getApiKey(): string | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* 生成带日期前缀的文件名
|
|
5
|
+
* @param baseName 基础文件名(不含扩展名)
|
|
6
|
+
* @param extension 文件扩展名(不含点号)
|
|
7
|
+
* @param useYesterday 是否使用昨天的日期(默认为 true)
|
|
8
|
+
* @returns 格式为 YYYY-MM-DD_basename.extension 的文件名
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateDatedFileName(baseName: string, extension: string, useYesterday?: boolean): string;
|
|
3
11
|
//# sourceMappingURL=env.d.ts.map
|
package/dist/utils/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,IAAI,MAAM,CAanC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C"}
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,IAAI,MAAM,CAanC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,OAAc,GAC3B,MAAM,CAUR"}
|
package/dist/utils/env.js
CHANGED
|
@@ -17,4 +17,22 @@ export function getDataDir() {
|
|
|
17
17
|
export function getApiKey() {
|
|
18
18
|
return process.env.MCP_YJZF_API_KEY;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* 生成带日期前缀的文件名
|
|
22
|
+
* @param baseName 基础文件名(不含扩展名)
|
|
23
|
+
* @param extension 文件扩展名(不含点号)
|
|
24
|
+
* @param useYesterday 是否使用昨天的日期(默认为 true)
|
|
25
|
+
* @returns 格式为 YYYY-MM-DD_basename.extension 的文件名
|
|
26
|
+
*/
|
|
27
|
+
export function generateDatedFileName(baseName, extension, useYesterday = true) {
|
|
28
|
+
const now = new Date();
|
|
29
|
+
const targetDate = useYesterday ? new Date(now) : now;
|
|
30
|
+
if (useYesterday) {
|
|
31
|
+
targetDate.setDate(now.getDate() - 1);
|
|
32
|
+
}
|
|
33
|
+
const year = targetDate.getFullYear();
|
|
34
|
+
const month = String(targetDate.getMonth() + 1).padStart(2, "0");
|
|
35
|
+
const day = String(targetDate.getDate()).padStart(2, "0");
|
|
36
|
+
return `${year}-${month}-${day}_${baseName}.${extension}`;
|
|
37
|
+
}
|
|
20
38
|
//# sourceMappingURL=env.js.map
|
package/dist/utils/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,SAAiB,EACjB,eAAwB,IAAI;IAE5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;AAC5D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yjzf/mcp-server-yjzf",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "MCP Server for YJZF",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"build": "tsc",
|
|
14
14
|
"dev": "tsc --watch",
|
|
15
|
-
"start": "node dist/index.js"
|
|
15
|
+
"start": "node dist/index.js",
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
17
|
+
"inspect": "npx @modelcontextprotocol/inspector node dist/index.js",
|
|
18
|
+
"test": "node test-mcp.js",
|
|
19
|
+
"test:debug": "DEBUG=1 node test-mcp.js"
|
|
16
20
|
},
|
|
17
21
|
"keywords": [
|
|
18
22
|
"mcp",
|