@naganpm/snowflake-mcp-server 1.0.6 โ 1.0.7
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/dist/mcp-server.js +17 -0
- package/dist/mcp-server.js.map +1 -1
- package/dist/services/snowflake.service.d.ts +13 -1
- package/dist/services/snowflake.service.d.ts.map +1 -1
- package/dist/services/snowflake.service.js +93 -13
- package/dist/services/snowflake.service.js.map +1 -1
- package/package.json +1 -1
package/dist/mcp-server.js
CHANGED
|
@@ -74,6 +74,16 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
|
74
74
|
description: 'Get session info',
|
|
75
75
|
inputSchema: { type: 'object', properties: {} },
|
|
76
76
|
},
|
|
77
|
+
{
|
|
78
|
+
name: 'clear_cache',
|
|
79
|
+
description: 'Clear all cached query results',
|
|
80
|
+
inputSchema: { type: 'object', properties: {} },
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'get_cache_stats',
|
|
84
|
+
description: 'Get cache statistics (size and keys)',
|
|
85
|
+
inputSchema: { type: 'object', properties: {} },
|
|
86
|
+
},
|
|
77
87
|
],
|
|
78
88
|
};
|
|
79
89
|
});
|
|
@@ -103,6 +113,13 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
|
103
113
|
case 'get_session_info':
|
|
104
114
|
result = await snowflakeService.getCurrentSession();
|
|
105
115
|
break;
|
|
116
|
+
case 'clear_cache':
|
|
117
|
+
snowflakeService.clearCache();
|
|
118
|
+
result = { message: 'Cache cleared successfully' };
|
|
119
|
+
break;
|
|
120
|
+
case 'get_cache_stats':
|
|
121
|
+
result = snowflakeService.getCacheStats();
|
|
122
|
+
break;
|
|
106
123
|
default:
|
|
107
124
|
throw new Error(`Unknown tool: ${name}`);
|
|
108
125
|
}
|
package/dist/mcp-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,10 +16,21 @@ export declare class SnowflakeService {
|
|
|
16
16
|
private static instance;
|
|
17
17
|
private connection;
|
|
18
18
|
private config;
|
|
19
|
+
private cache;
|
|
20
|
+
private cacheConfig;
|
|
19
21
|
private constructor();
|
|
20
22
|
static getInstance(): SnowflakeService;
|
|
21
23
|
private connect;
|
|
22
|
-
|
|
24
|
+
private getCacheKey;
|
|
25
|
+
private getFromCache;
|
|
26
|
+
private setCache;
|
|
27
|
+
private cleanupExpiredCache;
|
|
28
|
+
clearCache(): void;
|
|
29
|
+
getCacheStats(): {
|
|
30
|
+
size: number;
|
|
31
|
+
keys: string[];
|
|
32
|
+
};
|
|
33
|
+
executeQuery(sqlText: string, binds?: any[], useCache?: boolean, ttl?: number): Promise<QueryResult>;
|
|
23
34
|
listDatabases(): Promise<QueryResult>;
|
|
24
35
|
listSchemas(database?: string): Promise<QueryResult>;
|
|
25
36
|
listTables(database?: string, schema?: string): Promise<QueryResult>;
|
|
@@ -28,5 +39,6 @@ export declare class SnowflakeService {
|
|
|
28
39
|
getCurrentSession(): Promise<QueryResult>;
|
|
29
40
|
disconnect(): Promise<void>;
|
|
30
41
|
isConnected(): boolean;
|
|
42
|
+
resetConnection(): void;
|
|
31
43
|
}
|
|
32
44
|
//# sourceMappingURL=snowflake.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snowflake.service.d.ts","sourceRoot":"","sources":["../../src/services/snowflake.service.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"snowflake.service.d.ts","sourceRoot":"","sources":["../../src/services/snowflake.service.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAqBD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,WAAW,CAUjB;IAEF,OAAO;WAcO,WAAW,IAAI,gBAAgB;YAO/B,OAAO;IA8BrB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,mBAAmB;IAiBpB,UAAU,IAAI,IAAI;IAKlB,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;IAO3C,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,GAAE,OAAe,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA4C3G,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC;IAIrC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOpD,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOpE,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAItD,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAItC,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAIzC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBjC,WAAW,IAAI,OAAO;IAKtB,eAAe,IAAI,IAAI;CAG/B"}
|
|
@@ -8,6 +8,18 @@ const snowflake_sdk_1 = __importDefault(require("snowflake-sdk"));
|
|
|
8
8
|
class SnowflakeService {
|
|
9
9
|
constructor() {
|
|
10
10
|
this.connection = null;
|
|
11
|
+
this.cache = new Map();
|
|
12
|
+
this.cacheConfig = {
|
|
13
|
+
defaultTTL: 30000, // 30 seconds default
|
|
14
|
+
queryTypeTTLs: {
|
|
15
|
+
databases: 300000, // 5 minutes - databases don't change often
|
|
16
|
+
schemas: 180000, // 3 minutes
|
|
17
|
+
tables: 60000, // 1 minute
|
|
18
|
+
warehouses: 300000, // 5 minutes
|
|
19
|
+
sessionInfo: 10000, // 10 seconds
|
|
20
|
+
describe: 120000, // 2 minutes
|
|
21
|
+
},
|
|
22
|
+
};
|
|
11
23
|
this.config = {
|
|
12
24
|
account: process.env.SNOWFLAKE_ACCOUNT || '',
|
|
13
25
|
username: process.env.SNOWFLAKE_USERNAME || '',
|
|
@@ -16,6 +28,8 @@ class SnowflakeService {
|
|
|
16
28
|
database: process.env.SNOWFLAKE_DATABASE,
|
|
17
29
|
schema: process.env.SNOWFLAKE_SCHEMA,
|
|
18
30
|
};
|
|
31
|
+
// Start cache cleanup interval (every 60 seconds)
|
|
32
|
+
setInterval(() => this.cleanupExpiredCache(), 60000);
|
|
19
33
|
}
|
|
20
34
|
static getInstance() {
|
|
21
35
|
if (!SnowflakeService.instance) {
|
|
@@ -24,7 +38,7 @@ class SnowflakeService {
|
|
|
24
38
|
return SnowflakeService.instance;
|
|
25
39
|
}
|
|
26
40
|
async connect() {
|
|
27
|
-
if (this.connection) {
|
|
41
|
+
if (this.connection && this.connection.isUp()) {
|
|
28
42
|
return this.connection;
|
|
29
43
|
}
|
|
30
44
|
return new Promise((resolve, reject) => {
|
|
@@ -52,7 +66,63 @@ class SnowflakeService {
|
|
|
52
66
|
});
|
|
53
67
|
});
|
|
54
68
|
}
|
|
55
|
-
|
|
69
|
+
getCacheKey(query, params) {
|
|
70
|
+
return `${query}:${JSON.stringify(params || {})}`;
|
|
71
|
+
}
|
|
72
|
+
getFromCache(cacheKey, ttl) {
|
|
73
|
+
const entry = this.cache.get(cacheKey);
|
|
74
|
+
if (!entry) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
const age = Date.now() - entry.timestamp;
|
|
78
|
+
if (age > ttl) {
|
|
79
|
+
this.cache.delete(cacheKey);
|
|
80
|
+
console.log(`๐๏ธ Cache expired for key: ${cacheKey.substring(0, 50)}...`);
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
console.log(`โ
Cache hit for key: ${cacheKey.substring(0, 50)}... (age: ${age}ms)`);
|
|
84
|
+
return entry.data;
|
|
85
|
+
}
|
|
86
|
+
setCache(cacheKey, data) {
|
|
87
|
+
this.cache.set(cacheKey, {
|
|
88
|
+
data,
|
|
89
|
+
timestamp: Date.now(),
|
|
90
|
+
});
|
|
91
|
+
console.log(`๐พ Cached result for key: ${cacheKey.substring(0, 50)}... (size: ${this.cache.size})`);
|
|
92
|
+
}
|
|
93
|
+
cleanupExpiredCache() {
|
|
94
|
+
const now = Date.now();
|
|
95
|
+
let cleaned = 0;
|
|
96
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
97
|
+
// Remove entries older than the longest TTL
|
|
98
|
+
if (now - entry.timestamp > Math.max(...Object.values(this.cacheConfig.queryTypeTTLs))) {
|
|
99
|
+
this.cache.delete(key);
|
|
100
|
+
cleaned++;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (cleaned > 0) {
|
|
104
|
+
console.log(`๐งน Cleaned up ${cleaned} expired cache entries. Current cache size: ${this.cache.size}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
clearCache() {
|
|
108
|
+
this.cache.clear();
|
|
109
|
+
console.log('๐๏ธ All cache cleared');
|
|
110
|
+
}
|
|
111
|
+
getCacheStats() {
|
|
112
|
+
return {
|
|
113
|
+
size: this.cache.size,
|
|
114
|
+
keys: Array.from(this.cache.keys()).map(k => k.substring(0, 50)),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
async executeQuery(sqlText, binds, useCache = false, ttl) {
|
|
118
|
+
// Check cache if enabled
|
|
119
|
+
if (useCache) {
|
|
120
|
+
const cacheKey = this.getCacheKey(sqlText, binds);
|
|
121
|
+
const cachedResult = this.getFromCache(cacheKey, ttl || this.cacheConfig.defaultTTL);
|
|
122
|
+
if (cachedResult) {
|
|
123
|
+
return cachedResult;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
56
126
|
const startTime = Date.now();
|
|
57
127
|
const conn = await this.connect();
|
|
58
128
|
return new Promise((resolve, reject) => {
|
|
@@ -66,40 +136,46 @@ class SnowflakeService {
|
|
|
66
136
|
}
|
|
67
137
|
else {
|
|
68
138
|
const columns = stmt.getColumns().map(col => col.getName());
|
|
69
|
-
|
|
139
|
+
const result = {
|
|
70
140
|
columns,
|
|
71
141
|
rows: rows || [],
|
|
72
142
|
rowCount: rows?.length || 0,
|
|
73
143
|
executionTime,
|
|
74
|
-
}
|
|
144
|
+
};
|
|
145
|
+
// Cache the result if caching is enabled
|
|
146
|
+
if (useCache) {
|
|
147
|
+
const cacheKey = this.getCacheKey(sqlText, binds);
|
|
148
|
+
this.setCache(cacheKey, result);
|
|
149
|
+
}
|
|
150
|
+
resolve(result);
|
|
75
151
|
}
|
|
76
152
|
},
|
|
77
153
|
});
|
|
78
154
|
});
|
|
79
155
|
}
|
|
80
156
|
async listDatabases() {
|
|
81
|
-
return this.executeQuery('SHOW DATABASES');
|
|
157
|
+
return this.executeQuery('SHOW DATABASES', undefined, true, this.cacheConfig.queryTypeTTLs.databases);
|
|
82
158
|
}
|
|
83
159
|
async listSchemas(database) {
|
|
84
160
|
if (database) {
|
|
85
|
-
return this.executeQuery(`SHOW SCHEMAS IN DATABASE ${database}
|
|
161
|
+
return this.executeQuery(`SHOW SCHEMAS IN DATABASE ${database}`, undefined, true, this.cacheConfig.queryTypeTTLs.schemas);
|
|
86
162
|
}
|
|
87
|
-
return this.executeQuery('SHOW SCHEMAS');
|
|
163
|
+
return this.executeQuery('SHOW SCHEMAS', undefined, true, this.cacheConfig.queryTypeTTLs.schemas);
|
|
88
164
|
}
|
|
89
165
|
async listTables(database, schema) {
|
|
90
166
|
if (database && schema) {
|
|
91
|
-
return this.executeQuery(`SHOW TABLES IN ${database}.${schema}
|
|
167
|
+
return this.executeQuery(`SHOW TABLES IN ${database}.${schema}`, undefined, true, this.cacheConfig.queryTypeTTLs.tables);
|
|
92
168
|
}
|
|
93
|
-
return this.executeQuery('SHOW TABLES');
|
|
169
|
+
return this.executeQuery('SHOW TABLES', undefined, true, this.cacheConfig.queryTypeTTLs.tables);
|
|
94
170
|
}
|
|
95
171
|
async describeTable(tableName) {
|
|
96
|
-
return this.executeQuery(`DESCRIBE TABLE ${tableName}
|
|
172
|
+
return this.executeQuery(`DESCRIBE TABLE ${tableName}`, undefined, true, this.cacheConfig.queryTypeTTLs.describe);
|
|
97
173
|
}
|
|
98
174
|
async listWarehouses() {
|
|
99
|
-
return this.executeQuery('SHOW WAREHOUSES');
|
|
175
|
+
return this.executeQuery('SHOW WAREHOUSES', undefined, true, this.cacheConfig.queryTypeTTLs.warehouses);
|
|
100
176
|
}
|
|
101
177
|
async getCurrentSession() {
|
|
102
|
-
return this.executeQuery('SELECT CURRENT_USER(), CURRENT_ROLE(), CURRENT_DATABASE(), CURRENT_SCHEMA(), CURRENT_WAREHOUSE()');
|
|
178
|
+
return this.executeQuery('SELECT CURRENT_USER(), CURRENT_ROLE(), CURRENT_DATABASE(), CURRENT_SCHEMA(), CURRENT_WAREHOUSE()', undefined, true, this.cacheConfig.queryTypeTTLs.sessionInfo);
|
|
103
179
|
}
|
|
104
180
|
async disconnect() {
|
|
105
181
|
if (this.connection) {
|
|
@@ -119,7 +195,11 @@ class SnowflakeService {
|
|
|
119
195
|
}
|
|
120
196
|
}
|
|
121
197
|
isConnected() {
|
|
122
|
-
return this.connection !== null;
|
|
198
|
+
return this.connection !== null && this.connection.isUp();
|
|
199
|
+
}
|
|
200
|
+
// Reset cached connection to force reconnect
|
|
201
|
+
resetConnection() {
|
|
202
|
+
this.connection = null;
|
|
123
203
|
}
|
|
124
204
|
}
|
|
125
205
|
exports.SnowflakeService = SnowflakeService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snowflake.service.js","sourceRoot":"","sources":["../../src/services/snowflake.service.ts"],"names":[],"mappings":";;;;;;AAAA,kEAAsC;
|
|
1
|
+
{"version":3,"file":"snowflake.service.js","sourceRoot":"","sources":["../../src/services/snowflake.service.ts"],"names":[],"mappings":"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"}
|