@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.
- package/CHANGELOG.md +40 -0
- package/LICENSE +21 -0
- package/README.md +179 -0
- package/dist/config/index.d.ts +48 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +101 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +182 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/agent-search.d.ts +14 -0
- package/dist/tools/agent-search.d.ts.map +1 -0
- package/dist/tools/agent-search.js +135 -0
- package/dist/tools/agent-search.js.map +1 -0
- package/dist/tools/brainstorm.d.ts +14 -0
- package/dist/tools/brainstorm.d.ts.map +1 -0
- package/dist/tools/brainstorm.js +208 -0
- package/dist/tools/brainstorm.js.map +1 -0
- package/dist/tools/definitions.d.ts +310 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +187 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/types/index.d.ts +210 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/grok-client.d.ts +53 -0
- package/dist/utils/grok-client.d.ts.map +1 -0
- package/dist/utils/grok-client.js +147 -0
- package/dist/utils/grok-client.js.map +1 -0
- package/dist/utils/logger.d.ts +52 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +97 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/tool-builder.d.ts +66 -0
- package/dist/utils/tool-builder.d.ts.map +1 -0
- package/dist/utils/tool-builder.js +187 -0
- package/dist/utils/tool-builder.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Tool Builder
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe xAI search tool builder functions with parameter validation
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Parameter Validation Schemas
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Web Search tool parameter validation schema
|
|
12
|
+
*/
|
|
13
|
+
const webSearchOptionsSchema = z.object({
|
|
14
|
+
allowedDomains: z
|
|
15
|
+
.array(z.string().min(1, 'Domain cannot be empty').regex(/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}$/, 'Invalid domain format, e.g.: github.com, stackoverflow.com'))
|
|
16
|
+
.max(5, 'Maximum of 5 allowed domains')
|
|
17
|
+
.optional(),
|
|
18
|
+
excludedDomains: z
|
|
19
|
+
.array(z.string().min(1, 'Domain cannot be empty').regex(/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}$/, 'Invalid domain format, e.g.: github.com, stackoverflow.com'))
|
|
20
|
+
.max(5, 'Maximum of 5 excluded domains')
|
|
21
|
+
.optional(),
|
|
22
|
+
enableImageUnderstanding: z.boolean().optional(),
|
|
23
|
+
});
|
|
24
|
+
/**
|
|
25
|
+
* X Search tool parameter validation schema
|
|
26
|
+
*/
|
|
27
|
+
const xSearchOptionsSchema = z.object({
|
|
28
|
+
fromDate: z
|
|
29
|
+
.string()
|
|
30
|
+
.regex(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/, 'Date must be in ISO8601 format (e.g.: 2024-01-01T00:00:00Z)')
|
|
31
|
+
.optional(),
|
|
32
|
+
toDate: z
|
|
33
|
+
.string()
|
|
34
|
+
.regex(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/, 'Date must be in ISO8601 format (e.g.: 2024-01-01T00:00:00Z)')
|
|
35
|
+
.optional(),
|
|
36
|
+
allowedXHandles: z
|
|
37
|
+
.array(z.string().min(1, 'X handle cannot be empty'))
|
|
38
|
+
.max(10, 'Maximum of 10 allowed X handles')
|
|
39
|
+
.optional(),
|
|
40
|
+
excludedXHandles: z
|
|
41
|
+
.array(z.string().min(1, 'X handle cannot be empty'))
|
|
42
|
+
.max(10, 'Maximum of 10 excluded X handles')
|
|
43
|
+
.optional(),
|
|
44
|
+
enableImageUnderstanding: z.boolean().optional(),
|
|
45
|
+
enableVideoUnderstanding: z.boolean().optional(),
|
|
46
|
+
});
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Tool Builder Functions
|
|
49
|
+
// ============================================================================
|
|
50
|
+
/**
|
|
51
|
+
* Build Web Search tool configuration
|
|
52
|
+
*
|
|
53
|
+
* @param options - Web Search configuration options
|
|
54
|
+
* @returns Web Search tool object
|
|
55
|
+
* @throws If parameter validation fails
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const tool = buildWebSearchTool({
|
|
60
|
+
* allowedDomains: ['https://example.com'],
|
|
61
|
+
* enableImageUnderstanding: true
|
|
62
|
+
* });
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export function buildWebSearchTool(options) {
|
|
66
|
+
// Parameter validation
|
|
67
|
+
if (options) {
|
|
68
|
+
try {
|
|
69
|
+
webSearchOptionsSchema.parse(options);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error instanceof z.ZodError) {
|
|
73
|
+
const messages = error.errors.map((err) => ` - ${err.path.join('.')}: ${err.message}`);
|
|
74
|
+
throw new Error(`Web Search tool parameter validation failed:\n${messages.join('\n')}`);
|
|
75
|
+
}
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Build tool object
|
|
80
|
+
const tool = {
|
|
81
|
+
type: 'web_search',
|
|
82
|
+
};
|
|
83
|
+
// Add optional parameters
|
|
84
|
+
if (options?.enableImageUnderstanding !== undefined) {
|
|
85
|
+
tool.enable_image_understanding = options.enableImageUnderstanding;
|
|
86
|
+
}
|
|
87
|
+
// Add filters
|
|
88
|
+
if (options?.allowedDomains || options?.excludedDomains) {
|
|
89
|
+
tool.filters = {};
|
|
90
|
+
if (options.allowedDomains) {
|
|
91
|
+
tool.filters.allowed_domains = options.allowedDomains;
|
|
92
|
+
}
|
|
93
|
+
if (options.excludedDomains) {
|
|
94
|
+
tool.filters.excluded_domains = options.excludedDomains;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return tool;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Build X Search tool configuration
|
|
101
|
+
*
|
|
102
|
+
* @param options - X Search configuration options
|
|
103
|
+
* @returns X Search tool object
|
|
104
|
+
* @throws If parameter validation fails
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const tool = buildXSearchTool({
|
|
109
|
+
* fromDate: '2024-01-01T00:00:00Z',
|
|
110
|
+
* toDate: '2024-12-31T23:59:59Z',
|
|
111
|
+
* allowedXHandles: ['elonmusk', 'OpenAI'],
|
|
112
|
+
* enableVideoUnderstanding: true
|
|
113
|
+
* });
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export function buildXSearchTool(options) {
|
|
117
|
+
// Parameter validation
|
|
118
|
+
if (options) {
|
|
119
|
+
try {
|
|
120
|
+
xSearchOptionsSchema.parse(options);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
if (error instanceof z.ZodError) {
|
|
124
|
+
const messages = error.errors.map((err) => ` - ${err.path.join('.')}: ${err.message}`);
|
|
125
|
+
throw new Error(`X Search tool parameter validation failed:\n${messages.join('\n')}`);
|
|
126
|
+
}
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
// Date logic validation
|
|
130
|
+
if (options.fromDate && options.toDate) {
|
|
131
|
+
const from = new Date(options.fromDate);
|
|
132
|
+
const to = new Date(options.toDate);
|
|
133
|
+
if (from > to) {
|
|
134
|
+
throw new Error('fromDate cannot be later than toDate');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Build tool object
|
|
139
|
+
const tool = {
|
|
140
|
+
type: 'x_search',
|
|
141
|
+
};
|
|
142
|
+
// Add optional parameters
|
|
143
|
+
if (options?.fromDate)
|
|
144
|
+
tool.from_date = options.fromDate;
|
|
145
|
+
if (options?.toDate)
|
|
146
|
+
tool.to_date = options.toDate;
|
|
147
|
+
if (options?.enableImageUnderstanding !== undefined) {
|
|
148
|
+
tool.enable_image_understanding = options.enableImageUnderstanding;
|
|
149
|
+
}
|
|
150
|
+
if (options?.enableVideoUnderstanding !== undefined) {
|
|
151
|
+
tool.enable_video_understanding = options.enableVideoUnderstanding;
|
|
152
|
+
}
|
|
153
|
+
if (options?.allowedXHandles) {
|
|
154
|
+
tool.allowed_x_handles = options.allowedXHandles;
|
|
155
|
+
}
|
|
156
|
+
if (options?.excludedXHandles) {
|
|
157
|
+
tool.excluded_x_handles = options.excludedXHandles;
|
|
158
|
+
}
|
|
159
|
+
return tool;
|
|
160
|
+
}
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// Helper Functions
|
|
163
|
+
// ============================================================================
|
|
164
|
+
/**
|
|
165
|
+
* Validate ISO8601 date format
|
|
166
|
+
*
|
|
167
|
+
* @param dateString - Date string
|
|
168
|
+
* @returns Whether the string is valid ISO8601 format
|
|
169
|
+
*/
|
|
170
|
+
export function isValidISO8601(dateString) {
|
|
171
|
+
const iso8601Regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/;
|
|
172
|
+
if (!iso8601Regex.test(dateString)) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
const date = new Date(dateString);
|
|
176
|
+
return !isNaN(date.getTime());
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Convert date to ISO8601 format
|
|
180
|
+
*
|
|
181
|
+
* @param date - Date object
|
|
182
|
+
* @returns ISO8601 formatted date string
|
|
183
|
+
*/
|
|
184
|
+
export function toISO8601(date) {
|
|
185
|
+
return date.toISOString();
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=tool-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-builder.js","sourceRoot":"","sources":["../../src/utils/tool-builder.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lkbaba/grok-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for xAI Grok with real-time Web + X (Twitter) search and creative brainstorming",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"grok-mcp": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"prepare": "npm run build",
|
|
13
|
+
"dev": "tsx src/index.ts",
|
|
14
|
+
"start": "node dist/index.js",
|
|
15
|
+
"test": "vitest",
|
|
16
|
+
"test:integration": "vitest tests/integration"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"mcp",
|
|
20
|
+
"model-context-protocol",
|
|
21
|
+
"grok",
|
|
22
|
+
"xai",
|
|
23
|
+
"search",
|
|
24
|
+
"x-search",
|
|
25
|
+
"twitter-search",
|
|
26
|
+
"brainstorm",
|
|
27
|
+
"ai",
|
|
28
|
+
"llm",
|
|
29
|
+
"claude-code",
|
|
30
|
+
"claude-desktop",
|
|
31
|
+
"typescript"
|
|
32
|
+
],
|
|
33
|
+
"author": "LKbaba",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "git+https://github.com/LKbaba/Grok-mcp.git"
|
|
38
|
+
},
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/LKbaba/Grok-mcp/issues"
|
|
41
|
+
},
|
|
42
|
+
"homepage": "https://github.com/LKbaba/Grok-mcp#readme",
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=20.0.0"
|
|
45
|
+
},
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"files": [
|
|
50
|
+
"dist",
|
|
51
|
+
"README.md",
|
|
52
|
+
"LICENSE",
|
|
53
|
+
"CHANGELOG.md"
|
|
54
|
+
],
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
57
|
+
"zod": "^3.22.0",
|
|
58
|
+
"dotenv": "^16.0.0"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"typescript": "^5.3.0",
|
|
62
|
+
"@types/node": "^20.0.0",
|
|
63
|
+
"tsx": "^4.0.0",
|
|
64
|
+
"vitest": "^1.0.0",
|
|
65
|
+
"@vitest/ui": "^1.0.0"
|
|
66
|
+
}
|
|
67
|
+
}
|