@iflow-mcp/xexr_mcp-libsql 1.1.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 +509 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +327 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/base-tool.d.ts +29 -0
- package/dist/lib/base-tool.d.ts.map +1 -0
- package/dist/lib/base-tool.js +175 -0
- package/dist/lib/base-tool.js.map +1 -0
- package/dist/lib/constants.d.ts +26 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +47 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/database.d.ts +39 -0
- package/dist/lib/database.d.ts.map +1 -0
- package/dist/lib/database.js +284 -0
- package/dist/lib/database.js.map +1 -0
- package/dist/lib/logger.d.ts +23 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +124 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/server-manager.d.ts +31 -0
- package/dist/lib/server-manager.d.ts.map +1 -0
- package/dist/lib/server-manager.js +283 -0
- package/dist/lib/server-manager.js.map +1 -0
- package/dist/schemas/alter-table.d.ts +23 -0
- package/dist/schemas/alter-table.d.ts.map +1 -0
- package/dist/schemas/alter-table.js +85 -0
- package/dist/schemas/alter-table.js.map +1 -0
- package/dist/schemas/create-table.d.ts +23 -0
- package/dist/schemas/create-table.d.ts.map +1 -0
- package/dist/schemas/create-table.js +81 -0
- package/dist/schemas/create-table.js.map +1 -0
- package/dist/schemas/describe-table.d.ts +26 -0
- package/dist/schemas/describe-table.d.ts.map +1 -0
- package/dist/schemas/describe-table.js +47 -0
- package/dist/schemas/describe-table.js.map +1 -0
- package/dist/schemas/list-tables.d.ts +29 -0
- package/dist/schemas/list-tables.d.ts.map +1 -0
- package/dist/schemas/list-tables.js +37 -0
- package/dist/schemas/list-tables.js.map +1 -0
- package/dist/schemas/read-query.d.ts +17 -0
- package/dist/schemas/read-query.d.ts.map +1 -0
- package/dist/schemas/read-query.js +66 -0
- package/dist/schemas/read-query.js.map +1 -0
- package/dist/schemas/write-query.d.ts +20 -0
- package/dist/schemas/write-query.d.ts.map +1 -0
- package/dist/schemas/write-query.js +58 -0
- package/dist/schemas/write-query.js.map +1 -0
- package/dist/tools/alter-table.d.ts +31 -0
- package/dist/tools/alter-table.d.ts.map +1 -0
- package/dist/tools/alter-table.js +139 -0
- package/dist/tools/alter-table.js.map +1 -0
- package/dist/tools/create-table.d.ts +31 -0
- package/dist/tools/create-table.d.ts.map +1 -0
- package/dist/tools/create-table.js +121 -0
- package/dist/tools/create-table.js.map +1 -0
- package/dist/tools/describe-table.d.ts +30 -0
- package/dist/tools/describe-table.d.ts.map +1 -0
- package/dist/tools/describe-table.js +165 -0
- package/dist/tools/describe-table.js.map +1 -0
- package/dist/tools/list-tables.d.ts +32 -0
- package/dist/tools/list-tables.d.ts.map +1 -0
- package/dist/tools/list-tables.js +210 -0
- package/dist/tools/list-tables.js.map +1 -0
- package/dist/tools/read-query.d.ts +17 -0
- package/dist/tools/read-query.d.ts.map +1 -0
- package/dist/tools/read-query.js +112 -0
- package/dist/tools/read-query.js.map +1 -0
- package/dist/tools/write-query.d.ts +20 -0
- package/dist/tools/write-query.d.ts.map +1 -0
- package/dist/tools/write-query.js +63 -0
- package/dist/tools/write-query.js.map +1 -0
- package/dist/types/index.d.ts +50 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/error-handler.d.ts +22 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +85 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/performance.d.ts +16 -0
- package/dist/utils/performance.d.ts.map +1 -0
- package/dist/utils/performance.js +40 -0
- package/dist/utils/performance.js.map +1 -0
- package/package.json +1 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { parseArgs } from 'node:util';
|
|
3
|
+
import { Logger } from './lib/logger.js';
|
|
4
|
+
import { ServerManager } from './lib/server-manager.js';
|
|
5
|
+
let logger = new Logger();
|
|
6
|
+
function showHelp() {
|
|
7
|
+
// eslint-disable-next-line no-console
|
|
8
|
+
console.log(`
|
|
9
|
+
MCP libSQL Server by xexr
|
|
10
|
+
|
|
11
|
+
Usage: mcp-libsql --url <DATABASE_URL> [options]
|
|
12
|
+
|
|
13
|
+
Options:
|
|
14
|
+
--url <URL> libSQL database URL (required)
|
|
15
|
+
--auth-token <token> Authentication token for Turso databases (optional)
|
|
16
|
+
Can also be set via LIBSQL_AUTH_TOKEN environment variable
|
|
17
|
+
--min-connections <number> Minimum connections in pool (default: 1)
|
|
18
|
+
--max-connections <number> Maximum connections in pool (default: 10)
|
|
19
|
+
--connection-timeout <number> Connection timeout in ms (default: 30000)
|
|
20
|
+
--query-timeout <number> Query timeout in ms (default: 30000)
|
|
21
|
+
--log-mode <mode> Logging mode: file, console, both, none (default: file)
|
|
22
|
+
--dev Enable development mode with enhanced logging
|
|
23
|
+
--help Show this help message
|
|
24
|
+
--version Show version information
|
|
25
|
+
|
|
26
|
+
Examples:
|
|
27
|
+
mcp-libsql --url "file:local.db"
|
|
28
|
+
mcp-libsql --url "libsql://your-db.turso.io" --auth-token "your-token" --max-connections 20
|
|
29
|
+
LIBSQL_AUTH_TOKEN="your-token" mcp-libsql --url "libsql://your-db.turso.io"
|
|
30
|
+
mcp-libsql --url "http://localhost:8080" --min-connections 2 --dev
|
|
31
|
+
mcp-libsql --url "file:local.db" --log-mode console
|
|
32
|
+
|
|
33
|
+
Development:
|
|
34
|
+
Use --dev flag for enhanced logging and development features
|
|
35
|
+
Use 'pnpm dev --url "file:test.db"' for hot reloading during development
|
|
36
|
+
For Turso development, set LIBSQL_AUTH_TOKEN env var to avoid exposing tokens in command history
|
|
37
|
+
`);
|
|
38
|
+
}
|
|
39
|
+
async function showVersion() {
|
|
40
|
+
try {
|
|
41
|
+
// Use fs to read package.json for better compatibility
|
|
42
|
+
const { readFile } = await import('fs/promises');
|
|
43
|
+
const { join } = await import('path');
|
|
44
|
+
const { fileURLToPath } = await import('url');
|
|
45
|
+
const { dirname } = await import('path');
|
|
46
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
47
|
+
const __dirname = dirname(__filename);
|
|
48
|
+
const packagePath = join(__dirname, '..', 'package.json');
|
|
49
|
+
const packageContent = await readFile(packagePath, 'utf-8');
|
|
50
|
+
const packageJson = JSON.parse(packageContent);
|
|
51
|
+
// eslint-disable-next-line no-console
|
|
52
|
+
console.log(`@xexr/mcp-libsql v${packageJson.version}`);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
// Fallback if reading package.json fails
|
|
56
|
+
// eslint-disable-next-line no-console
|
|
57
|
+
console.error(error);
|
|
58
|
+
// eslint-disable-next-line no-console
|
|
59
|
+
console.log('@xexr/mcp-libsql v1.0.0');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function parseCliArgs() {
|
|
63
|
+
try {
|
|
64
|
+
const { values } = parseArgs({
|
|
65
|
+
args: process.argv.slice(2),
|
|
66
|
+
options: {
|
|
67
|
+
url: { type: 'string' },
|
|
68
|
+
'auth-token': { type: 'string' },
|
|
69
|
+
'min-connections': { type: 'string' },
|
|
70
|
+
'max-connections': { type: 'string' },
|
|
71
|
+
'connection-timeout': { type: 'string' },
|
|
72
|
+
'query-timeout': { type: 'string' },
|
|
73
|
+
'log-mode': { type: 'string' },
|
|
74
|
+
dev: { type: 'boolean', short: 'd' },
|
|
75
|
+
help: { type: 'boolean', short: 'h' },
|
|
76
|
+
version: { type: 'boolean', short: 'v' }
|
|
77
|
+
},
|
|
78
|
+
strict: true
|
|
79
|
+
});
|
|
80
|
+
return {
|
|
81
|
+
url: values.url || '',
|
|
82
|
+
authToken: values['auth-token'] || process.env['LIBSQL_AUTH_TOKEN'],
|
|
83
|
+
minConnections: values['min-connections']
|
|
84
|
+
? parseInt(values['min-connections'], 10)
|
|
85
|
+
: undefined,
|
|
86
|
+
maxConnections: values['max-connections']
|
|
87
|
+
? parseInt(values['max-connections'], 10)
|
|
88
|
+
: undefined,
|
|
89
|
+
connectionTimeout: values['connection-timeout']
|
|
90
|
+
? parseInt(values['connection-timeout'], 10)
|
|
91
|
+
: undefined,
|
|
92
|
+
queryTimeout: values['query-timeout'] ? parseInt(values['query-timeout'], 10) : undefined,
|
|
93
|
+
logMode: values['log-mode'],
|
|
94
|
+
dev: values.dev,
|
|
95
|
+
help: values.help,
|
|
96
|
+
version: values.version
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
logger.error('Failed to parse CLI arguments', {
|
|
101
|
+
error: error instanceof Error ? error.message : String(error)
|
|
102
|
+
});
|
|
103
|
+
showHelp();
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async function validateOptions(options) {
|
|
108
|
+
if (options.help) {
|
|
109
|
+
showHelp();
|
|
110
|
+
process.exit(0);
|
|
111
|
+
}
|
|
112
|
+
if (options.version) {
|
|
113
|
+
await showVersion();
|
|
114
|
+
process.exit(0);
|
|
115
|
+
}
|
|
116
|
+
if (!options.url) {
|
|
117
|
+
logger.error('Database URL is required');
|
|
118
|
+
showHelp();
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
// Validate numeric options
|
|
122
|
+
if (options.minConnections !== undefined &&
|
|
123
|
+
(options.minConnections < 1 || !Number.isInteger(options.minConnections))) {
|
|
124
|
+
logger.error('min-connections must be a positive integer');
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
if (options.maxConnections !== undefined &&
|
|
128
|
+
(options.maxConnections < 1 || !Number.isInteger(options.maxConnections))) {
|
|
129
|
+
logger.error('max-connections must be a positive integer');
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
if (options.minConnections !== undefined &&
|
|
133
|
+
options.maxConnections !== undefined &&
|
|
134
|
+
options.minConnections > options.maxConnections) {
|
|
135
|
+
logger.error('min-connections cannot be greater than max-connections');
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
if (options.connectionTimeout !== undefined &&
|
|
139
|
+
(options.connectionTimeout < 1000 || !Number.isInteger(options.connectionTimeout))) {
|
|
140
|
+
logger.error('connection-timeout must be an integer >= 1000ms');
|
|
141
|
+
process.exit(1);
|
|
142
|
+
}
|
|
143
|
+
if (options.queryTimeout !== undefined &&
|
|
144
|
+
(options.queryTimeout < 1000 || !Number.isInteger(options.queryTimeout))) {
|
|
145
|
+
logger.error('query-timeout must be an integer >= 1000ms');
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
// Validate log-mode
|
|
149
|
+
if (options.logMode !== undefined &&
|
|
150
|
+
!['file', 'console', 'both', 'none'].includes(options.logMode)) {
|
|
151
|
+
logger.error('log-mode must be one of: file, console, both, none');
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
// Validate auth-token
|
|
155
|
+
if (options.authToken !== undefined) {
|
|
156
|
+
if (typeof options.authToken !== 'string' || options.authToken.trim().length === 0) {
|
|
157
|
+
logger.error('auth-token must be a non-empty string');
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
// Validate auth token format for Turso tokens (basic validation)
|
|
161
|
+
// Turso tokens are typically JWT-like base64 encoded strings
|
|
162
|
+
if (options.authToken.includes(' ') || options.authToken.includes('\n')) {
|
|
163
|
+
logger.error('auth-token contains invalid characters (spaces or newlines)');
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
// Warn if auth token looks suspicious (too short)
|
|
167
|
+
if (options.authToken.length < 10) {
|
|
168
|
+
logger.warn('auth-token appears to be very short, please ensure it is correct');
|
|
169
|
+
}
|
|
170
|
+
// Validate that auth token is used with appropriate URLs
|
|
171
|
+
if (!options.url.startsWith('libsql://') && !options.url.startsWith('https://')) {
|
|
172
|
+
logger.warn('auth-token provided but URL does not appear to be a remote database (libsql:// or https://)');
|
|
173
|
+
logger.warn('Auth tokens are typically used with Turso or other remote libSQL databases');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const config = {
|
|
177
|
+
url: options.url,
|
|
178
|
+
...(options.authToken !== undefined && { authToken: options.authToken }),
|
|
179
|
+
...(options.minConnections !== undefined && { minConnections: options.minConnections }),
|
|
180
|
+
...(options.maxConnections !== undefined && { maxConnections: options.maxConnections }),
|
|
181
|
+
...(options.connectionTimeout !== undefined && {
|
|
182
|
+
connectionTimeout: options.connectionTimeout
|
|
183
|
+
}),
|
|
184
|
+
...(options.queryTimeout !== undefined && { queryTimeout: options.queryTimeout })
|
|
185
|
+
};
|
|
186
|
+
return config;
|
|
187
|
+
}
|
|
188
|
+
async function main() {
|
|
189
|
+
let serverManager = null;
|
|
190
|
+
try {
|
|
191
|
+
const options = parseCliArgs();
|
|
192
|
+
const config = await validateOptions(options);
|
|
193
|
+
// Create logger with specified log mode (default to 'file')
|
|
194
|
+
const logMode = options.logMode || 'file';
|
|
195
|
+
logger = new Logger(undefined, 'INFO', logMode);
|
|
196
|
+
logger.info('Starting MCP libSQL Server');
|
|
197
|
+
logger.info(`Node.js version: ${process.version}`);
|
|
198
|
+
logger.info(`Platform: ${process.platform} ${process.arch}`);
|
|
199
|
+
logger.info(`Log mode: ${logMode}`);
|
|
200
|
+
// Log where we're writing logs for easy access (only if file logging is enabled)
|
|
201
|
+
if (logMode === 'file' || logMode === 'both') {
|
|
202
|
+
// eslint-disable-next-line no-console
|
|
203
|
+
console.error(`Log file location: ${logger.getLogFilePath()}`);
|
|
204
|
+
}
|
|
205
|
+
const isDevelopment = options.dev || process.env['NODE_ENV'] === 'development';
|
|
206
|
+
// Determine auth token source for logging
|
|
207
|
+
let authTokenSource = 'none';
|
|
208
|
+
if (config.authToken) {
|
|
209
|
+
const cliToken = parseArgs({
|
|
210
|
+
args: process.argv.slice(2),
|
|
211
|
+
options: { 'auth-token': { type: 'string' } },
|
|
212
|
+
strict: false
|
|
213
|
+
}).values['auth-token'];
|
|
214
|
+
if (cliToken) {
|
|
215
|
+
authTokenSource = 'CLI parameter';
|
|
216
|
+
}
|
|
217
|
+
else if (process.env['LIBSQL_AUTH_TOKEN']) {
|
|
218
|
+
authTokenSource = 'environment variable';
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
logger.info('Configuration validated', {
|
|
222
|
+
url: config.url,
|
|
223
|
+
authTokenProvided: !!config.authToken,
|
|
224
|
+
authTokenSource,
|
|
225
|
+
minConnections: config.minConnections,
|
|
226
|
+
maxConnections: config.maxConnections,
|
|
227
|
+
connectionTimeout: config.connectionTimeout,
|
|
228
|
+
queryTimeout: config.queryTimeout,
|
|
229
|
+
developmentMode: isDevelopment
|
|
230
|
+
});
|
|
231
|
+
// Create and start server manager
|
|
232
|
+
serverManager = new ServerManager({
|
|
233
|
+
config,
|
|
234
|
+
developmentMode: isDevelopment,
|
|
235
|
+
enableHotReload: isDevelopment
|
|
236
|
+
});
|
|
237
|
+
await serverManager.start();
|
|
238
|
+
logger.info('MCP libSQL Server started successfully');
|
|
239
|
+
// Log server status
|
|
240
|
+
const status = serverManager.getStatus();
|
|
241
|
+
logger.info('Server status', status);
|
|
242
|
+
// Set up graceful shutdown
|
|
243
|
+
const gracefulShutdown = async (signal) => {
|
|
244
|
+
logger.info(`Received ${signal}, shutting down gracefully`);
|
|
245
|
+
if (serverManager && serverManager.isServerRunning()) {
|
|
246
|
+
try {
|
|
247
|
+
await serverManager.stop();
|
|
248
|
+
logger.info('Server manager stopped successfully');
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
logger.error('Error stopping server manager', {
|
|
252
|
+
error: error instanceof Error ? error.message : String(error)
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
process.exit(0);
|
|
257
|
+
};
|
|
258
|
+
// Set up signal handlers
|
|
259
|
+
process.on('SIGINT', () => gracefulShutdown('SIGINT'));
|
|
260
|
+
process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
|
|
261
|
+
// Optional: Set up SIGUSR1 for reload (development feature)
|
|
262
|
+
process.on('SIGUSR1', async () => {
|
|
263
|
+
logger.info('Received SIGUSR1, reloading server');
|
|
264
|
+
if (serverManager) {
|
|
265
|
+
try {
|
|
266
|
+
await serverManager.reload();
|
|
267
|
+
logger.info('Server reloaded successfully');
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
logger.error('Error reloading server', {
|
|
271
|
+
error: error instanceof Error ? error.message : String(error)
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
// Keep the process alive to handle MCP communication
|
|
277
|
+
// The server is now running and will handle requests via stdio
|
|
278
|
+
// We need to prevent the main function from exiting
|
|
279
|
+
process.stdin.resume();
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
logger.error('Failed to start MCP libSQL Server', {
|
|
283
|
+
error: error instanceof Error ? error.message : String(error)
|
|
284
|
+
});
|
|
285
|
+
// Clean up on startup failure
|
|
286
|
+
if (serverManager) {
|
|
287
|
+
try {
|
|
288
|
+
await serverManager.stop();
|
|
289
|
+
}
|
|
290
|
+
catch (cleanupError) {
|
|
291
|
+
logger.error('Error during cleanup', {
|
|
292
|
+
error: cleanupError instanceof Error ? cleanupError.message : String(cleanupError)
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
process.exit(1);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
// Start the server
|
|
300
|
+
// Check if this file is being run directly (handles symlinks from npm bin)
|
|
301
|
+
import { fileURLToPath } from 'url';
|
|
302
|
+
import { realpathSync } from 'fs';
|
|
303
|
+
function isMainModule() {
|
|
304
|
+
// Handle npm bin symlinks by resolving the real path
|
|
305
|
+
try {
|
|
306
|
+
if (!process.argv[1])
|
|
307
|
+
return false;
|
|
308
|
+
const realArgvPath = realpathSync(process.argv[1]);
|
|
309
|
+
const currentModulePath = fileURLToPath(import.meta.url);
|
|
310
|
+
return realArgvPath === currentModulePath;
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
// Fallback for cases where realpathSync might fail
|
|
314
|
+
return import.meta.url === `file://${process.argv[1]}` ||
|
|
315
|
+
(process.argv[1]?.endsWith('/dist/index.js') ?? false) ||
|
|
316
|
+
(process.argv[1]?.endsWith('\\dist\\index.js') ?? false);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
if (isMainModule()) {
|
|
320
|
+
main().catch(error => {
|
|
321
|
+
logger.error('Unhandled error in main', {
|
|
322
|
+
error: error instanceof Error ? error.message : String(error)
|
|
323
|
+
});
|
|
324
|
+
process.exit(1);
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import type { DatabaseConnection } from '../types/index.js';
|
|
4
|
+
export interface ToolExecutionContext {
|
|
5
|
+
connection: DatabaseConnection;
|
|
6
|
+
arguments: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface ToolExecutionResult extends CallToolResult {
|
|
9
|
+
isError?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare abstract class BaseTool {
|
|
12
|
+
abstract readonly name: string;
|
|
13
|
+
abstract readonly description: string;
|
|
14
|
+
abstract readonly inputSchema: z.ZodSchema;
|
|
15
|
+
protected abstract executeImpl(context: ToolExecutionContext): Promise<ToolExecutionResult>;
|
|
16
|
+
getToolDefinition(): Tool;
|
|
17
|
+
execute(context: ToolExecutionContext): Promise<CallToolResult>;
|
|
18
|
+
private zodSchemaToJsonSchema;
|
|
19
|
+
private zodTypeToJsonSchema;
|
|
20
|
+
}
|
|
21
|
+
export declare class ToolRegistry {
|
|
22
|
+
private tools;
|
|
23
|
+
register(tool: BaseTool): void;
|
|
24
|
+
get(name: string): BaseTool | undefined;
|
|
25
|
+
getAll(): BaseTool[];
|
|
26
|
+
getToolDefinitions(): Tool[];
|
|
27
|
+
execute(name: string, context: ToolExecutionContext): Promise<CallToolResult>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=base-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-tool.d.ts","sourceRoot":"","sources":["../../src/lib/base-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK5D,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,8BAAsB,QAAQ;IAC5B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;IAE3C,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAE3F,iBAAiB,IAAI,IAAI;IAWnB,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IAgErE,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,mBAAmB;CAuD5B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA+B;IAE5C,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAS9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,MAAM,IAAI,QAAQ,EAAE;IAIpB,kBAAkB,IAAI,IAAI,EAAE;IAItB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;CAmBpF"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Logger } from './logger.js';
|
|
3
|
+
const logger = new Logger();
|
|
4
|
+
export class BaseTool {
|
|
5
|
+
getToolDefinition() {
|
|
6
|
+
return {
|
|
7
|
+
name: this.name,
|
|
8
|
+
description: this.description,
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
...this.zodSchemaToJsonSchema(this.inputSchema)
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
async execute(context) {
|
|
16
|
+
const startTime = Date.now();
|
|
17
|
+
try {
|
|
18
|
+
// Validate input arguments
|
|
19
|
+
const validationResult = this.inputSchema.safeParse(context.arguments);
|
|
20
|
+
if (!validationResult.success) {
|
|
21
|
+
const errorMessage = `Invalid arguments for tool ${this.name}: ${validationResult.error.message}`;
|
|
22
|
+
logger.error('Tool validation failed', {
|
|
23
|
+
tool: this.name,
|
|
24
|
+
error: errorMessage,
|
|
25
|
+
arguments: context.arguments
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
content: [
|
|
29
|
+
{
|
|
30
|
+
type: 'text',
|
|
31
|
+
text: `Error: ${errorMessage}`
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
isError: true
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Update context with validated arguments
|
|
38
|
+
const validatedContext = {
|
|
39
|
+
...context,
|
|
40
|
+
arguments: validationResult.data
|
|
41
|
+
};
|
|
42
|
+
logger.info(`Executing tool: ${this.name}`, { arguments: validatedContext.arguments });
|
|
43
|
+
// Execute the tool
|
|
44
|
+
const result = await this.executeImpl(validatedContext);
|
|
45
|
+
const executionTime = Date.now() - startTime;
|
|
46
|
+
logger.info(`Tool executed successfully: ${this.name}`, {
|
|
47
|
+
executionTime,
|
|
48
|
+
hasError: result.isError || false
|
|
49
|
+
});
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
const executionTime = Date.now() - startTime;
|
|
54
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
55
|
+
logger.error(`Tool execution failed: ${this.name}`, {
|
|
56
|
+
error: errorMessage,
|
|
57
|
+
executionTime
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
content: [
|
|
61
|
+
{
|
|
62
|
+
type: 'text',
|
|
63
|
+
text: `Error executing ${this.name}: ${errorMessage}`
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
isError: true
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
zodSchemaToJsonSchema(schema) {
|
|
71
|
+
// Basic conversion from Zod to JSON Schema
|
|
72
|
+
// This is a simplified implementation - in production you might want to use zod-to-json-schema
|
|
73
|
+
if (schema instanceof z.ZodObject) {
|
|
74
|
+
const shape = schema.shape;
|
|
75
|
+
const properties = {};
|
|
76
|
+
const required = [];
|
|
77
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
78
|
+
properties[key] = this.zodTypeToJsonSchema(value);
|
|
79
|
+
// Check if field is required (not optional and not default)
|
|
80
|
+
const zodField = value;
|
|
81
|
+
if (!zodField.isOptional() && !(zodField instanceof z.ZodDefault)) {
|
|
82
|
+
required.push(key);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
type: 'object',
|
|
87
|
+
properties,
|
|
88
|
+
required: required.length > 0 ? required : []
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return this.zodTypeToJsonSchema(schema);
|
|
92
|
+
}
|
|
93
|
+
zodTypeToJsonSchema(zodType) {
|
|
94
|
+
if (zodType instanceof z.ZodString) {
|
|
95
|
+
return { type: 'string' };
|
|
96
|
+
}
|
|
97
|
+
if (zodType instanceof z.ZodNumber) {
|
|
98
|
+
return { type: 'number' };
|
|
99
|
+
}
|
|
100
|
+
if (zodType instanceof z.ZodBoolean) {
|
|
101
|
+
return { type: 'boolean' };
|
|
102
|
+
}
|
|
103
|
+
if (zodType instanceof z.ZodArray) {
|
|
104
|
+
return {
|
|
105
|
+
type: 'array',
|
|
106
|
+
items: this.zodTypeToJsonSchema(zodType.element)
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
if (zodType instanceof z.ZodOptional) {
|
|
110
|
+
return this.zodTypeToJsonSchema(zodType.unwrap());
|
|
111
|
+
}
|
|
112
|
+
if (zodType instanceof z.ZodDefault) {
|
|
113
|
+
return this.zodTypeToJsonSchema(zodType._def.innerType);
|
|
114
|
+
}
|
|
115
|
+
if (zodType instanceof z.ZodEnum) {
|
|
116
|
+
return {
|
|
117
|
+
type: 'string',
|
|
118
|
+
enum: zodType.options
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// Handle ZodUnion - convert to anyOf
|
|
122
|
+
if (zodType instanceof z.ZodUnion) {
|
|
123
|
+
return {
|
|
124
|
+
anyOf: zodType.options.map((option) => this.zodTypeToJsonSchema(option))
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// Handle ZodEffects (refined schemas) - use inner type
|
|
128
|
+
if (zodType instanceof z.ZodEffects) {
|
|
129
|
+
return this.zodTypeToJsonSchema(zodType._def.schema);
|
|
130
|
+
}
|
|
131
|
+
// Handle ZodNull
|
|
132
|
+
if (zodType instanceof z.ZodNull) {
|
|
133
|
+
return { type: 'null' };
|
|
134
|
+
}
|
|
135
|
+
// Default fallback
|
|
136
|
+
return { type: 'string' };
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
export class ToolRegistry {
|
|
140
|
+
tools = new Map();
|
|
141
|
+
register(tool) {
|
|
142
|
+
if (this.tools.has(tool.name)) {
|
|
143
|
+
throw new Error(`Tool ${tool.name} is already registered`);
|
|
144
|
+
}
|
|
145
|
+
this.tools.set(tool.name, tool);
|
|
146
|
+
logger.info(`Tool registered: ${tool.name}`);
|
|
147
|
+
}
|
|
148
|
+
get(name) {
|
|
149
|
+
return this.tools.get(name);
|
|
150
|
+
}
|
|
151
|
+
getAll() {
|
|
152
|
+
return Array.from(this.tools.values());
|
|
153
|
+
}
|
|
154
|
+
getToolDefinitions() {
|
|
155
|
+
return this.getAll().map(tool => tool.getToolDefinition());
|
|
156
|
+
}
|
|
157
|
+
async execute(name, context) {
|
|
158
|
+
const tool = this.get(name);
|
|
159
|
+
if (!tool) {
|
|
160
|
+
const errorMessage = `Unknown tool: ${name}`;
|
|
161
|
+
logger.error('Tool not found', { tool: name });
|
|
162
|
+
return {
|
|
163
|
+
content: [
|
|
164
|
+
{
|
|
165
|
+
type: 'text',
|
|
166
|
+
text: `Error: ${errorMessage}`
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
isError: true
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
return tool.execute(context);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=base-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-tool.js","sourceRoot":"","sources":["../../src/lib/base-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const DEFAULT_CONFIG: {
|
|
2
|
+
readonly minConnections: 1;
|
|
3
|
+
readonly maxConnections: 10;
|
|
4
|
+
readonly connectionTimeout: 30000;
|
|
5
|
+
readonly retryInterval: 5000;
|
|
6
|
+
readonly queryTimeout: 30000;
|
|
7
|
+
readonly maxResultSize: 10000;
|
|
8
|
+
};
|
|
9
|
+
export declare const RESTRICTED_OPERATIONS: readonly ["DROP DATABASE", "DROP TABLE", "DROP INDEX", "DROP TRIGGER", "DROP VIEW", "TRUNCATE", "DELETE FROM sqlite_master", "DELETE FROM sqlite_sequence", "UPDATE sqlite_master", "UPDATE sqlite_sequence", "INSERT INTO sqlite_master", "INSERT INTO sqlite_sequence", "PRAGMA case_sensitive_like", "PRAGMA foreign_keys", "PRAGMA journal_mode", "PRAGMA synchronous", "PRAGMA temp_store", "PRAGMA wal_autocheckpoint", "ATTACH DATABASE", "DETACH DATABASE"];
|
|
10
|
+
export declare const LOG_LEVELS: {
|
|
11
|
+
readonly ERROR: "error";
|
|
12
|
+
readonly WARN: "warn";
|
|
13
|
+
readonly INFO: "info";
|
|
14
|
+
readonly DEBUG: "debug";
|
|
15
|
+
};
|
|
16
|
+
export declare const QUERY_TYPES: {
|
|
17
|
+
readonly SELECT: "SELECT";
|
|
18
|
+
readonly INSERT: "INSERT";
|
|
19
|
+
readonly UPDATE: "UPDATE";
|
|
20
|
+
readonly DELETE: "DELETE";
|
|
21
|
+
readonly CREATE_TABLE: "CREATE TABLE";
|
|
22
|
+
readonly ALTER_TABLE: "ALTER TABLE";
|
|
23
|
+
readonly DROP: "DROP";
|
|
24
|
+
readonly PRAGMA: "PRAGMA";
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX,eAAO,MAAM,qBAAqB,qcAqBxB,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;CAKb,CAAC;AAEX,eAAO,MAAM,WAAW;;;;;;;;;CASd,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export const DEFAULT_CONFIG = {
|
|
2
|
+
minConnections: 1,
|
|
3
|
+
maxConnections: 10,
|
|
4
|
+
connectionTimeout: 30000, // 30 seconds
|
|
5
|
+
retryInterval: 5000, // 5 seconds
|
|
6
|
+
queryTimeout: 30000, // 30 seconds
|
|
7
|
+
maxResultSize: 10000 // 10,000 rows
|
|
8
|
+
};
|
|
9
|
+
export const RESTRICTED_OPERATIONS = [
|
|
10
|
+
'DROP DATABASE',
|
|
11
|
+
'DROP TABLE',
|
|
12
|
+
'DROP INDEX',
|
|
13
|
+
'DROP TRIGGER',
|
|
14
|
+
'DROP VIEW',
|
|
15
|
+
'TRUNCATE',
|
|
16
|
+
'DELETE FROM sqlite_master',
|
|
17
|
+
'DELETE FROM sqlite_sequence',
|
|
18
|
+
'UPDATE sqlite_master',
|
|
19
|
+
'UPDATE sqlite_sequence',
|
|
20
|
+
'INSERT INTO sqlite_master',
|
|
21
|
+
'INSERT INTO sqlite_sequence',
|
|
22
|
+
'PRAGMA case_sensitive_like',
|
|
23
|
+
'PRAGMA foreign_keys',
|
|
24
|
+
'PRAGMA journal_mode',
|
|
25
|
+
'PRAGMA synchronous',
|
|
26
|
+
'PRAGMA temp_store',
|
|
27
|
+
'PRAGMA wal_autocheckpoint',
|
|
28
|
+
'ATTACH DATABASE',
|
|
29
|
+
'DETACH DATABASE'
|
|
30
|
+
];
|
|
31
|
+
export const LOG_LEVELS = {
|
|
32
|
+
ERROR: 'error',
|
|
33
|
+
WARN: 'warn',
|
|
34
|
+
INFO: 'info',
|
|
35
|
+
DEBUG: 'debug'
|
|
36
|
+
};
|
|
37
|
+
export const QUERY_TYPES = {
|
|
38
|
+
SELECT: 'SELECT',
|
|
39
|
+
INSERT: 'INSERT',
|
|
40
|
+
UPDATE: 'UPDATE',
|
|
41
|
+
DELETE: 'DELETE',
|
|
42
|
+
CREATE_TABLE: 'CREATE TABLE',
|
|
43
|
+
ALTER_TABLE: 'ALTER TABLE',
|
|
44
|
+
DROP: 'DROP',
|
|
45
|
+
PRAGMA: 'PRAGMA'
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,EAAE;IAClB,iBAAiB,EAAE,KAAK,EAAE,aAAa;IACvC,aAAa,EAAE,IAAI,EAAE,YAAY;IACjC,YAAY,EAAE,KAAK,EAAE,aAAa;IAClC,aAAa,EAAE,KAAK,CAAC,cAAc;CAC3B,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,eAAe;IACf,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,WAAW;IACX,UAAU;IACV,2BAA2B;IAC3B,6BAA6B;IAC7B,sBAAsB;IACtB,wBAAwB;IACxB,2BAA2B;IAC3B,6BAA6B;IAC7B,4BAA4B;IAC5B,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,mBAAmB;IACnB,2BAA2B;IAC3B,iBAAiB;IACjB,iBAAiB;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACR,CAAC"}
|