@instantkom/mcp-server 1.0.0
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 +21 -0
- package/README.md +274 -0
- package/dist/client/api-client.d.ts +76 -0
- package/dist/client/api-client.d.ts.map +1 -0
- package/dist/client/api-client.js +234 -0
- package/dist/client/api-client.js.map +1 -0
- package/dist/index.public.d.ts +23 -0
- package/dist/index.public.d.ts.map +1 -0
- package/dist/index.public.js +79 -0
- package/dist/index.public.js.map +1 -0
- package/dist/tools/app/account.d.ts +46 -0
- package/dist/tools/app/account.d.ts.map +1 -0
- package/dist/tools/app/account.js +69 -0
- package/dist/tools/app/account.js.map +1 -0
- package/dist/tools/app/analytics.d.ts +78 -0
- package/dist/tools/app/analytics.d.ts.map +1 -0
- package/dist/tools/app/analytics.js +158 -0
- package/dist/tools/app/analytics.js.map +1 -0
- package/dist/tools/app/api-keys.d.ts +195 -0
- package/dist/tools/app/api-keys.d.ts.map +1 -0
- package/dist/tools/app/api-keys.js +203 -0
- package/dist/tools/app/api-keys.js.map +1 -0
- package/dist/tools/app/billing.d.ts +78 -0
- package/dist/tools/app/billing.d.ts.map +1 -0
- package/dist/tools/app/billing.js +117 -0
- package/dist/tools/app/billing.js.map +1 -0
- package/dist/tools/app/bots.d.ts +641 -0
- package/dist/tools/app/bots.d.ts.map +1 -0
- package/dist/tools/app/bots.js +599 -0
- package/dist/tools/app/bots.js.map +1 -0
- package/dist/tools/app/broadcasts.d.ts +165 -0
- package/dist/tools/app/broadcasts.d.ts.map +1 -0
- package/dist/tools/app/broadcasts.js +219 -0
- package/dist/tools/app/broadcasts.js.map +1 -0
- package/dist/tools/app/channels.d.ts +126 -0
- package/dist/tools/app/channels.d.ts.map +1 -0
- package/dist/tools/app/channels.js +198 -0
- package/dist/tools/app/channels.js.map +1 -0
- package/dist/tools/app/chats.d.ts +90 -0
- package/dist/tools/app/chats.d.ts.map +1 -0
- package/dist/tools/app/chats.js +162 -0
- package/dist/tools/app/chats.js.map +1 -0
- package/dist/tools/app/contacts.d.ts +153 -0
- package/dist/tools/app/contacts.d.ts.map +1 -0
- package/dist/tools/app/contacts.js +186 -0
- package/dist/tools/app/contacts.js.map +1 -0
- package/dist/tools/app/coupons.d.ts +37 -0
- package/dist/tools/app/coupons.d.ts.map +1 -0
- package/dist/tools/app/coupons.js +70 -0
- package/dist/tools/app/coupons.js.map +1 -0
- package/dist/tools/app/custom-fields.d.ts +301 -0
- package/dist/tools/app/custom-fields.d.ts.map +1 -0
- package/dist/tools/app/custom-fields.js +265 -0
- package/dist/tools/app/custom-fields.js.map +1 -0
- package/dist/tools/app/dashboard-widgets.d.ts +121 -0
- package/dist/tools/app/dashboard-widgets.d.ts.map +1 -0
- package/dist/tools/app/dashboard-widgets.js +163 -0
- package/dist/tools/app/dashboard-widgets.js.map +1 -0
- package/dist/tools/app/dashboard.d.ts +18 -0
- package/dist/tools/app/dashboard.d.ts.map +1 -0
- package/dist/tools/app/dashboard.js +29 -0
- package/dist/tools/app/dashboard.js.map +1 -0
- package/dist/tools/app/ecommerce.d.ts +95 -0
- package/dist/tools/app/ecommerce.d.ts.map +1 -0
- package/dist/tools/app/ecommerce.js +109 -0
- package/dist/tools/app/ecommerce.js.map +1 -0
- package/dist/tools/app/events.d.ts +53 -0
- package/dist/tools/app/events.d.ts.map +1 -0
- package/dist/tools/app/events.js +66 -0
- package/dist/tools/app/events.js.map +1 -0
- package/dist/tools/app/exports.d.ts +81 -0
- package/dist/tools/app/exports.d.ts.map +1 -0
- package/dist/tools/app/exports.js +125 -0
- package/dist/tools/app/exports.js.map +1 -0
- package/dist/tools/app/feeds.d.ts +113 -0
- package/dist/tools/app/feeds.d.ts.map +1 -0
- package/dist/tools/app/feeds.js +166 -0
- package/dist/tools/app/feeds.js.map +1 -0
- package/dist/tools/app/flow-edges.d.ts +122 -0
- package/dist/tools/app/flow-edges.d.ts.map +1 -0
- package/dist/tools/app/flow-edges.js +130 -0
- package/dist/tools/app/flow-edges.js.map +1 -0
- package/dist/tools/app/flow-nodes.d.ts +122 -0
- package/dist/tools/app/flow-nodes.d.ts.map +1 -0
- package/dist/tools/app/flow-nodes.js +130 -0
- package/dist/tools/app/flow-nodes.js.map +1 -0
- package/dist/tools/app/flows.d.ts +136 -0
- package/dist/tools/app/flows.d.ts.map +1 -0
- package/dist/tools/app/flows.js +141 -0
- package/dist/tools/app/flows.js.map +1 -0
- package/dist/tools/app/funnels.d.ts +96 -0
- package/dist/tools/app/funnels.d.ts.map +1 -0
- package/dist/tools/app/funnels.js +127 -0
- package/dist/tools/app/funnels.js.map +1 -0
- package/dist/tools/app/index.d.ts +51 -0
- package/dist/tools/app/index.d.ts.map +1 -0
- package/dist/tools/app/index.js +121 -0
- package/dist/tools/app/index.js.map +1 -0
- package/dist/tools/app/media.d.ts +44 -0
- package/dist/tools/app/media.d.ts.map +1 -0
- package/dist/tools/app/media.js +183 -0
- package/dist/tools/app/media.js.map +1 -0
- package/dist/tools/app/message-events.d.ts +69 -0
- package/dist/tools/app/message-events.d.ts.map +1 -0
- package/dist/tools/app/message-events.js +72 -0
- package/dist/tools/app/message-events.js.map +1 -0
- package/dist/tools/app/messages.d.ts +380 -0
- package/dist/tools/app/messages.d.ts.map +1 -0
- package/dist/tools/app/messages.js +345 -0
- package/dist/tools/app/messages.js.map +1 -0
- package/dist/tools/app/object-folders.d.ts +82 -0
- package/dist/tools/app/object-folders.d.ts.map +1 -0
- package/dist/tools/app/object-folders.js +123 -0
- package/dist/tools/app/object-folders.js.map +1 -0
- package/dist/tools/app/plans.d.ts +53 -0
- package/dist/tools/app/plans.d.ts.map +1 -0
- package/dist/tools/app/plans.js +70 -0
- package/dist/tools/app/plans.js.map +1 -0
- package/dist/tools/app/polls.d.ts +227 -0
- package/dist/tools/app/polls.d.ts.map +1 -0
- package/dist/tools/app/polls.js +256 -0
- package/dist/tools/app/polls.js.map +1 -0
- package/dist/tools/app/qr-codes.d.ts +103 -0
- package/dist/tools/app/qr-codes.d.ts.map +1 -0
- package/dist/tools/app/qr-codes.js +160 -0
- package/dist/tools/app/qr-codes.js.map +1 -0
- package/dist/tools/app/segmentations.d.ts +132 -0
- package/dist/tools/app/segmentations.d.ts.map +1 -0
- package/dist/tools/app/segmentations.js +237 -0
- package/dist/tools/app/segmentations.js.map +1 -0
- package/dist/tools/app/settings.d.ts +75 -0
- package/dist/tools/app/settings.d.ts.map +1 -0
- package/dist/tools/app/settings.js +96 -0
- package/dist/tools/app/settings.js.map +1 -0
- package/dist/tools/app/shortlinks.d.ts +103 -0
- package/dist/tools/app/shortlinks.d.ts.map +1 -0
- package/dist/tools/app/shortlinks.js +158 -0
- package/dist/tools/app/shortlinks.js.map +1 -0
- package/dist/tools/app/super-widgets.d.ts +95 -0
- package/dist/tools/app/super-widgets.d.ts.map +1 -0
- package/dist/tools/app/super-widgets.js +124 -0
- package/dist/tools/app/super-widgets.js.map +1 -0
- package/dist/tools/app/tags.d.ts +267 -0
- package/dist/tools/app/tags.d.ts.map +1 -0
- package/dist/tools/app/tags.js +363 -0
- package/dist/tools/app/tags.js.map +1 -0
- package/dist/tools/app/team-members.d.ts +141 -0
- package/dist/tools/app/team-members.d.ts.map +1 -0
- package/dist/tools/app/team-members.js +195 -0
- package/dist/tools/app/team-members.js.map +1 -0
- package/dist/tools/app/templates.d.ts +212 -0
- package/dist/tools/app/templates.d.ts.map +1 -0
- package/dist/tools/app/templates.js +270 -0
- package/dist/tools/app/templates.js.map +1 -0
- package/dist/tools/app/tickets.d.ts +277 -0
- package/dist/tools/app/tickets.d.ts.map +1 -0
- package/dist/tools/app/tickets.js +266 -0
- package/dist/tools/app/tickets.js.map +1 -0
- package/dist/tools/app/users.d.ts +70 -0
- package/dist/tools/app/users.d.ts.map +1 -0
- package/dist/tools/app/users.js +72 -0
- package/dist/tools/app/users.js.map +1 -0
- package/dist/tools/app/webhooks.d.ts +61 -0
- package/dist/tools/app/webhooks.d.ts.map +1 -0
- package/dist/tools/app/webhooks.js +85 -0
- package/dist/tools/app/webhooks.js.map +1 -0
- package/dist/tools/app/widgets.d.ts +103 -0
- package/dist/tools/app/widgets.d.ts.map +1 -0
- package/dist/tools/app/widgets.js +128 -0
- package/dist/tools/app/widgets.js.map +1 -0
- package/dist/tools/public/health.d.ts +16 -0
- package/dist/tools/public/health.d.ts.map +1 -0
- package/dist/tools/public/health.js +27 -0
- package/dist/tools/public/health.js.map +1 -0
- package/dist/tools/public/index.d.ts +15 -0
- package/dist/tools/public/index.d.ts.map +1 -0
- package/dist/tools/public/index.js +10 -0
- package/dist/tools/public/index.js.map +1 -0
- package/dist/tools/tool-router.d.ts +21 -0
- package/dist/tools/tool-router.d.ts.map +1 -0
- package/dist/tools/tool-router.js +118 -0
- package/dist/tools/tool-router.js.map +1 -0
- package/dist/types/index.d.ts +73 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { ApiClient } from '../../client/api-client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Widgets Tools
|
|
4
|
+
* Widget and superwidget management
|
|
5
|
+
*/
|
|
6
|
+
export declare function listWidgets(apiClient: ApiClient, args: any): Promise<any>;
|
|
7
|
+
export declare function getWidget(apiClient: ApiClient, args: {
|
|
8
|
+
id: number;
|
|
9
|
+
}): Promise<any>;
|
|
10
|
+
export declare function createWidget(apiClient: ApiClient, args: any): Promise<any>;
|
|
11
|
+
export declare function updateWidget(apiClient: ApiClient, args: any): Promise<any>;
|
|
12
|
+
export declare function deleteWidget(apiClient: ApiClient, args: {
|
|
13
|
+
id: number;
|
|
14
|
+
}): Promise<any>;
|
|
15
|
+
export declare const widgetTools: ({
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: string;
|
|
20
|
+
properties: {
|
|
21
|
+
page: {
|
|
22
|
+
type: string;
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
limit: {
|
|
26
|
+
type: string;
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
id?: undefined;
|
|
30
|
+
name?: undefined;
|
|
31
|
+
type?: undefined;
|
|
32
|
+
config?: undefined;
|
|
33
|
+
};
|
|
34
|
+
required?: undefined;
|
|
35
|
+
};
|
|
36
|
+
} | {
|
|
37
|
+
name: string;
|
|
38
|
+
description: string;
|
|
39
|
+
inputSchema: {
|
|
40
|
+
type: string;
|
|
41
|
+
properties: {
|
|
42
|
+
id: {
|
|
43
|
+
type: string;
|
|
44
|
+
description: string;
|
|
45
|
+
};
|
|
46
|
+
page?: undefined;
|
|
47
|
+
limit?: undefined;
|
|
48
|
+
name?: undefined;
|
|
49
|
+
type?: undefined;
|
|
50
|
+
config?: undefined;
|
|
51
|
+
};
|
|
52
|
+
required: string[];
|
|
53
|
+
};
|
|
54
|
+
} | {
|
|
55
|
+
name: string;
|
|
56
|
+
description: string;
|
|
57
|
+
inputSchema: {
|
|
58
|
+
type: string;
|
|
59
|
+
properties: {
|
|
60
|
+
name: {
|
|
61
|
+
type: string;
|
|
62
|
+
description: string;
|
|
63
|
+
};
|
|
64
|
+
type: {
|
|
65
|
+
type: string;
|
|
66
|
+
description: string;
|
|
67
|
+
};
|
|
68
|
+
config: {
|
|
69
|
+
type: string;
|
|
70
|
+
description: string;
|
|
71
|
+
};
|
|
72
|
+
page?: undefined;
|
|
73
|
+
limit?: undefined;
|
|
74
|
+
id?: undefined;
|
|
75
|
+
};
|
|
76
|
+
required: string[];
|
|
77
|
+
};
|
|
78
|
+
} | {
|
|
79
|
+
name: string;
|
|
80
|
+
description: string;
|
|
81
|
+
inputSchema: {
|
|
82
|
+
type: string;
|
|
83
|
+
properties: {
|
|
84
|
+
id: {
|
|
85
|
+
type: string;
|
|
86
|
+
description: string;
|
|
87
|
+
};
|
|
88
|
+
name: {
|
|
89
|
+
type: string;
|
|
90
|
+
description: string;
|
|
91
|
+
};
|
|
92
|
+
config: {
|
|
93
|
+
type: string;
|
|
94
|
+
description: string;
|
|
95
|
+
};
|
|
96
|
+
page?: undefined;
|
|
97
|
+
limit?: undefined;
|
|
98
|
+
type?: undefined;
|
|
99
|
+
};
|
|
100
|
+
required: string[];
|
|
101
|
+
};
|
|
102
|
+
})[];
|
|
103
|
+
//# sourceMappingURL=widgets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgets.d.ts","sourceRoot":"","sources":["../../../src/tools/app/widgets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;GAGG;AAEH,wBAAsB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAgB/E;AAED,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAWxF;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAWhF;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAYhF;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAW3F;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4DvB,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Widgets Tools
|
|
3
|
+
* Widget and superwidget management
|
|
4
|
+
*/
|
|
5
|
+
export async function listWidgets(apiClient, args) {
|
|
6
|
+
const params = new URLSearchParams();
|
|
7
|
+
if (args.page)
|
|
8
|
+
params.append('page', args.page.toString());
|
|
9
|
+
if (args.limit)
|
|
10
|
+
params.append('limit', args.limit.toString());
|
|
11
|
+
const query = params.toString() ? `?${params.toString()}` : '';
|
|
12
|
+
const response = await apiClient.get(`/v1/widgets${query}`);
|
|
13
|
+
return {
|
|
14
|
+
content: [
|
|
15
|
+
{
|
|
16
|
+
type: 'text',
|
|
17
|
+
text: JSON.stringify(response, null, 2),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export async function getWidget(apiClient, args) {
|
|
23
|
+
const response = await apiClient.get(`/v1/widgets/${args.id}`);
|
|
24
|
+
return {
|
|
25
|
+
content: [
|
|
26
|
+
{
|
|
27
|
+
type: 'text',
|
|
28
|
+
text: JSON.stringify(response, null, 2),
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export async function createWidget(apiClient, args) {
|
|
34
|
+
const response = await apiClient.post('/v1/widgets', args);
|
|
35
|
+
return {
|
|
36
|
+
content: [
|
|
37
|
+
{
|
|
38
|
+
type: 'text',
|
|
39
|
+
text: JSON.stringify(response, null, 2),
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export async function updateWidget(apiClient, args) {
|
|
45
|
+
const { id, ...data } = args;
|
|
46
|
+
const response = await apiClient.put(`/v1/widgets/${id}`, data);
|
|
47
|
+
return {
|
|
48
|
+
content: [
|
|
49
|
+
{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: JSON.stringify(response, null, 2),
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export async function deleteWidget(apiClient, args) {
|
|
57
|
+
await apiClient.delete(`/v1/widgets/${args.id}`);
|
|
58
|
+
return {
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: 'text',
|
|
62
|
+
text: 'Widget deleted successfully',
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export const widgetTools = [
|
|
68
|
+
{
|
|
69
|
+
name: 'list_widgets',
|
|
70
|
+
description: 'List all widgets',
|
|
71
|
+
inputSchema: {
|
|
72
|
+
type: 'object',
|
|
73
|
+
properties: {
|
|
74
|
+
page: { type: 'number', description: 'Page number (default: 1)' },
|
|
75
|
+
limit: { type: 'number', description: 'Items per page (default: 10)' },
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'get_widget',
|
|
81
|
+
description: 'Get a specific widget by ID',
|
|
82
|
+
inputSchema: {
|
|
83
|
+
type: 'object',
|
|
84
|
+
properties: {
|
|
85
|
+
id: { type: 'number', description: 'Widget ID' },
|
|
86
|
+
},
|
|
87
|
+
required: ['id'],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'create_widget',
|
|
92
|
+
description: 'Create a new widget',
|
|
93
|
+
inputSchema: {
|
|
94
|
+
type: 'object',
|
|
95
|
+
properties: {
|
|
96
|
+
name: { type: 'string', description: 'Widget name' },
|
|
97
|
+
type: { type: 'string', description: 'Widget type' },
|
|
98
|
+
config: { type: 'object', description: 'Widget configuration' },
|
|
99
|
+
},
|
|
100
|
+
required: ['name', 'type'],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'update_widget',
|
|
105
|
+
description: 'Update an existing widget',
|
|
106
|
+
inputSchema: {
|
|
107
|
+
type: 'object',
|
|
108
|
+
properties: {
|
|
109
|
+
id: { type: 'number', description: 'Widget ID' },
|
|
110
|
+
name: { type: 'string', description: 'Widget name' },
|
|
111
|
+
config: { type: 'object', description: 'Widget configuration' },
|
|
112
|
+
},
|
|
113
|
+
required: ['id'],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: 'delete_widget',
|
|
118
|
+
description: 'Delete a widget',
|
|
119
|
+
inputSchema: {
|
|
120
|
+
type: 'object',
|
|
121
|
+
properties: {
|
|
122
|
+
id: { type: 'number', description: 'Widget ID' },
|
|
123
|
+
},
|
|
124
|
+
required: ['id'],
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
];
|
|
128
|
+
//# sourceMappingURL=widgets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../../../src/tools/app/widgets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public Tools - Health Check
|
|
3
|
+
* No authentication required
|
|
4
|
+
*/
|
|
5
|
+
import type { ApiClient } from '../../client/api-client.js';
|
|
6
|
+
export declare function getHealth(apiClient: ApiClient): Promise<any>;
|
|
7
|
+
export declare const healthTools: {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: string;
|
|
12
|
+
properties: {};
|
|
13
|
+
required: never[];
|
|
14
|
+
};
|
|
15
|
+
}[];
|
|
16
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/tools/public/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAWlE;AAED,eAAO,MAAM,WAAW;;;;;;;;GAUvB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public Tools - Health Check
|
|
3
|
+
* No authentication required
|
|
4
|
+
*/
|
|
5
|
+
export async function getHealth(apiClient) {
|
|
6
|
+
const response = await apiClient.get('/v1/health');
|
|
7
|
+
return {
|
|
8
|
+
content: [
|
|
9
|
+
{
|
|
10
|
+
type: 'text',
|
|
11
|
+
text: JSON.stringify(response, null, 2),
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export const healthTools = [
|
|
17
|
+
{
|
|
18
|
+
name: 'get_health',
|
|
19
|
+
description: 'Get API health status and uptime information',
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {},
|
|
23
|
+
required: [],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/tools/public/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAAoB;IAClD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEnD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public Tools - Index
|
|
3
|
+
* Aggregates all public tools
|
|
4
|
+
*/
|
|
5
|
+
export { getHealth, healthTools } from './health.js';
|
|
6
|
+
export declare const publicTools: {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: string;
|
|
11
|
+
properties: {};
|
|
12
|
+
required: never[];
|
|
13
|
+
};
|
|
14
|
+
}[];
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/public/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErD,eAAO,MAAM,WAAW;;;;;;;;GAEvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/public/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,WAAW;CACf,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Tool Router
|
|
3
|
+
* Auto-registers tool handlers by matching tool names to exported handler functions.
|
|
4
|
+
*
|
|
5
|
+
* Convention: tool name in snake_case maps to handler function in camelCase.
|
|
6
|
+
* Example: 'list_channels' -> listChannels, 'admin_get_plan' -> adminGetPlan
|
|
7
|
+
*/
|
|
8
|
+
import type { ApiClient } from '../client/api-client.js';
|
|
9
|
+
/**
|
|
10
|
+
* Execute a tool by name
|
|
11
|
+
*/
|
|
12
|
+
export declare function executeTool(name: string, apiClient: ApiClient, args: any): Promise<any>;
|
|
13
|
+
/**
|
|
14
|
+
* Check if a tool exists
|
|
15
|
+
*/
|
|
16
|
+
export declare function hasToolHandler(name: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Get count of registered tools (useful for diagnostics)
|
|
19
|
+
*/
|
|
20
|
+
export declare function getRegisteredToolCount(): number;
|
|
21
|
+
//# sourceMappingURL=tool-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-router.d.ts","sourceRoot":"","sources":["../../src/tools/tool-router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAmHzD;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAQ7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Tool Router
|
|
3
|
+
* Auto-registers tool handlers by matching tool names to exported handler functions.
|
|
4
|
+
*
|
|
5
|
+
* Convention: tool name in snake_case maps to handler function in camelCase.
|
|
6
|
+
* Example: 'list_channels' -> listChannels, 'admin_get_plan' -> adminGetPlan
|
|
7
|
+
*/
|
|
8
|
+
// Import all tool handlers (namespace imports)
|
|
9
|
+
import * as publicHandlers from './public/index.js';
|
|
10
|
+
import * as appHandlers from './app/index.js';
|
|
11
|
+
import * as adminHandlers from './admin/index.js';
|
|
12
|
+
import * as internalHandlers from './internal/index.js';
|
|
13
|
+
// Import tool definition arrays
|
|
14
|
+
import { publicTools } from './public/index.js';
|
|
15
|
+
import { appTools } from './app/index.js';
|
|
16
|
+
import { adminTools } from './admin/index.js';
|
|
17
|
+
import { internalTools } from './internal/index.js';
|
|
18
|
+
/**
|
|
19
|
+
* Tool registry mapping tool names to handlers
|
|
20
|
+
*/
|
|
21
|
+
const toolRegistry = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* Convert snake_case tool name to camelCase handler function name.
|
|
24
|
+
* Example: 'list_channels' -> 'listChannels'
|
|
25
|
+
* 'admin_get_plan' -> 'adminGetPlan'
|
|
26
|
+
*/
|
|
27
|
+
function snakeToCamel(name) {
|
|
28
|
+
return name.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Generate candidate handler names for a tool.
|
|
32
|
+
*
|
|
33
|
+
* Tool naming conventions vary across scopes:
|
|
34
|
+
* - app: 'list_channels' -> listChannels
|
|
35
|
+
* - admin: 'admin_list_plans' -> listAdminPlans
|
|
36
|
+
* - internal: 'internal_list_companies' -> listCompanies
|
|
37
|
+
*
|
|
38
|
+
* This function returns all plausible camelCase names to try.
|
|
39
|
+
*/
|
|
40
|
+
function getCandidateNames(toolName, scope) {
|
|
41
|
+
const direct = snakeToCamel(toolName);
|
|
42
|
+
const candidates = [direct];
|
|
43
|
+
// For prefixed scopes, also try rearranged and stripped variants
|
|
44
|
+
const prefixes = ['admin_', 'internal_'];
|
|
45
|
+
for (const prefix of prefixes) {
|
|
46
|
+
if (toolName.startsWith(prefix)) {
|
|
47
|
+
const withoutPrefix = toolName.slice(prefix.length);
|
|
48
|
+
const prefixCapitalized = prefix.charAt(0).toUpperCase() + prefix.slice(1, -1); // 'Admin' or 'Internal'
|
|
49
|
+
const parts = withoutPrefix.split('_');
|
|
50
|
+
// Try inserting the prefix word after each possible verb position
|
|
51
|
+
// 'admin_bulk_delete_plans' -> try 'bulkAdminDeletePlans', 'bulkDeleteAdminPlans'
|
|
52
|
+
for (let i = 1; i <= parts.length; i++) {
|
|
53
|
+
const verbParts = parts.slice(0, i);
|
|
54
|
+
const restParts = parts.slice(i);
|
|
55
|
+
const verb = verbParts[0] + verbParts.slice(1).map(p => p.charAt(0).toUpperCase() + p.slice(1)).join('');
|
|
56
|
+
const rest = restParts.map(p => p.charAt(0).toUpperCase() + p.slice(1)).join('');
|
|
57
|
+
candidates.push(verb + prefixCapitalized + rest);
|
|
58
|
+
}
|
|
59
|
+
// 'internal_list_companies' -> 'listCompanies' (strip prefix entirely)
|
|
60
|
+
candidates.push(snakeToCamel(withoutPrefix));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return candidates;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Auto-register tools by matching tool definition names to handler functions.
|
|
67
|
+
* Tries multiple naming conventions for flexibility.
|
|
68
|
+
*/
|
|
69
|
+
function autoRegister(tools, handlers, scope) {
|
|
70
|
+
for (const tool of tools) {
|
|
71
|
+
const candidates = getCandidateNames(tool.name, scope);
|
|
72
|
+
let found = false;
|
|
73
|
+
for (const name of candidates) {
|
|
74
|
+
if (typeof handlers[name] === 'function') {
|
|
75
|
+
toolRegistry.set(tool.name, handlers[name]);
|
|
76
|
+
found = true;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (!found) {
|
|
81
|
+
console.error(`[tool-router] WARNING: No handler found for tool '${tool.name}' (tried: ${candidates.join(', ')}) in ${scope} handlers`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Register all tool handlers
|
|
87
|
+
*/
|
|
88
|
+
function registerTools() {
|
|
89
|
+
autoRegister(publicTools, publicHandlers, 'public');
|
|
90
|
+
autoRegister(appTools, appHandlers, 'app');
|
|
91
|
+
autoRegister(adminTools, adminHandlers, 'admin');
|
|
92
|
+
autoRegister(internalTools, internalHandlers, 'internal');
|
|
93
|
+
}
|
|
94
|
+
// Initialize registry
|
|
95
|
+
registerTools();
|
|
96
|
+
/**
|
|
97
|
+
* Execute a tool by name
|
|
98
|
+
*/
|
|
99
|
+
export async function executeTool(name, apiClient, args) {
|
|
100
|
+
const handler = toolRegistry.get(name);
|
|
101
|
+
if (!handler) {
|
|
102
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
103
|
+
}
|
|
104
|
+
return await handler(apiClient, args);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if a tool exists
|
|
108
|
+
*/
|
|
109
|
+
export function hasToolHandler(name) {
|
|
110
|
+
return toolRegistry.has(name);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get count of registered tools (useful for diagnostics)
|
|
114
|
+
*/
|
|
115
|
+
export function getRegisteredToolCount() {
|
|
116
|
+
return toolRegistry.size;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=tool-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-router.js","sourceRoot":"","sources":["../../src/tools/tool-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the MCP Server
|
|
3
|
+
*/
|
|
4
|
+
export interface TenantConfig {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
apiUrl: string;
|
|
8
|
+
apiKey: string;
|
|
9
|
+
scope: 'public' | 'app' | 'admin' | 'internal';
|
|
10
|
+
enabledTools?: string[];
|
|
11
|
+
/** Optional credentials for JWT-based auth (required for /admin/* endpoints) */
|
|
12
|
+
username?: string;
|
|
13
|
+
password?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface TenantsConfig {
|
|
16
|
+
tenants: TenantConfig[];
|
|
17
|
+
}
|
|
18
|
+
export interface PaginationParams {
|
|
19
|
+
page?: number;
|
|
20
|
+
limit?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface Channel {
|
|
23
|
+
id: number;
|
|
24
|
+
name: string;
|
|
25
|
+
gatewayType: number;
|
|
26
|
+
status: string;
|
|
27
|
+
createdAt?: string;
|
|
28
|
+
updatedAt?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface Contact {
|
|
31
|
+
id: number;
|
|
32
|
+
channelId: number;
|
|
33
|
+
phoneNumber: string;
|
|
34
|
+
name?: string;
|
|
35
|
+
email?: string;
|
|
36
|
+
createdAt?: string;
|
|
37
|
+
updatedAt?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface Message {
|
|
40
|
+
id: number;
|
|
41
|
+
channelId: number;
|
|
42
|
+
contactId: number;
|
|
43
|
+
content: string;
|
|
44
|
+
direction: 'inbound' | 'outbound';
|
|
45
|
+
status: string;
|
|
46
|
+
createdAt?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface Broadcast {
|
|
49
|
+
id: number;
|
|
50
|
+
name: string;
|
|
51
|
+
channelId: number;
|
|
52
|
+
status: string;
|
|
53
|
+
scheduledAt?: string;
|
|
54
|
+
createdAt?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface PlatformStats {
|
|
57
|
+
totalUsers: number;
|
|
58
|
+
activeUsers: number;
|
|
59
|
+
totalMessages: number;
|
|
60
|
+
totalChannels: number;
|
|
61
|
+
}
|
|
62
|
+
export interface UserAnalytics {
|
|
63
|
+
newUsers: number;
|
|
64
|
+
activeUsers: number;
|
|
65
|
+
period: string;
|
|
66
|
+
}
|
|
67
|
+
export interface RevenueStats {
|
|
68
|
+
totalRevenue: number;
|
|
69
|
+
mrr: number;
|
|
70
|
+
currency: string;
|
|
71
|
+
period: string;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@instantkom/mcp-server",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Model Context Protocol Server for the instantKOM REST API. Lets Claude Code, Claude Desktop and other MCP-compatible AI assistants drive your instantKOM messengerzentrale.",
|
|
5
|
+
"main": "dist/index.public.js",
|
|
6
|
+
"types": "dist/index.public.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"instantkom-mcp": "./dist/index.public.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist/index.public.js",
|
|
13
|
+
"dist/index.public.js.map",
|
|
14
|
+
"dist/index.public.d.ts",
|
|
15
|
+
"dist/index.public.d.ts.map",
|
|
16
|
+
"dist/client/**",
|
|
17
|
+
"dist/types/**",
|
|
18
|
+
"dist/tools/public/**",
|
|
19
|
+
"dist/tools/app/**",
|
|
20
|
+
"dist/tools/tool-router.js",
|
|
21
|
+
"dist/tools/tool-router.js.map",
|
|
22
|
+
"dist/tools/tool-router.d.ts",
|
|
23
|
+
"dist/tools/tool-router.d.ts.map",
|
|
24
|
+
"README.md",
|
|
25
|
+
"LICENSE"
|
|
26
|
+
],
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=18"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsc && cp src/config/tenants.json dist/config/tenants.json && chmod +x dist/index.js && chmod +x dist/index.public.js",
|
|
32
|
+
"build:public": "tsc && chmod +x dist/index.public.js",
|
|
33
|
+
"dev": "tsx watch src/index.ts",
|
|
34
|
+
"start": "node dist/index.js",
|
|
35
|
+
"test": "vitest run",
|
|
36
|
+
"test:watch": "vitest",
|
|
37
|
+
"test:unit": "vitest run --project unit",
|
|
38
|
+
"test:contract": "vitest run --project contract",
|
|
39
|
+
"test:integration": "IKM_INTEGRATION_TEST=1 vitest run --project integration",
|
|
40
|
+
"test:coverage": "vitest run --coverage",
|
|
41
|
+
"check:api-coverage": "node scripts/check-api-coverage.js",
|
|
42
|
+
"check:public-package": "node scripts/check-public-package.cjs",
|
|
43
|
+
"prepublishOnly": "npm run build:public && npm run check:public-package"
|
|
44
|
+
},
|
|
45
|
+
"keywords": [
|
|
46
|
+
"mcp",
|
|
47
|
+
"model-context-protocol",
|
|
48
|
+
"instantkom",
|
|
49
|
+
"messenger",
|
|
50
|
+
"whatsapp",
|
|
51
|
+
"telegram",
|
|
52
|
+
"signal",
|
|
53
|
+
"claude",
|
|
54
|
+
"anthropic",
|
|
55
|
+
"ai",
|
|
56
|
+
"api"
|
|
57
|
+
],
|
|
58
|
+
"author": "instantKOM",
|
|
59
|
+
"license": "MIT",
|
|
60
|
+
"homepage": "https://github.com/instantKOM/mcp-server#readme",
|
|
61
|
+
"repository": {
|
|
62
|
+
"type": "git",
|
|
63
|
+
"url": "git+https://github.com/instantKOM/mcp-server.git"
|
|
64
|
+
},
|
|
65
|
+
"bugs": {
|
|
66
|
+
"url": "https://github.com/instantKOM/mcp-server/issues"
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
70
|
+
"dotenv": "^17.4.2",
|
|
71
|
+
"node-fetch": "^3.3.2"
|
|
72
|
+
},
|
|
73
|
+
"devDependencies": {
|
|
74
|
+
"@types/node": "^25.6.2",
|
|
75
|
+
"@vitest/coverage-v8": "^4.1.5",
|
|
76
|
+
"tsx": "^4.21.0",
|
|
77
|
+
"typescript": "^6.0.3",
|
|
78
|
+
"vitest": "^4.0.18"
|
|
79
|
+
},
|
|
80
|
+
"overrides": {
|
|
81
|
+
"path-to-regexp": "^8.4.0",
|
|
82
|
+
"hono": "^4.12.16",
|
|
83
|
+
"ip-address": "^10.2.0"
|
|
84
|
+
},
|
|
85
|
+
"publishConfig": {
|
|
86
|
+
"access": "public",
|
|
87
|
+
"provenance": true
|
|
88
|
+
}
|
|
89
|
+
}
|