workshub-mcp 0.0.1 → 0.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.
@@ -0,0 +1,315 @@
1
+ /**
2
+ * MCP 工具定义配置
3
+ * 包含所有工具的 schema 定义
4
+ */
5
+ /**
6
+ * 所有工具的定义列表
7
+ */
8
+ export const TOOLS_DEFINITION = [
9
+ // ==================== 技能管理(1个工具) ====================
10
+ {
11
+ name: 'get_skills',
12
+ description: '获取技能列表,支持按分类和关键词搜索',
13
+ inputSchema: {
14
+ type: 'object',
15
+ properties: {
16
+ category: {
17
+ type: 'string',
18
+ description: '技能分类筛选(可选)',
19
+ },
20
+ keyword: {
21
+ type: 'string',
22
+ description: '关键词搜索(可选)',
23
+ },
24
+ },
25
+ required: [],
26
+ },
27
+ },
28
+ // ==================== 工作者管理(2个工具) ====================
29
+ {
30
+ name: 'get_workers',
31
+ description: '获取工作者列表,支持按技能、地理位置筛选和分页',
32
+ inputSchema: {
33
+ type: 'object',
34
+ properties: {
35
+ skills: {
36
+ type: 'string',
37
+ description: '技能筛选(可选)',
38
+ },
39
+ location: {
40
+ type: 'string',
41
+ description: '地理位置筛选(可选)',
42
+ },
43
+ page: {
44
+ type: 'number',
45
+ description: '页码(可选,默认1)',
46
+ },
47
+ pageSize: {
48
+ type: 'number',
49
+ description: '每页数量(可选,默认20)',
50
+ },
51
+ },
52
+ required: [],
53
+ },
54
+ },
55
+ {
56
+ name: 'get_worker_detail',
57
+ description: '获取指定工作者的详细信息',
58
+ inputSchema: {
59
+ type: 'object',
60
+ properties: {
61
+ workerId: {
62
+ type: 'string',
63
+ description: '工作者ID',
64
+ },
65
+ },
66
+ required: ['workerId'],
67
+ },
68
+ },
69
+ // ==================== 悬赏任务管理(7个工具) ====================
70
+ {
71
+ name: 'get_bounties',
72
+ description: '获取悬赏任务列表,支持按状态、技能筛选和分页',
73
+ inputSchema: {
74
+ type: 'object',
75
+ properties: {
76
+ status: {
77
+ type: 'number',
78
+ description: '任务状态筛选(可选)',
79
+ },
80
+ skills: {
81
+ type: 'string',
82
+ description: '技能筛选(可选)',
83
+ },
84
+ page: {
85
+ type: 'number',
86
+ description: '页码(可选,默认1)',
87
+ },
88
+ pageSize: {
89
+ type: 'number',
90
+ description: '每页数量(可选,默认20)',
91
+ },
92
+ },
93
+ required: [],
94
+ },
95
+ },
96
+ {
97
+ name: 'create_bounty',
98
+ description: '创建悬赏任务',
99
+ inputSchema: {
100
+ type: 'object',
101
+ properties: {
102
+ title: {
103
+ type: 'string',
104
+ description: '任务标题',
105
+ },
106
+ description: {
107
+ type: 'string',
108
+ description: '任务详细描述',
109
+ },
110
+ budget: {
111
+ type: 'number',
112
+ description: '预算金额',
113
+ },
114
+ priceType: {
115
+ type: 'number',
116
+ description: '价格类型:1=固定价格, 2=按小时',
117
+ },
118
+ skills: {
119
+ type: 'string',
120
+ description: '所需技能(逗号分隔),如"React,TypeScript"',
121
+ },
122
+ deadline: {
123
+ type: 'string',
124
+ description: '截止日期(可选),格式:yyyy-MM-dd',
125
+ },
126
+ },
127
+ required: ['title', 'description', 'budget', 'priceType', 'skills'],
128
+ },
129
+ },
130
+ {
131
+ name: 'get_bounty_detail',
132
+ description: '获取指定悬赏任务的详细信息',
133
+ inputSchema: {
134
+ type: 'object',
135
+ properties: {
136
+ bountyId: {
137
+ type: 'string',
138
+ description: '悬赏任务ID',
139
+ },
140
+ },
141
+ required: ['bountyId'],
142
+ },
143
+ },
144
+ {
145
+ name: 'update_bounty',
146
+ description: '更新悬赏任务信息',
147
+ inputSchema: {
148
+ type: 'object',
149
+ properties: {
150
+ bountyId: {
151
+ type: 'string',
152
+ description: '悬赏任务ID',
153
+ },
154
+ title: {
155
+ type: 'string',
156
+ description: '新任务标题(可选)',
157
+ },
158
+ description: {
159
+ type: 'string',
160
+ description: '新任务描述(可选)',
161
+ },
162
+ budget: {
163
+ type: 'number',
164
+ description: '新预算金额(可选)',
165
+ },
166
+ priceType: {
167
+ type: 'number',
168
+ description: '新价格类型(可选)',
169
+ },
170
+ skills: {
171
+ type: 'string',
172
+ description: '新技能要求(可选)',
173
+ },
174
+ deadline: {
175
+ type: 'string',
176
+ description: '新截止日期(可选)',
177
+ },
178
+ },
179
+ required: ['bountyId'],
180
+ },
181
+ },
182
+ {
183
+ name: 'cancel_bounty',
184
+ description: '取消悬赏任务',
185
+ inputSchema: {
186
+ type: 'object',
187
+ properties: {
188
+ bountyId: {
189
+ type: 'string',
190
+ description: '悬赏任务ID',
191
+ },
192
+ },
193
+ required: ['bountyId'],
194
+ },
195
+ },
196
+ {
197
+ name: 'get_bounty_applications',
198
+ description: '获取指定悬赏任务的所有申请列表',
199
+ inputSchema: {
200
+ type: 'object',
201
+ properties: {
202
+ bountyId: {
203
+ type: 'string',
204
+ description: '悬赏任务ID',
205
+ },
206
+ },
207
+ required: ['bountyId'],
208
+ },
209
+ },
210
+ {
211
+ name: 'accept_bounty_application',
212
+ description: '接受某个工作者的申请',
213
+ inputSchema: {
214
+ type: 'object',
215
+ properties: {
216
+ bountyId: {
217
+ type: 'string',
218
+ description: '悬赏任务ID',
219
+ },
220
+ applicationId: {
221
+ type: 'string',
222
+ description: '申请ID',
223
+ },
224
+ },
225
+ required: ['bountyId', 'applicationId'],
226
+ },
227
+ },
228
+ // ==================== 对话管理(5个工具) ====================
229
+ {
230
+ name: 'get_conversations',
231
+ description: '获取所有对话列表',
232
+ inputSchema: {
233
+ type: 'object',
234
+ properties: {},
235
+ required: [],
236
+ },
237
+ },
238
+ {
239
+ name: 'start_conversation',
240
+ description: '与指定工作者开始一个新的对话',
241
+ inputSchema: {
242
+ type: 'object',
243
+ properties: {
244
+ workerId: {
245
+ type: 'string',
246
+ description: '工作者ID(编码后的工作者资料ID如W02,或纯数字用户ID)',
247
+ },
248
+ message: {
249
+ type: 'string',
250
+ description: '初始消息内容(可选)',
251
+ },
252
+ },
253
+ required: ['workerId'],
254
+ },
255
+ },
256
+ {
257
+ name: 'get_conversation_messages',
258
+ description: '获取指定对话的消息列表,支持分页',
259
+ inputSchema: {
260
+ type: 'object',
261
+ properties: {
262
+ conversationId: {
263
+ type: 'string',
264
+ description: '对话ID',
265
+ },
266
+ page: {
267
+ type: 'number',
268
+ description: '页码(可选,默认1)',
269
+ },
270
+ pageSize: {
271
+ type: 'number',
272
+ description: '每页数量(可选,默认20)',
273
+ },
274
+ },
275
+ required: ['conversationId'],
276
+ },
277
+ },
278
+ {
279
+ name: 'send_message',
280
+ description: '在指定对话中发送消息',
281
+ inputSchema: {
282
+ type: 'object',
283
+ properties: {
284
+ conversationId: {
285
+ type: 'string',
286
+ description: '对话ID',
287
+ },
288
+ content: {
289
+ type: 'string',
290
+ description: '消息内容',
291
+ },
292
+ messageType: {
293
+ type: 'number',
294
+ description: '消息类型(可选):1=文本, 2=图片, 3=文件,默认1',
295
+ },
296
+ },
297
+ required: ['conversationId', 'content'],
298
+ },
299
+ },
300
+ {
301
+ name: 'mark_conversation_read',
302
+ description: '标记指定对话的消息为已读',
303
+ inputSchema: {
304
+ type: 'object',
305
+ properties: {
306
+ conversationId: {
307
+ type: 'string',
308
+ description: '对话ID',
309
+ },
310
+ },
311
+ required: ['conversationId'],
312
+ },
313
+ },
314
+ ];
315
+ //# sourceMappingURL=tools-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-definition.js","sourceRoot":"","sources":["../../src/config/tools-definition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * 工具路由处理器
3
+ * 根据工具名称路由到对应的处理函数
4
+ */
5
+ import { SkillTools } from '../tools/skill.js';
6
+ import { WorkerTools } from '../tools/worker.js';
7
+ import { BountyTools } from '../tools/bounty.js';
8
+ import { ConversationTools } from '../tools/conversation.js';
9
+ /**
10
+ * 工具实例接口
11
+ */
12
+ export interface ToolInstances {
13
+ skillTools: SkillTools;
14
+ workerTools: WorkerTools;
15
+ bountyTools: BountyTools;
16
+ conversationTools: ConversationTools;
17
+ }
18
+ /**
19
+ * 路由工具调用到对应的处理函数
20
+ * @param name 工具名称
21
+ * @param args 工具参数
22
+ * @param tools 工具实例
23
+ * @returns 工具执行结果
24
+ */
25
+ export declare function routeToolCall(name: string, args: Record<string, unknown> | undefined, tools: ToolInstances): Promise<string>;
26
+ //# sourceMappingURL=tool-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.d.ts","sourceRoot":"","sources":["../../src/handlers/tool-router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,CAAC,CAkFjB"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * 工具路由处理器
3
+ * 根据工具名称路由到对应的处理函数
4
+ */
5
+ import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
6
+ /**
7
+ * 路由工具调用到对应的处理函数
8
+ * @param name 工具名称
9
+ * @param args 工具参数
10
+ * @param tools 工具实例
11
+ * @returns 工具执行结果
12
+ */
13
+ export async function routeToolCall(name, args, tools) {
14
+ const { skillTools, workerTools, bountyTools, conversationTools } = tools;
15
+ console.error(`🔧 调用工具: ${name}`, args ? `参数: ${JSON.stringify(args)}` : '');
16
+ try {
17
+ let result;
18
+ switch (name) {
19
+ // 技能管理
20
+ case 'get_skills':
21
+ result = await skillTools.getSkills(args || {});
22
+ break;
23
+ // 工作者管理
24
+ case 'get_workers':
25
+ result = await workerTools.getWorkers(args || {});
26
+ break;
27
+ case 'get_worker_detail':
28
+ result = await workerTools.getWorkerDetail(args || {});
29
+ break;
30
+ // 悬赏任务管理
31
+ case 'get_bounties':
32
+ result = await bountyTools.getBounties(args || {});
33
+ break;
34
+ case 'create_bounty':
35
+ result = await bountyTools.createBounty(args || {});
36
+ break;
37
+ case 'get_bounty_detail':
38
+ result = await bountyTools.getBountyDetail(args || {});
39
+ break;
40
+ case 'update_bounty':
41
+ result = await bountyTools.updateBounty(args || {});
42
+ break;
43
+ case 'cancel_bounty':
44
+ result = await bountyTools.cancelBounty(args || {});
45
+ break;
46
+ case 'get_bounty_applications':
47
+ result = await bountyTools.getBountyApplications(args || {});
48
+ break;
49
+ case 'accept_bounty_application':
50
+ result = await bountyTools.acceptBountyApplication(args || {});
51
+ break;
52
+ // 对话管理
53
+ case 'get_conversations':
54
+ result = await conversationTools.getConversations(args || {});
55
+ break;
56
+ case 'start_conversation':
57
+ result = await conversationTools.startConversation(args || {});
58
+ break;
59
+ case 'get_conversation_messages':
60
+ result = await conversationTools.getConversationMessages(args || {});
61
+ break;
62
+ case 'send_message':
63
+ result = await conversationTools.sendMessage(args || {});
64
+ break;
65
+ case 'mark_conversation_read':
66
+ result = await conversationTools.markConversationRead(args || {});
67
+ break;
68
+ default:
69
+ throw new McpError(ErrorCode.MethodNotFound, `未知工具: ${name}`);
70
+ }
71
+ console.error(`✅ 工具 ${name} 执行成功`);
72
+ return result;
73
+ }
74
+ catch (error) {
75
+ console.error(`❌ 工具 ${name} 执行失败:`, error);
76
+ // 如果是 MCP 错误,直接抛出
77
+ if (error instanceof McpError) {
78
+ throw error;
79
+ }
80
+ // 其他错误包装为 InternalError
81
+ throw new McpError(ErrorCode.InternalError, error instanceof Error ? error.message : '工具执行失败');
82
+ }
83
+ }
84
+ //# sourceMappingURL=tool-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.js","sourceRoot":"","sources":["../../src/handlers/tool-router.ts"],"names":[],"mappings":"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"}