@lkbaba/grok-mcp 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.
Files changed (40) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/LICENSE +21 -0
  3. package/README.md +179 -0
  4. package/dist/config/index.d.ts +48 -0
  5. package/dist/config/index.d.ts.map +1 -0
  6. package/dist/config/index.js +101 -0
  7. package/dist/config/index.js.map +1 -0
  8. package/dist/index.d.ts +7 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +182 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/tools/agent-search.d.ts +14 -0
  13. package/dist/tools/agent-search.d.ts.map +1 -0
  14. package/dist/tools/agent-search.js +135 -0
  15. package/dist/tools/agent-search.js.map +1 -0
  16. package/dist/tools/brainstorm.d.ts +14 -0
  17. package/dist/tools/brainstorm.d.ts.map +1 -0
  18. package/dist/tools/brainstorm.js +208 -0
  19. package/dist/tools/brainstorm.js.map +1 -0
  20. package/dist/tools/definitions.d.ts +310 -0
  21. package/dist/tools/definitions.d.ts.map +1 -0
  22. package/dist/tools/definitions.js +187 -0
  23. package/dist/tools/definitions.js.map +1 -0
  24. package/dist/types/index.d.ts +210 -0
  25. package/dist/types/index.d.ts.map +1 -0
  26. package/dist/types/index.js +7 -0
  27. package/dist/types/index.js.map +1 -0
  28. package/dist/utils/grok-client.d.ts +53 -0
  29. package/dist/utils/grok-client.d.ts.map +1 -0
  30. package/dist/utils/grok-client.js +147 -0
  31. package/dist/utils/grok-client.js.map +1 -0
  32. package/dist/utils/logger.d.ts +52 -0
  33. package/dist/utils/logger.d.ts.map +1 -0
  34. package/dist/utils/logger.js +97 -0
  35. package/dist/utils/logger.js.map +1 -0
  36. package/dist/utils/tool-builder.d.ts +66 -0
  37. package/dist/utils/tool-builder.d.ts.map +1 -0
  38. package/dist/utils/tool-builder.js +187 -0
  39. package/dist/utils/tool-builder.js.map +1 -0
  40. package/package.json +67 -0
