tuandad-mcp-test 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/build/index.js +104 -106
  2. package/package.json +1 -1
  3. package/src/index.ts +111 -106
package/build/index.js CHANGED
@@ -2,127 +2,125 @@
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
4
  import { z } from "zod";
5
- /* =========================================
5
+ /* =====================================================
6
6
  INIT MCP SERVER
7
- ========================================= */
7
+ ===================================================== */
8
8
  const server = new McpServer({
9
9
  name: "eservice",
10
10
  version: "1.0.0",
11
11
  });
12
- /* =========================================
12
+ /* =====================================================
13
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
- /* =========================================
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
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
- /* =========================================
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
+ /* =====================================================
73
43
  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
- /* =========================================
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
+ /* =====================================================
88
58
  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
- /* =========================================
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
+ /* =====================================================
103
101
  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
- /* =========================================
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
+ /* =====================================================
118
116
  START MCP SERVER
119
- ========================================= */
117
+ ===================================================== */
120
118
  async function main() {
121
- console.log("✅ MCP eservice server started");
119
+ console.log("✅ MCP eService server started");
122
120
  const transport = new StdioServerTransport();
123
121
  await server.connect(transport);
124
122
  }
125
123
  main().catch((err) => {
126
- console.error("❌ Error starting server:", err);
124
+ console.error("❌ Error starting MCP server:", err);
127
125
  process.exit(1);
128
126
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tuandad-mcp-test",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mcp-server": "build/index.js"
package/src/index.ts CHANGED
@@ -4,164 +4,169 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
5
  import { z } from "zod";
6
6
 
7
- /* =========================================
7
+ /* =====================================================
8
8
  INIT MCP SERVER
9
- ========================================= */
9
+ ===================================================== */
10
10
  const server = new McpServer({
11
11
  name: "eservice",
12
12
  version: "1.0.0",
13
13
  });
14
14
 
15
- /* =========================================
15
+ /* =====================================================
16
16
  TOOL: search_eservice
17
- ========================================= */
17
+ ===================================================== */
18
18
  server.tool(
19
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…).",
20
21
  {
21
- text: z.string().describe("Câu hỏi tìm kiếm eservice"),
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"),
22
25
  },
23
- async ({ text }) => {
24
- return {
25
- content: [
26
- {
27
- type: "text",
28
- text: `[TOOL: search_eservice]\nCâu hỏi: ${text}`,
29
- },
30
- ],
31
- };
32
- }
26
+ async ({ text }) => ({
27
+ content: [
28
+ {
29
+ type: "text",
30
+ text: `[SEARCH_ESERVICE]\n${text}`,
31
+ },
32
+ ],
33
+ })
33
34
  );
34
35
 
35
- /* =========================================
36
+ /* =====================================================
36
37
  TOOL: answer_ehoadon
37
- ========================================= */
38
+ ===================================================== */
38
39
  server.tool(
39
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.",
40
42
  {
41
- text: z.string().describe("Câu hỏi liên quan đến hóa đơn điện tử"),
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ử"),
42
46
  },
43
- async ({ text }) => {
44
- return {
45
- content: [
46
- {
47
- type: "text",
48
- text: `[TOOL: answer_ehoadon]\nCâu hỏi: ${text}`,
49
- },
50
- ],
51
- };
52
- }
47
+ async ({ text }) => ({
48
+ content: [
49
+ {
50
+ type: "text",
51
+ text: `[ANSWER_EHOADON]\n${text}`,
52
+ },
53
+ ],
54
+ })
53
55
  );
54
56
 
55
- /* =========================================
56
- TOOL: answer_cks
57
- ========================================= */
57
+ /* =====================================================
58
+ TOOL: answer_eqlhd
59
+ ===================================================== */
58
60
  server.tool(
59
- "answer_cks",
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.",
60
63
  {
61
- text: z.string().describe("Câu hỏi liên quan đến chữ ký số"),
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ử"),
62
67
  },
63
- async ({ text }) => {
64
- return {
65
- content: [
66
- {
67
- type: "text",
68
- text: `[TOOL: answer_cks]\nCâu hỏi: ${text}`,
69
- },
70
- ],
71
- };
72
- }
68
+ async ({ text }) => ({
69
+ content: [
70
+ {
71
+ type: "text",
72
+ text: `[ANSWER_EQLHD]\n${text}`,
73
+ },
74
+ ],
75
+ })
73
76
  );
74
77
 
75
- /* =========================================
76
- TOOL: answer_ivan
77
- ========================================= */
78
+ /* =====================================================
79
+ TOOL: answer_echungtu
80
+ ===================================================== */
78
81
  server.tool(
79
- "answer_ivan",
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.",
80
84
  {
81
- text: z.string().describe("Câu hỏi liên quan đến chứng thư số"),
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ử"),
82
88
  },
83
- async ({ text }) => {
84
- return {
85
- content: [
86
- {
87
- type: "text",
88
- text: `[TOOL: answer_ivan]\nCâu hỏi: ${text}`,
89
- },
90
- ],
91
- };
92
- }
89
+ async ({ text }) => ({
90
+ content: [
91
+ {
92
+ type: "text",
93
+ text: `[ANSWER_ECHUNGTU]\n${text}`,
94
+ },
95
+ ],
96
+ })
93
97
  );
94
98
 
95
- /* =========================================
96
- TOOL: answer_eqlhd
97
- ========================================= */
99
+ /* =====================================================
100
+ TOOL: answer_cks
101
+ ===================================================== */
98
102
  server.tool(
99
- "answer_eqlhd",
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ử.",
100
105
  {
101
- text: z.string().describe("Câu hỏi liên quan đến quản hóa đơn điện tử"),
106
+ text: z.string().describe("Câu hỏi của người dùng về chữ số"),
102
107
  },
103
- async ({ text }) => {
104
- return {
105
- content: [
106
- {
107
- type: "text",
108
- text: `[TOOL: answer_eqlhd]\nCâu hỏi: ${text}`,
109
- },
110
- ],
111
- };
112
- }
108
+ async ({ text }) => ({
109
+ content: [
110
+ {
111
+ type: "text",
112
+ text: `[ANSWER_CKS]\n${text}`,
113
+ },
114
+ ],
115
+ })
113
116
  );
114
117
 
115
- /* =========================================
116
- TOOL: answer_echungtu
117
- ========================================= */
118
+ /* =====================================================
119
+ TOOL: answer_ivan
120
+ ===================================================== */
118
121
  server.tool(
119
- "answer_echungtu",
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ế.",
120
124
  {
121
- text: z.string().describe("Câu hỏi liên quan đến chứng từ điện tử"),
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ố"),
122
128
  },
123
- async ({ text }) => {
124
- return {
125
- content: [
126
- {
127
- type: "text",
128
- text: `[TOOL: answer_echungtu]\nCâu hỏi: ${text}`,
129
- },
130
- ],
131
- };
132
- }
129
+ async ({ text }) => ({
130
+ content: [
131
+ {
132
+ type: "text",
133
+ text: `[ANSWER_IVAN]\n${text}`,
134
+ },
135
+ ],
136
+ })
133
137
  );
134
138
 
135
- /* =========================================
139
+ /* =====================================================
136
140
  TOOL: answer_tvan
137
- ========================================= */
141
+ ===================================================== */
138
142
  server.tool(
139
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ế.",
140
145
  {
141
- text: z.string().describe("Câu hỏi liên quan đến thuế điện tử"),
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"),
142
149
  },
143
- async ({ text }) => {
144
- return {
145
- content: [
146
- {
147
- type: "text",
148
- text: `[TOOL: answer_tvan]\nCâu hỏi: ${text}`,
149
- },
150
- ],
151
- };
152
- }
150
+ async ({ text }) => ({
151
+ content: [
152
+ {
153
+ type: "text",
154
+ text: `[ANSWER_TVAN]\n${text}`,
155
+ },
156
+ ],
157
+ })
153
158
  );
154
159
 
155
- /* =========================================
160
+ /* =====================================================
156
161
  START MCP SERVER
157
- ========================================= */
162
+ ===================================================== */
158
163
  async function main() {
159
- console.log("✅ MCP eservice server started");
164
+ console.log("✅ MCP eService server started");
160
165
  const transport = new StdioServerTransport();
161
166
  await server.connect(transport);
162
167
  }
163
168
 
164
169
  main().catch((err) => {
165
- console.error("❌ Error starting server:", err);
170
+ console.error("❌ Error starting MCP server:", err);
166
171
  process.exit(1);
167
- });
172
+ });