tuandad-test 1.0.6

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/build/index.js ADDED
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { z } from "zod";
5
+ /* =====================================================
6
+ INIT MCP SERVER
7
+ ===================================================== */
8
+ const server = new McpServer({
9
+ name: "eservice",
10
+ version: "1.0.0",
11
+ });
12
+ /* =====================================================
13
+ TOOL: search_eservice
14
+ ===================================================== */
15
+ server.tool("search_eservice", "Tìm kiếm và định tuyến câu hỏi eService khi chưa xác định rõ lĩnh vực (hóa đơn điện tử, chứng từ điện tử, chữ ký số, TVAN…).", {
16
+ text: z
17
+ .string()
18
+ .describe("Câu hỏi tổng quát của người dùng về hệ thống eService"),
19
+ }, async ({ text }) => ({
20
+ content: [
21
+ {
22
+ type: "text",
23
+ text: `[SEARCH_ESERVICE]\n${text}`,
24
+ },
25
+ ],
26
+ }));
27
+ /* =====================================================
28
+ TOOL: answer_ehoadon
29
+ ===================================================== */
30
+ server.tool("answer_ehoadon", "Trả lời các câu hỏi liên quan đến HÓA ĐƠN ĐIỆN TỬ: phát hành, tra cứu, điều chỉnh, thay thế, hủy hóa đơn theo quy định thuế Việt Nam.", {
31
+ text: z
32
+ .string()
33
+ .describe("Câu hỏi cụ thể của người dùng về hóa đơn điện tử"),
34
+ }, async ({ text }) => ({
35
+ content: [
36
+ {
37
+ type: "text",
38
+ text: `[ANSWER_EHOADON]\n${text}`,
39
+ },
40
+ ],
41
+ }));
42
+ /* =====================================================
43
+ TOOL: answer_eqlhd
44
+ ===================================================== */
45
+ server.tool("answer_eqlhd", "Trả lời câu hỏi về QUẢN LÝ HÓA ĐƠN ĐIỆN TỬ: danh sách hóa đơn, trạng thái, báo cáo, phân quyền và xử lý sai sót.", {
46
+ text: z
47
+ .string()
48
+ .describe("Câu hỏi của người dùng về quản lý hóa đơn điện tử"),
49
+ }, async ({ text }) => ({
50
+ content: [
51
+ {
52
+ type: "text",
53
+ text: `[ANSWER_EQLHD]\n${text}`,
54
+ },
55
+ ],
56
+ }));
57
+ /* =====================================================
58
+ TOOL: answer_echungtu
59
+ ===================================================== */
60
+ server.tool("answer_echungtu", "Trả lời các câu hỏi về CHỨNG TỪ ĐIỆN TỬ: chứng từ khấu trừ thuế TNCN, chứng từ thuế theo Nghị định 123 và Thông tư 78.", {
61
+ text: z
62
+ .string()
63
+ .describe("Câu hỏi chi tiết của người dùng về chứng từ điện tử"),
64
+ }, async ({ text }) => ({
65
+ content: [
66
+ {
67
+ type: "text",
68
+ text: `[ANSWER_ECHUNGTU]\n${text}`,
69
+ },
70
+ ],
71
+ }));
72
+ /* =====================================================
73
+ TOOL: answer_cks
74
+ ===================================================== */
75
+ server.tool("answer_cks", "Trả lời câu hỏi liên quan đến CHỮ KÝ SỐ: đăng ký, gia hạn, cài đặt và sử dụng trong hóa đơn điện tử và thuế điện tử.", {
76
+ text: z.string().describe("Câu hỏi của người dùng về chữ ký số"),
77
+ }, async ({ text }) => ({
78
+ content: [
79
+ {
80
+ type: "text",
81
+ text: `[ANSWER_CKS]\n${text}`,
82
+ },
83
+ ],
84
+ }));
85
+ /* =====================================================
86
+ TOOL: answer_ivan
87
+ ===================================================== */
88
+ server.tool("answer_ivan", "Trả lời câu hỏi về dịch vụ IVAN – trung gian truyền nhận dữ liệu hóa đơn điện tử với cơ quan thuế.", {
89
+ text: z
90
+ .string()
91
+ .describe("Câu hỏi của người dùng về dịch vụ IVAN hoặc chứng thư số"),
92
+ }, async ({ text }) => ({
93
+ content: [
94
+ {
95
+ type: "text",
96
+ text: `[ANSWER_IVAN]\n${text}`,
97
+ },
98
+ ],
99
+ }));
100
+ /* =====================================================
101
+ TOOL: answer_tvan
102
+ ===================================================== */
103
+ server.tool("answer_tvan", "Trả lời các câu hỏi về TVAN và THUẾ ĐIỆN TỬ: kê khai, nộp thuế, tra cứu tờ khai và nghĩa vụ thuế.", {
104
+ text: z
105
+ .string()
106
+ .describe("Câu hỏi của người dùng về thuế điện tử hoặc TVAN"),
107
+ }, async ({ text }) => ({
108
+ content: [
109
+ {
110
+ type: "text",
111
+ text: `[ANSWER_TVAN]\n${text}`,
112
+ },
113
+ ],
114
+ }));
115
+ /* =====================================================
116
+ START MCP SERVER
117
+ ===================================================== */
118
+ async function main() {
119
+ console.log("✅ MCP eService server started");
120
+ const transport = new StdioServerTransport();
121
+ await server.connect(transport);
122
+ }
123
+ main().catch((err) => {
124
+ console.error("❌ Error starting MCP server:", err);
125
+ process.exit(1);
126
+ });
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "tuandad-test",
3
+ "version": "1.0.6",
4
+ "type": "module",
5
+ "bin": {
6
+ "mcp-server": "build/index.js"
7
+ },
8
+ "scripts": {
9
+ "build": "tsc && chmod 755 build/index.js",
10
+ "start": "node build/index.js",
11
+ "prepublishOnly": "npm run build"
12
+ },
13
+ "dependencies": {
14
+ "@modelcontextprotocol/sdk": "^1.25.2",
15
+ "zod": "^4.3.5"
16
+ },
17
+ "devDependencies": {
18
+ "@types/node": "^25.0.9",
19
+ "typescript": "^5.9.3"
20
+ }
21
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":""}
package/src/index.js ADDED
@@ -0,0 +1,129 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { z } from "zod";
5
+ /* =========================================
6
+ INIT MCP SERVER
7
+ ========================================= */
8
+ const server = new McpServer({
9
+ name: "eservice",
10
+ version: "1.0.0",
11
+ });
12
+ /* =========================================
13
+ TOOL: search_eservice
14
+ ========================================= */
15
+ server.tool("search_eservice", {
16
+ text: z.string().describe("Câu hỏi tìm kiếm eservice"),
17
+ }, async ({ text }) => {
18
+ return {
19
+ content: [
20
+ {
21
+ type: "text",
22
+ text: `[TOOL: search_eservice]\nCâu hỏi: ${text}`,
23
+ },
24
+ ],
25
+ };
26
+ });
27
+ /* =========================================
28
+ TOOL: answer_ehoadon
29
+ ========================================= */
30
+ server.tool("answer_ehoadon", {
31
+ text: z.string().describe("Câu hỏi liên quan đến hóa đơn điện tử"),
32
+ }, async ({ text }) => {
33
+ return {
34
+ content: [
35
+ {
36
+ type: "text",
37
+ text: `[TOOL: answer_ehoadon]\nCâu hỏi: ${text}`,
38
+ },
39
+ ],
40
+ };
41
+ });
42
+ /* =========================================
43
+ TOOL: answer_cks
44
+ ========================================= */
45
+ server.tool("answer_cks", {
46
+ text: z.string().describe("Câu hỏi liên quan đến chữ ký số"),
47
+ }, async ({ text }) => {
48
+ return {
49
+ content: [
50
+ {
51
+ type: "text",
52
+ text: `[TOOL: answer_cks]\nCâu hỏi: ${text}`,
53
+ },
54
+ ],
55
+ };
56
+ });
57
+ /* =========================================
58
+ TOOL: answer_ivan
59
+ ========================================= */
60
+ server.tool("answer_ivan", {
61
+ text: z.string().describe("Câu hỏi liên quan đến chứng thư số"),
62
+ }, async ({ text }) => {
63
+ return {
64
+ content: [
65
+ {
66
+ type: "text",
67
+ text: `[TOOL: answer_ivan]\nCâu hỏi: ${text}`,
68
+ },
69
+ ],
70
+ };
71
+ });
72
+ /* =========================================
73
+ TOOL: answer_eqlhd
74
+ ========================================= */
75
+ server.tool("answer_eqlhd", {
76
+ text: z.string().describe("Câu hỏi liên quan đến quản lý hóa đơn điện tử"),
77
+ }, async ({ text }) => {
78
+ return {
79
+ content: [
80
+ {
81
+ type: "text",
82
+ text: `[TOOL: answer_eqlhd]\nCâu hỏi: ${text}`,
83
+ },
84
+ ],
85
+ };
86
+ });
87
+ /* =========================================
88
+ TOOL: answer_echungtu
89
+ ========================================= */
90
+ server.tool("answer_echungtu", {
91
+ text: z.string().describe("Câu hỏi liên quan đến chứng từ điện tử"),
92
+ }, async ({ text }) => {
93
+ return {
94
+ content: [
95
+ {
96
+ type: "text",
97
+ text: `[TOOL: answer_echungtu]\nCâu hỏi: ${text}`,
98
+ },
99
+ ],
100
+ };
101
+ });
102
+ /* =========================================
103
+ TOOL: answer_tvan
104
+ ========================================= */
105
+ server.tool("answer_tvan", {
106
+ text: z.string().describe("Câu hỏi liên quan đến thuế điện tử"),
107
+ }, async ({ text }) => {
108
+ return {
109
+ content: [
110
+ {
111
+ type: "text",
112
+ text: `[TOOL: answer_tvan]\nCâu hỏi: ${text}`,
113
+ },
114
+ ],
115
+ };
116
+ });
117
+ /* =========================================
118
+ START MCP SERVER
119
+ ========================================= */
120
+ async function main() {
121
+ console.log("✅ MCP eservice server started");
122
+ const transport = new StdioServerTransport();
123
+ await server.connect(transport);
124
+ }
125
+ main().catch((err) => {
126
+ console.error("❌ Error starting server:", err);
127
+ process.exit(1);
128
+ });
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
package/src/index.ts ADDED
@@ -0,0 +1,172 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
+ import { z } from "zod";
6
+
7
+ /* =====================================================
8
+ INIT MCP SERVER
9
+ ===================================================== */
10
+ const server = new McpServer({
11
+ name: "eservice",
12
+ version: "1.0.0",
13
+ });
14
+
15
+ /* =====================================================
16
+ TOOL: search_eservice
17
+ ===================================================== */
18
+ server.tool(
19
+ "search_eservice",
20
+ "Tìm kiếm và định tuyến câu hỏi eService khi chưa xác định rõ lĩnh vực (hóa đơn điện tử, chứng từ điện tử, chữ ký số, TVAN…).",
21
+ {
22
+ text: z
23
+ .string()
24
+ .describe("Câu hỏi tổng quát của người dùng về hệ thống eService"),
25
+ },
26
+ async ({ text }) => ({
27
+ content: [
28
+ {
29
+ type: "text",
30
+ text: `[SEARCH_ESERVICE]\n${text}`,
31
+ },
32
+ ],
33
+ })
34
+ );
35
+
36
+ /* =====================================================
37
+ TOOL: answer_ehoadon
38
+ ===================================================== */
39
+ server.tool(
40
+ "answer_ehoadon",
41
+ "Trả lời các câu hỏi liên quan đến HÓA ĐƠN ĐIỆN TỬ: phát hành, tra cứu, điều chỉnh, thay thế, hủy hóa đơn theo quy định thuế Việt Nam.",
42
+ {
43
+ text: z
44
+ .string()
45
+ .describe("Câu hỏi cụ thể của người dùng về hóa đơn điện tử"),
46
+ },
47
+ async ({ text }) => ({
48
+ content: [
49
+ {
50
+ type: "text",
51
+ text: `[ANSWER_EHOADON]\n${text}`,
52
+ },
53
+ ],
54
+ })
55
+ );
56
+
57
+ /* =====================================================
58
+ TOOL: answer_eqlhd
59
+ ===================================================== */
60
+ server.tool(
61
+ "answer_eqlhd",
62
+ "Trả lời câu hỏi về QUẢN LÝ HÓA ĐƠN ĐIỆN TỬ: danh sách hóa đơn, trạng thái, báo cáo, phân quyền và xử lý sai sót.",
63
+ {
64
+ text: z
65
+ .string()
66
+ .describe("Câu hỏi của người dùng về quản lý hóa đơn điện tử"),
67
+ },
68
+ async ({ text }) => ({
69
+ content: [
70
+ {
71
+ type: "text",
72
+ text: `[ANSWER_EQLHD]\n${text}`,
73
+ },
74
+ ],
75
+ })
76
+ );
77
+
78
+ /* =====================================================
79
+ TOOL: answer_echungtu
80
+ ===================================================== */
81
+ server.tool(
82
+ "answer_echungtu",
83
+ "Trả lời các câu hỏi về CHỨNG TỪ ĐIỆN TỬ: chứng từ khấu trừ thuế TNCN, chứng từ thuế theo Nghị định 123 và Thông tư 78.",
84
+ {
85
+ text: z
86
+ .string()
87
+ .describe("Câu hỏi chi tiết của người dùng về chứng từ điện tử"),
88
+ },
89
+ async ({ text }) => ({
90
+ content: [
91
+ {
92
+ type: "text",
93
+ text: `[ANSWER_ECHUNGTU]\n${text}`,
94
+ },
95
+ ],
96
+ })
97
+ );
98
+
99
+ /* =====================================================
100
+ TOOL: answer_cks
101
+ ===================================================== */
102
+ server.tool(
103
+ "answer_cks",
104
+ "Trả lời câu hỏi liên quan đến CHỮ KÝ SỐ: đăng ký, gia hạn, cài đặt và sử dụng trong hóa đơn điện tử và thuế điện tử.",
105
+ {
106
+ text: z.string().describe("Câu hỏi của người dùng về chữ ký số"),
107
+ },
108
+ async ({ text }) => ({
109
+ content: [
110
+ {
111
+ type: "text",
112
+ text: `[ANSWER_CKS]\n${text}`,
113
+ },
114
+ ],
115
+ })
116
+ );
117
+
118
+ /* =====================================================
119
+ TOOL: answer_ivan
120
+ ===================================================== */
121
+ server.tool(
122
+ "answer_ivan",
123
+ "Trả lời câu hỏi về dịch vụ IVAN – trung gian truyền nhận dữ liệu hóa đơn điện tử với cơ quan thuế.",
124
+ {
125
+ text: z
126
+ .string()
127
+ .describe("Câu hỏi của người dùng về dịch vụ IVAN hoặc chứng thư số"),
128
+ },
129
+ async ({ text }) => ({
130
+ content: [
131
+ {
132
+ type: "text",
133
+ text: `[ANSWER_IVAN]\n${text}`,
134
+ },
135
+ ],
136
+ })
137
+ );
138
+
139
+ /* =====================================================
140
+ TOOL: answer_tvan
141
+ ===================================================== */
142
+ server.tool(
143
+ "answer_tvan",
144
+ "Trả lời các câu hỏi về TVAN và THUẾ ĐIỆN TỬ: kê khai, nộp thuế, tra cứu tờ khai và nghĩa vụ thuế.",
145
+ {
146
+ text: z
147
+ .string()
148
+ .describe("Câu hỏi của người dùng về thuế điện tử hoặc TVAN"),
149
+ },
150
+ async ({ text }) => ({
151
+ content: [
152
+ {
153
+ type: "text",
154
+ text: `[ANSWER_TVAN]\n${text}`,
155
+ },
156
+ ],
157
+ })
158
+ );
159
+
160
+ /* =====================================================
161
+ START MCP SERVER
162
+ ===================================================== */
163
+ async function main() {
164
+ console.log("✅ MCP eService server started");
165
+ const transport = new StdioServerTransport();
166
+ await server.connect(transport);
167
+ }
168
+
169
+ main().catch((err) => {
170
+ console.error("❌ Error starting MCP server:", err);
171
+ process.exit(1);
172
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "rootDir": "src",
7
+ "outDir": "build",
8
+ "types": [
9
+ "node"
10
+ ],
11
+ "esModuleInterop": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "strict": false,
14
+ "skipLibCheck": true
15
+ },
16
+ "include": [
17
+ "src"
18
+ ]
19
+ }