@@ -0,0 +1,310 @@
1
+ /**
2
+ * MCP Tool Definitions
3
+ *
4
+ * Defines JSON Schema for all tools provided by Grok-MCP
5
+ */
6
+ /**
7
+ * grok_agent_search tool definition
8
+ *
9
+ * Intelligent search using Grok AI, supports Web search, X search, or mixed search
10
+ */
11
+ export declare const grokAgentSearchTool: {
12
+ name: string;
13
+ description: string;
14
+ inputSchema: {
15
+ type: string;
16
+ properties: {
17
+ query: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ search_type: {
22
+ type: string;
23
+ enum: string[];
24
+ description: string;
25
+ default: string;
26
+ };
27
+ model: {
28
+ type: string;
29
+ enum: ("grok-4.20-beta" | "grok-4-latest")[];
30
+ description: string;
31
+ default: string;
32
+ };
33
+ output_format: {
34
+ type: string;
35
+ enum: string[];
36
+ description: string;
37
+ default: string;
38
+ };
39
+ web_search_config: {
40
+ type: string;
41
+ description: string;
42
+ properties: {
43
+ enable_image_understanding: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ allowed_domains: {
48
+ type: string;
49
+ items: {
50
+ type: string;
51
+ };
52
+ description: string;
53
+ maxItems: number;
54
+ };
55
+ excluded_domains: {
56
+ type: string;
57
+ items: {
58
+ type: string;
59
+ };
60
+ description: string;
61
+ maxItems: number;
62
+ };
63
+ };
64
+ };
65
+ x_search_config: {
66
+ type: string;
67
+ description: string;
68
+ properties: {
69
+ from_date: {
70
+ type: string;
71
+ description: string;
72
+ };
73
+ to_date: {
74
+ type: string;
75
+ description: string;
76
+ };
77
+ enable_image_understanding: {
78
+ type: string;
79
+ description: string;
80
+ };
81
+ enable_video_understanding: {
82
+ type: string;
83
+ description: string;
84
+ };
85
+ allowed_x_handles: {
86
+ type: string;
87
+ items: {
88
+ type: string;
89
+ };
90
+ description: string;
91
+ maxItems: number;
92
+ };
93
+ excluded_x_handles: {
94
+ type: string;
95
+ items: {
96
+ type: string;
97
+ };
98
+ description: string;
99
+ maxItems: number;
100
+ };
101
+ };
102
+ };
103
+ };
104
+ required: string[];
105
+ };
106
+ };
107
+ /**
108
+ * grok_brainstorm tool definition
109
+ *
110
+ * Creative brainstorming using Grok AI
111
+ */
112
+ export declare const grokBrainstormTool: {
113
+ name: string;
114
+ description: string;
115
+ inputSchema: {
116
+ type: string;
117
+ properties: {
118
+ topic: {
119
+ type: string;
120
+ description: string;
121
+ };
122
+ context: {
123
+ type: string;
124
+ description: string;
125
+ };
126
+ context_files: {
127
+ type: string;
128
+ items: {
129
+ type: string;
130
+ };
131
+ description: string;
132
+ };
133
+ count: {
134
+ type: string;
135
+ description: string;
136
+ default: number;
137
+ minimum: number;
138
+ maximum: number;
139
+ };
140
+ style: {
141
+ type: string;
142
+ enum: string[];
143
+ description: string;
144
+ default: string;
145
+ };
146
+ model: {
147
+ type: string;
148
+ enum: ("grok-4.20-beta" | "grok-4-latest")[];
149
+ description: string;
150
+ default: string;
151
+ };
152
+ output_format: {
153
+ type: string;
154
+ enum: string[];
155
+ description: string;
156
+ default: string;
157
+ };
158
+ };
159
+ required: string[];
160
+ };
161
+ };
162
+ /**
163
+ * Array of all tool definitions
164
+ */
165
+ export declare const TOOL_DEFINITIONS: ({
166
+ name: string;
167
+ description: string;
168
+ inputSchema: {
169
+ type: string;
170
+ properties: {
171
+ query: {
172
+ type: string;
173
+ description: string;
174
+ };
175
+ search_type: {
176
+ type: string;
177
+ enum: string[];
178
+ description: string;
179
+ default: string;
180
+ };
181
+ model: {
182
+ type: string;
183
+ enum: ("grok-4.20-beta" | "grok-4-latest")[];
184
+ description: string;
185
+ default: string;
186
+ };
187
+ output_format: {
188
+ type: string;
189
+ enum: string[];
190
+ description: string;
191
+ default: string;
192
+ };
193
+ web_search_config: {
194
+ type: string;
195
+ description: string;
196
+ properties: {
197
+ enable_image_understanding: {
198
+ type: string;
199
+ description: string;
200
+ };
201
+ allowed_domains: {
202
+ type: string;
203
+ items: {
204
+ type: string;
205
+ };
206
+ description: string;
207
+ maxItems: number;
208
+ };
209
+ excluded_domains: {
210
+ type: string;
211
+ items: {
212
+ type: string;
213
+ };
214
+ description: string;
215
+ maxItems: number;
216
+ };
217
+ };
218
+ };
219
+ x_search_config: {
220
+ type: string;
221
+ description: string;
222
+ properties: {
223
+ from_date: {
224
+ type: string;
225
+ description: string;
226
+ };
227
+ to_date: {
228
+ type: string;
229
+ description: string;
230
+ };
231
+ enable_image_understanding: {
232
+ type: string;
233
+ description: string;
234
+ };
235
+ enable_video_understanding: {
236
+ type: string;
237
+ description: string;
238
+ };
239
+ allowed_x_handles: {
240
+ type: string;
241
+ items: {
242
+ type: string;
243
+ };
244
+ description: string;
245
+ maxItems: number;
246
+ };
247
+ excluded_x_handles: {
248
+ type: string;
249
+ items: {
250
+ type: string;
251
+ };
252
+ description: string;
253
+ maxItems: number;
254
+ };
255
+ };
256
+ };
257
+ };
258
+ required: string[];
259
+ };
260
+ } | {
261
+ name: string;
262
+ description: string;
263
+ inputSchema: {
264
+ type: string;
265
+ properties: {
266
+ topic: {
267
+ type: string;
268
+ description: string;
269
+ };
270
+ context: {
271
+ type: string;
272
+ description: string;
273
+ };
274
+ context_files: {
275
+ type: string;
276
+ items: {
277
+ type: string;
278
+ };
279
+ description: string;
280
+ };
281
+ count: {
282
+ type: string;
283
+ description: string;
284
+ default: number;
285
+ minimum: number;
286
+ maximum: number;
287
+ };
288
+ style: {
289
+ type: string;
290
+ enum: string[];
291
+ description: string;
292
+ default: string;
293
+ };
294
+ model: {
295
+ type: string;
296
+ enum: ("grok-4.20-beta" | "grok-4-latest")[];
297
+ description: string;
298
+ default: string;
299
+ };
300
+ output_format: {
301
+ type: string;
302
+ enum: string[];
303
+ description: string;
304
+ default: string;
305
+ };
306
+ };
307
+ required: string[];
308
+ };
309
+ })[];
310
+ //# sourceMappingURL=definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4G/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoE9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAG5B,CAAC"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * MCP Tool Definitions
3
+ *
4
+ * Defines JSON Schema for all tools provided by Grok-MCP
5
+ */
6
+ import { SUPPORTED_MODELS } from '../config/index.js';
7
+ /**
8
+ * grok_agent_search tool definition
9
+ *
10
+ * Intelligent search using Grok AI, supports Web search, X search, or mixed search
11
+ */
12
+ export const grokAgentSearchTool = {
13
+ name: 'grok_agent_search',
14
+ description: 'Intelligent search powered by Grok AI. Supports Web search, X (Twitter) search, or mixed search. ' +
15
+ 'Grok automatically analyzes queries, executes searches, synthesizes information, and provides cited answers. ' +
16
+ 'Ideal for getting latest information, researching topics, and tracking social media trends.',
17
+ inputSchema: {
18
+ type: 'object',
19
+ properties: {
20
+ query: {
21
+ type: 'string',
22
+ description: 'Search query content',
23
+ },
24
+ search_type: {
25
+ type: 'string',
26
+ enum: ['web', 'x', 'mixed'],
27
+ description: 'Search type:\n' +
28
+ '- web: Web search only\n' +
29
+ '- x: X (Twitter) search only\n' +
30
+ '- mixed: Both Web and X search (recommended)',
31
+ default: 'mixed',
32
+ },
33
+ model: {
34
+ type: 'string',
35
+ enum: [...SUPPORTED_MODELS],
36
+ description: 'Grok model to use:\n' +
37
+ '- grok-4.20-beta: Fast, affordable, 2M context (default)\n' +
38
+ '- grok-4-latest: Highest quality, for complex tasks',
39
+ default: 'grok-4.20-beta',
40
+ },
41
+ output_format: {
42
+ type: 'string',
43
+ enum: ['text', 'json'],
44
+ description: 'Output format:\n' +
45
+ '- text: Markdown format (default)\n' +
46
+ '- json: Structured JSON format',
47
+ default: 'text',
48
+ },
49
+ web_search_config: {
50
+ type: 'object',
51
+ description: 'Web search config (when search_type is web or mixed)',
52
+ properties: {
53
+ enable_image_understanding: {
54
+ type: 'boolean',
55
+ description: 'Enable image understanding, allows Grok to analyze images in search results',
56
+ },
57
+ allowed_domains: {
58
+ type: 'array',
59
+ items: { type: 'string' },
60
+ description: 'Only search specified domains (max 5), e.g.: ["wikipedia.org", "github.com"]',
61
+ maxItems: 5,
62
+ },
63
+ excluded_domains: {
64
+ type: 'array',
65
+ items: { type: 'string' },
66
+ description: 'Exclude specified domains (max 5), e.g.: ["example.com"]',
67
+ maxItems: 5,
68
+ },
69
+ },
70
+ },
71
+ x_search_config: {
72
+ type: 'object',
73
+ description: 'X search config (when search_type is x or mixed)',
74
+ properties: {
75
+ from_date: {
76
+ type: 'string',
77
+ description: 'Start date, ISO8601 format, e.g.: 2024-01-01T00:00:00Z\n' +
78
+ 'Used to limit the search time range start',
79
+ },
80
+ to_date: {
81
+ type: 'string',
82
+ description: 'End date, ISO8601 format, e.g.: 2024-12-31T23:59:59Z\n' +
83
+ 'Used to limit the search time range end',
84
+ },
85
+ enable_image_understanding: {
86
+ type: 'boolean',
87
+ description: 'Enable image understanding, allows Grok to analyze images in tweets',
88
+ },
89
+ enable_video_understanding: {
90
+ type: 'boolean',
91
+ description: 'Enable video understanding, allows Grok to analyze video content in tweets',
92
+ },
93
+ allowed_x_handles: {
94
+ type: 'array',
95
+ items: { type: 'string' },
96
+ description: 'Only search tweets from specified X accounts (max 10), e.g.: ["elonmusk", "OpenAI"]\n' +
97
+ 'Note: No @ prefix needed',
98
+ maxItems: 10,
99
+ },
100
+ excluded_x_handles: {
101
+ type: 'array',
102
+ items: { type: 'string' },
103
+ description: 'Exclude tweets from specified X accounts (max 10), e.g.: ["spam_account"]\n' +
104
+ 'Note: No @ prefix needed',
105
+ maxItems: 10,
106
+ },
107
+ },
108
+ },
109
+ },
110
+ required: ['query'],
111
+ },
112
+ };
113
+ /**
114
+ * grok_brainstorm tool definition
115
+ *
116
+ * Creative brainstorming using Grok AI
117
+ */
118
+ export const grokBrainstormTool = {
119
+ name: 'grok_brainstorm',
120
+ description: 'Creative brainstorming powered by Grok AI. Generates innovative ideas, ' +
121
+ 'multi-perspective analysis, and creative suggestions based on a given topic. ' +
122
+ 'Ideal for product design, content creation, problem solving, and strategic planning. ' +
123
+ 'Supports reading project files as context to generate project-relevant ideas.',
124
+ inputSchema: {
125
+ type: 'object',
126
+ properties: {
127
+ topic: {
128
+ type: 'string',
129
+ description: 'Brainstorm topic — can be a question, idea, product concept, etc.\n' +
130
+ 'e.g.: "How to improve user retention", "New product feature ideas", "Marketing campaign planning"',
131
+ },
132
+ context: {
133
+ type: 'string',
134
+ description: 'Additional context information (optional) to help Grok better understand the background\n' +
135
+ 'e.g.: target audience, industry background, existing constraints, budget range, etc.',
136
+ },
137
+ context_files: {
138
+ type: 'array',
139
+ items: { type: 'string' },
140
+ description: 'Project file paths (optional), reads file content as context\n' +
141
+ 'e.g.: ["./README.md", "./docs/architecture.md"]',
142
+ },
143
+ count: {
144
+ type: 'number',
145
+ description: 'Number of ideas to generate, 1-10 (default 5)',
146
+ default: 5,
147
+ minimum: 1,
148
+ maximum: 10,
149
+ },
150
+ style: {
151
+ type: 'string',
152
+ enum: ['innovative', 'practical', 'radical', 'balanced'],
153
+ description: 'Brainstorm style:\n' +
154
+ '- innovative: Pursue novel and unique ideas\n' +
155
+ '- practical: Focus on feasibility\n' +
156
+ '- radical: Break conventional thinking\n' +
157
+ '- balanced: Balance of all (default)',
158
+ default: 'balanced',
159
+ },
160
+ model: {
161
+ type: 'string',
162
+ enum: [...SUPPORTED_MODELS],
163
+ description: 'Grok model to use:\n' +
164
+ '- grok-4.20-beta: Fast, affordable, 2M context (default)\n' +
165
+ '- grok-4-latest: Highest quality, for complex tasks',
166
+ default: 'grok-4.20-beta',
167
+ },
168
+ output_format: {
169
+ type: 'string',
170
+ enum: ['text', 'json'],
171
+ description: 'Output format:\n' +
172
+ '- text: Markdown format (default)\n' +
173
+ '- json: Structured JSON (ideas array with title/description/pros/cons/feasibility)',
174
+ default: 'text',
175
+ },
176
+ },
177
+ required: ['topic'],
178
+ },
179
+ };
180
+ /**
181
+ * Array of all tool definitions
182
+ */
183
+ export const TOOL_DEFINITIONS = [
184
+ grokAgentSearchTool,
185
+ grokBrainstormTool,
186
+ ];
187
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}