@naganpm/snowflake-mcp-server 1.0.8 → 1.0.9

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/README.md CHANGED
@@ -1,47 +1,56 @@
1
1
  # Snowflake MCP Server
2
2
 
3
- A Model Context Protocol (MCP) server for Snowflake database integration built with Express.js and TypeScript.
3
+ A **Model Context Protocol (MCP) server** for Snowflake database integration, built with TypeScript and compliant with Snowflake's MCP standards (revision 2025-06-18).
4
4
 
5
5
  ## Features
6
6
 
7
- - Execute custom SQL queries
8
- - List databases, schemas, and tables
9
- - Describe table structures
10
- - List warehouses
11
- - Get current session information
12
- - Connection status monitoring
13
- - TypeScript support
14
- - RESTful API
15
- - ✅ Error handling
7
+ - 🚀 **MCP Protocol Compliant** - Follows Snowflake's MCP standards
8
+ - 🔧 **System SQL Execution** - Execute SQL queries with proper context management
9
+ - 📊 **Metadata Queries** - Query databases, schemas, tables, columns, and warehouses
10
+ - 🏭 **Warehouse Management** - Start, stop, suspend, and resume warehouses
11
+ - 📍 **Session Information** - Get current session and connection status
12
+ - 🛡️ **Error Handling** - Comprehensive error handling and logging
13
+ - 💻 **TypeScript Support** - Full TypeScript implementation
14
+ - 🔌 **Dual Mode** - MCP server (primary) + Express API (optional)
16
15
 
17
16
  ## Installation
18
17
 
18
+ ```bash
19
+ npm install @naganpm/snowflake-mcp-server
20
+ ```
21
+
22
+ Or for development:
19
23
  ```bash
20
24
  npm install
21
25
  ```
22
26
 
23
27
  ## Configuration
24
28
 
25
- #### Approach1
29
+ ### MCP Configuration (Primary Method)
26
30
 
27
- Note: If you are trying to configure MCP using continue.dev
31
+ #### Using continue.dev or Claude Desktop
28
32
 
33
+ ```json
34
+ {
35
+ "mcpServers": {
36
+ "snowflake": {
37
+ "command": "npx",
38
+ "args": ["-y", "@naganpm/snowflake-mcp-server@latest"],
39
+ "env": {
40
+ "SNOWFLAKE_ACCOUNT": "your-account.us-east-2.aws",
41
+ "SNOWFLAKE_USERNAME": "your-username",
42
+ "SNOWFLAKE_PASSWORD": "your-password",
43
+ "SNOWFLAKE_WAREHOUSE": "your-warehouse",
44
+ "SNOWFLAKE_DATABASE": "your-database",
45
+ "SNOWFLAKE_SCHEMA": "your-schema"
46
+ }
47
+ }
48
+ }
49
+ }
29
50
  ```
30
- mcpServers:
31
- - name: snowflake MCP
32
- command: npx
33
- args:
34
- - -y
35
- - "@naganpm/snowflake-mcp-server@latest"
36
- env:
37
- SNOWFLAKE_ACCOUNT: <account-id>.us-east-2.aws
38
- SNOWFLAKE_USERNAME: <your-username>
39
- SNOWFLAKE_PASSWORD: <your-password>
40
- SNOWFLAKE_WAREHOUSE: <warehouse-name>
41
- SNOWFLAKE_DATABASE: <database-name>
42
- SNOWFLAKE_SCHEMA: <schema-name>
43
- ```
44
- #### Approach2
51
+
52
+ ### Environment Configuration
53
+
45
54
  1. Copy `.env.example` to `.env`:
46
55
  ```bash
47
56
  cp .env.example .env
@@ -55,142 +64,143 @@ SNOWFLAKE_PASSWORD=your-password
55
64
  SNOWFLAKE_WAREHOUSE=YOUR_WAREHOUSE
56
65
  SNOWFLAKE_DATABASE=YOUR_DATABASE
57
66
  SNOWFLAKE_SCHEMA=YOUR_SCHEMA
58
- PORT=3000
59
67
  ```
60
68
 
61
69
  ## Usage
62
70
 
63
- ### Development Mode
71
+ ### MCP Server (Primary)
72
+
64
73
  ```bash
74
+ # Development
65
75
  npm run dev
66
- ```
67
76
 
68
- ### Build
69
- ```bash
70
- npm run build
77
+ # Production
78
+ npm run build && npm start
71
79
  ```
72
80
 
73
- ### Production
81
+ ### Express API Server (Optional)
82
+
74
83
  ```bash
75
- npm start
84
+ # Development
85
+ npm run dev:express
86
+
87
+ # Production
88
+ npm run build && npm run start:express
76
89
  ```
77
90
 
78
- ## API Endpoints
91
+ ## MCP Tools
79
92
 
80
- ### Health Check
81
- ```
82
- GET /health
83
- ```
93
+ ### 1. `system_execute_sql`
94
+ Execute SQL queries with optional context switching.
84
95
 
85
- ### Execute Query
86
- ```
87
- POST /api/snowflake/query
88
- Content-Type: application/json
96
+ **Parameters:**
97
+ - `sql` (required): SQL query to execute
98
+ - `parameters` (optional): Bind parameters
99
+ - `warehouse` (optional): Warehouse context
100
+ - `database` (optional): Database context
101
+ - `schema` (optional): Schema context
89
102
 
103
+ **Example:**
104
+ ```json
90
105
  {
91
- "query": "SELECT * FROM table_name LIMIT 10",
92
- "binds": []
106
+ "name": "system_execute_sql",
107
+ "arguments": {
108
+ "sql": "SELECT COUNT(*) FROM my_table",
109
+ "warehouse": "COMPUTE_WH"
110
+ }
93
111
  }
94
112
  ```
95
113
 
96
- ### List Databases
97
- ```
98
- GET /api/snowflake/databases
99
- ```
114
+ ### 2. `snowflake_metadata_query`
115
+ Query Snowflake metadata information.
100
116
 
101
- ### List Schemas
102
- ```
103
- GET /api/snowflake/schemas?database=YOUR_DATABASE
104
- ```
117
+ **Parameters:**
118
+ - `metadata_type` (required): One of: `databases`, `schemas`, `tables`, `columns`, `warehouses`, `users`, `roles`
119
+ - `database_name` (optional): Required for schemas/tables/columns
120
+ - `schema_name` (optional): Required for tables/columns
121
+ - `table_name` (optional): Required for columns
105
122
 
106
- ### List Tables
107
- ```
108
- GET /api/snowflake/tables?database=YOUR_DATABASE&schema=YOUR_SCHEMA
109
- ```
110
-
111
- ### Describe Table
112
- ```
113
- GET /api/snowflake/tables/:tableName/describe
114
- ```
115
-
116
- ### List Warehouses
117
- ```
118
- GET /api/snowflake/warehouses
123
+ **Example:**
124
+ ```json
125
+ {
126
+ "name": "snowflake_metadata_query",
127
+ "arguments": {
128
+ "metadata_type": "tables",
129
+ "database_name": "MY_DB",
130
+ "schema_name": "PUBLIC"
131
+ }
132
+ }
119
133
  ```
120
134
 
121
- ### Get Current Session
122
- ```
123
- GET /api/snowflake/session
124
- ```
135
+ ### 3. `snowflake_session_info`
136
+ Get current session information and connection status.
125
137
 
126
- ### Connection Status
127
- ```
128
- GET /api/snowflake/status
138
+ **Example:**
139
+ ```json
140
+ {
141
+ "name": "snowflake_session_info",
142
+ "arguments": {}
143
+ }
129
144
  ```
130
145
 
131
- ## Example Requests
146
+ ### 4. `snowflake_warehouse_management`
147
+ Manage Snowflake warehouses.
132
148
 
133
- ### Using cURL
134
-
135
- ```bash
136
- # Health check
137
- curl http://localhost:3000/health
149
+ **Parameters:**
150
+ - `action` (required): One of: `list`, `start`, `stop`, `suspend`, `resume`, `describe`
151
+ - `warehouse_name` (optional): Required for start/stop/suspend/resume/describe
138
152
 
139
- # Execute query
140
- curl -X POST http://localhost:3000/api/snowflake/query \
141
- -H "Content-Type: application/json" \
142
- -d '{"query": "SELECT CURRENT_DATE()"}'
143
-
144
- # List databases
145
- curl http://localhost:3000/api/snowflake/databases
146
-
147
- # List tables
148
- curl "http://localhost:3000/api/snowflake/tables?database=MYDB&schema=PUBLIC"
153
+ **Example:**
154
+ ```json
155
+ {
156
+ "name": "snowflake_warehouse_management",
157
+ "arguments": {
158
+ "action": "resume",
159
+ "warehouse_name": "COMPUTE_WH"
160
+ }
161
+ }
149
162
  ```
150
163
 
151
- ### Using JavaScript/TypeScript
164
+ ## API Endpoints (Express Mode)
152
165
 
153
- ```typescript
154
- // Execute query
155
- const response = await fetch('http://localhost:3000/api/snowflake/query', {
156
- method: 'POST',
157
- headers: {
158
- 'Content-Type': 'application/json',
159
- },
160
- body: JSON.stringify({
161
- query: 'SELECT * FROM my_table LIMIT 10',
162
- }),
163
- });
166
+ If using the Express server (`npm run dev:express`), the following REST endpoints are available:
164
167
 
165
- const result = await response.json();
166
- console.log(result.data);
167
- ```
168
+ | Method | Endpoint | Description |
169
+ |--------|----------|-------------|
170
+ | GET | `/health` | Health check |
171
+ | POST | `/api/snowflake/query` | Execute SQL query |
172
+ | GET | `/api/snowflake/databases` | List databases |
173
+ | GET | `/api/snowflake/schemas` | List schemas |
174
+ | GET | `/api/snowflake/tables` | List tables |
175
+ | GET | `/api/snowflake/tables/:name/describe` | Describe table |
176
+ | GET | `/api/snowflake/warehouses` | List warehouses |
177
+ | GET | `/api/snowflake/session` | Get session info |
178
+ | GET | `/api/snowflake/status` | Connection status |
168
179
 
169
180
  ## Response Format
170
181
 
171
- All successful responses follow this format:
182
+ ### MCP Responses
172
183
  ```json
173
184
  {
174
185
  "success": true,
175
186
  "data": {
176
- "columns": ["col1", "col2"],
177
- "rows": [
178
- { "col1": "value1", "col2": "value2" }
179
- ],
187
+ "columns": ["column1", "column2"],
188
+ "rows": [["value1", "value2"]],
180
189
  "rowCount": 1,
181
- "executionTime": 123
182
- }
190
+ "executionTime": 142,
191
+ "query": "SELECT column1, column2 FROM table"
192
+ },
193
+ "timestamp": "2026-02-17T10:30:00.000Z"
183
194
  }
184
195
  ```
185
196
 
186
- Error responses:
197
+ ### Error Responses
187
198
  ```json
188
199
  {
189
200
  "success": false,
190
- "error": {
191
- "message": "Error message",
192
- "code": "ERROR_CODE"
193
- }
201
+ "error": "SQL Error: Object 'INVALID_TABLE' does not exist (Code: 002003)",
202
+ "tool": "system_execute_sql",
203
+ "timestamp": "2026-02-17T10:30:00.000Z"
194
204
  }
195
205
  ```
196
206
 
@@ -200,13 +210,12 @@ Error responses:
200
210
  ```
201
211
  .
202
212
  ├── src/
203
- │ ├── index.ts # Main entry point
213
+ │ ├── mcp-server.ts # MCP server (primary entry point)
214
+ │ ├── index.ts # Express server (optional)
204
215
  │ ├── services/
205
- │ │ └── snowflake.service.ts # Snowflake service
206
- ├── routes/
207
- └── snowflake.routes.ts # API routes
208
- │ └── middleware/
209
- │ └── error.middleware.ts # Error handling
216
+ │ │ └── snowflake.service.ts # Snowflake service
217
+ └── routes/
218
+ └── snowflake.routes.ts # Express API routes
210
219
  ├── package.json
211
220
  ├── tsconfig.json
212
221
  └── .env
@@ -214,12 +223,37 @@ Error responses:
214
223
 
215
224
  ### Scripts
216
225
 
226
+ - `npm run dev` - Run MCP server in development mode
227
+ - `npm run dev:express` - Run Express server in development mode
217
228
  - `npm run build` - Build TypeScript to JavaScript
218
- - `npm run dev` - Run in development mode with ts-node
219
- - `npm start` - Run production build
229
+ - `npm run start` - Run production MCP server
230
+ - `npm run start:express` - Run production Express server
220
231
  - `npm run watch` - Watch mode for development
221
232
  - `npm run clean` - Clean dist folder
222
233
 
234
+ ## Snowflake MCP Standards Compliance
235
+
236
+ This server follows Snowflake's MCP documentation standards:
237
+
238
+ - ✅ MCP Protocol revision "2025-06-18"
239
+ - ✅ Standardized tool naming conventions
240
+ - ✅ Proper error handling and logging
241
+ - ✅ Context-aware SQL execution
242
+ - ✅ Metadata query capabilities
243
+ - ✅ Session management
244
+ - ✅ Warehouse lifecycle management
245
+
246
+ ## References
247
+
248
+ - [Snowflake Cortex Agents MCP Documentation](https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-mcp)
249
+
250
+ ## Security Notes
251
+
252
+ - Use environment variables for credentials
253
+ - Avoid hardcoded passwords or tokens
254
+ - Follow least-privilege access principles
255
+ - Consider OAuth authentication for production use
256
+
223
257
  ## License
224
258
 
225
259
  MIT
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAgB,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAS9D,QAAA,MAAM,GAAG,EAAE,OAAmB,CAAC;AAwC/B,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAOA,OAAgB,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAM9D,QAAA,MAAM,GAAG,EAAE,OAAmB,CAAC;AAwC/B,eAAe,GAAG,CAAC"}
package/dist/index.js CHANGED
@@ -4,13 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ const dotenv_1 = __importDefault(require("dotenv"));
8
+ const path_1 = __importDefault(require("path"));
9
+ // Load environment variables FIRST before any other imports
10
+ dotenv_1.default.config({ path: path_1.default.resolve(__dirname, '../.env') });
7
11
  const express_1 = __importDefault(require("express"));
8
12
  const cors_1 = __importDefault(require("cors"));
9
- const dotenv_1 = __importDefault(require("dotenv"));
10
13
  const snowflake_service_1 = require("./services/snowflake.service");
11
14
  const error_middleware_1 = require("./middleware/error.middleware");
12
15
  const snowflake_routes_1 = require("./routes/snowflake.routes");
13
- dotenv_1.default.config();
14
16
  const app = (0, express_1.default)();
15
17
  const port = process.env.PORT || 3000;
16
18
  // Middleware
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,sDAA8D;AAC9D,gDAAwB;AACxB,oDAA4B;AAC5B,oEAAgE;AAChE,oEAA6D;AAC7D,gEAA4D;AAE5D,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,GAAG,GAAY,IAAA,iBAAO,GAAE,CAAC;AAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAEtC,aAAa;AACb,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;AAChB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACxB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAEhD,eAAe;AACf,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACjD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,mBAAmB;AACnB,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,kCAAe,CAAC,CAAC;AAE3C,gBAAgB;AAChB,GAAG,CAAC,GAAG,CAAC,+BAAY,CAAC,CAAC;AAEtB,kCAAkC;AAClC,MAAM,gBAAgB,GAAG,oCAAgB,CAAC,WAAW,EAAE,CAAC;AAExD,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,SAAS,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC9B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IAC/B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,kBAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,oDAA4B;AAC5B,gDAAwB;AAExB,4DAA4D;AAC5D,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAE5D,sDAA8D;AAC9D,gDAAwB;AACxB,oEAAgE;AAChE,oEAA6D;AAC7D,gEAA4D;AAE5D,MAAM,GAAG,GAAY,IAAA,iBAAO,GAAE,CAAC;AAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAEtC,aAAa;AACb,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;AAChB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACxB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAEhD,eAAe;AACf,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACjD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,mBAAmB;AACnB,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,kCAAe,CAAC,CAAC;AAE3C,gBAAgB;AAChB,GAAG,CAAC,GAAG,CAAC,+BAAY,CAAC,CAAC;AAEtB,kCAAkC;AAClC,MAAM,gBAAgB,GAAG,oCAAgB,CAAC,WAAW,EAAE,CAAC;AAExD,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,2CAA2C,IAAI,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,SAAS,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC9B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IAC/B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,kBAAe,GAAG,CAAC"}
@@ -13,7 +13,7 @@ dotenv_1.default.config();
13
13
  const snowflakeService = snowflake_service_1.SnowflakeService.getInstance();
14
14
  const server = new index_js_1.Server({
15
15
  name: 'snowflake-mcp-server',
16
- version: '1.0.0',
16
+ version: '1.0.8',
17
17
  }, {
18
18
  capabilities: {
19
19
  tools: {},
@@ -23,57 +23,90 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
23
23
  return {
24
24
  tools: [
25
25
  {
26
- name: 'execute_query',
27
- description: 'Execute a SQL query on Snowflake database',
26
+ name: 'system_execute_sql',
27
+ description: 'Execute SQL queries on Snowflake database with proper error handling and result formatting',
28
28
  inputSchema: {
29
29
  type: 'object',
30
30
  properties: {
31
- query: { type: 'string', description: 'SQL query to execute' },
32
- binds: { type: 'array', description: 'Optional bind parameters' },
31
+ sql: {
32
+ type: 'string',
33
+ description: 'SQL query to execute'
34
+ },
35
+ parameters: {
36
+ type: 'array',
37
+ description: 'Optional bind parameters for the query',
38
+ items: { type: 'string' }
39
+ },
40
+ warehouse: {
41
+ type: 'string',
42
+ description: 'Optional warehouse to use for this query'
43
+ },
44
+ database: {
45
+ type: 'string',
46
+ description: 'Optional database context for this query'
47
+ },
48
+ schema: {
49
+ type: 'string',
50
+ description: 'Optional schema context for this query'
51
+ }
33
52
  },
34
- required: ['query'],
53
+ required: ['sql'],
35
54
  },
36
55
  },
37
56
  {
38
- name: 'list_databases',
39
- description: 'List all databases',
40
- inputSchema: { type: 'object', properties: {} },
41
- },
42
- {
43
- name: 'list_schemas',
44
- description: 'List schemas',
57
+ name: 'snowflake_metadata_query',
58
+ description: 'Query Snowflake metadata (databases, schemas, tables, columns, warehouses)',
45
59
  inputSchema: {
46
60
  type: 'object',
47
- properties: { database: { type: 'string' } },
61
+ properties: {
62
+ metadata_type: {
63
+ type: 'string',
64
+ enum: ['databases', 'schemas', 'tables', 'columns', 'warehouses', 'users', 'roles'],
65
+ description: 'Type of metadata to query'
66
+ },
67
+ database_name: {
68
+ type: 'string',
69
+ description: 'Database name (required for schemas, tables, columns)'
70
+ },
71
+ schema_name: {
72
+ type: 'string',
73
+ description: 'Schema name (required for tables, columns)'
74
+ },
75
+ table_name: {
76
+ type: 'string',
77
+ description: 'Table name (required for columns)'
78
+ }
79
+ },
80
+ required: ['metadata_type'],
48
81
  },
49
82
  },
50
83
  {
51
- name: 'list_tables',
52
- description: 'List tables',
84
+ name: 'snowflake_session_info',
85
+ description: 'Get current Snowflake session information and connection status',
53
86
  inputSchema: {
54
87
  type: 'object',
55
- properties: { database: { type: 'string' }, schema: { type: 'string' } },
88
+ properties: {},
56
89
  },
57
90
  },
58
91
  {
59
- name: 'describe_table',
60
- description: 'Describe table structure',
92
+ name: 'snowflake_warehouse_management',
93
+ description: 'Manage Snowflake warehouses (list, start, stop, suspend, resume)',
61
94
  inputSchema: {
62
95
  type: 'object',
63
- properties: { tableName: { type: 'string' } },
64
- required: ['tableName'],
96
+ properties: {
97
+ action: {
98
+ type: 'string',
99
+ enum: ['list', 'start', 'stop', 'suspend', 'resume', 'describe'],
100
+ description: 'Warehouse management action'
101
+ },
102
+ warehouse_name: {
103
+ type: 'string',
104
+ description: 'Warehouse name (required for start, stop, suspend, resume, describe)'
105
+ }
106
+ },
107
+ required: ['action'],
65
108
  },
66
- },
67
- {
68
- name: 'list_warehouses',
69
- description: 'List warehouses',
70
- inputSchema: { type: 'object', properties: {} },
71
- },
72
- {
73
- name: 'get_session_info',
74
- description: 'Get session info',
75
- inputSchema: { type: 'object', properties: {} },
76
- },
109
+ }
77
110
  ],
78
111
  };
79
112
  });
@@ -82,37 +115,119 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
82
115
  const { name, arguments: args } = request.params;
83
116
  let result;
84
117
  switch (name) {
85
- case 'execute_query':
86
- result = await snowflakeService.executeQuery(args?.query || '', args?.binds);
87
- break;
88
- case 'list_databases':
89
- result = await snowflakeService.listDatabases();
118
+ case 'system_execute_sql':
119
+ // Set context if provided
120
+ if (args?.warehouse) {
121
+ await snowflakeService.executeQuery(`USE WAREHOUSE ${args.warehouse}`);
122
+ }
123
+ if (args?.database) {
124
+ await snowflakeService.executeQuery(`USE DATABASE ${args.database}`);
125
+ }
126
+ if (args?.schema) {
127
+ await snowflakeService.executeQuery(`USE SCHEMA ${args.schema}`);
128
+ }
129
+ result = await snowflakeService.executeQuery(args?.sql || '', args?.parameters);
90
130
  break;
91
- case 'list_schemas':
92
- result = await snowflakeService.listSchemas(args?.database);
131
+ case 'snowflake_metadata_query':
132
+ const metadataType = args?.metadata_type;
133
+ const databaseName = args?.database_name;
134
+ const schemaName = args?.schema_name;
135
+ const tableName = args?.table_name;
136
+ switch (metadataType) {
137
+ case 'databases':
138
+ result = await snowflakeService.listDatabases();
139
+ break;
140
+ case 'schemas':
141
+ result = await snowflakeService.listSchemas(databaseName);
142
+ break;
143
+ case 'tables':
144
+ result = await snowflakeService.listTables(databaseName, schemaName);
145
+ break;
146
+ case 'columns':
147
+ if (!tableName) {
148
+ throw new Error('table_name is required for columns metadata');
149
+ }
150
+ result = await snowflakeService.describeTable(`${databaseName}.${schemaName}.${tableName}`);
151
+ break;
152
+ case 'warehouses':
153
+ result = await snowflakeService.listWarehouses();
154
+ break;
155
+ case 'users':
156
+ result = await snowflakeService.executeQuery('SHOW USERS');
157
+ break;
158
+ case 'roles':
159
+ result = await snowflakeService.executeQuery('SHOW ROLES');
160
+ break;
161
+ default:
162
+ throw new Error(`Unknown metadata type: ${metadataType}`);
163
+ }
93
164
  break;
94
- case 'list_tables':
95
- result = await snowflakeService.listTables(args?.database, args?.schema);
96
- break;
97
- case 'describe_table':
98
- result = await snowflakeService.describeTable(args?.tableName || '');
99
- break;
100
- case 'list_warehouses':
101
- result = await snowflakeService.listWarehouses();
102
- break;
103
- case 'get_session_info':
165
+ case 'snowflake_session_info':
104
166
  result = await snowflakeService.getCurrentSession();
105
167
  break;
168
+ case 'snowflake_warehouse_management':
169
+ const action = args?.action;
170
+ const warehouseName = args?.warehouse_name;
171
+ switch (action) {
172
+ case 'list':
173
+ result = await snowflakeService.listWarehouses();
174
+ break;
175
+ case 'start':
176
+ case 'resume':
177
+ if (!warehouseName) {
178
+ throw new Error('warehouse_name is required for start/resume action');
179
+ }
180
+ result = await snowflakeService.executeQuery(`ALTER WAREHOUSE ${warehouseName} RESUME`);
181
+ break;
182
+ case 'stop':
183
+ case 'suspend':
184
+ if (!warehouseName) {
185
+ throw new Error('warehouse_name is required for stop/suspend action');
186
+ }
187
+ result = await snowflakeService.executeQuery(`ALTER WAREHOUSE ${warehouseName} SUSPEND`);
188
+ break;
189
+ case 'describe':
190
+ if (!warehouseName) {
191
+ throw new Error('warehouse_name is required for describe action');
192
+ }
193
+ result = await snowflakeService.executeQuery(`DESCRIBE WAREHOUSE ${warehouseName}`);
194
+ break;
195
+ default:
196
+ throw new Error(`Unknown warehouse action: ${action}`);
197
+ }
198
+ break;
106
199
  default:
107
200
  throw new Error(`Unknown tool: ${name}`);
108
201
  }
202
+ // Format the response according to MCP standards
109
203
  return {
110
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
204
+ content: [
205
+ {
206
+ type: 'text',
207
+ text: JSON.stringify({
208
+ success: true,
209
+ data: result,
210
+ timestamp: new Date().toISOString()
211
+ }, null, 2)
212
+ }
213
+ ],
111
214
  };
112
215
  }
113
216
  catch (error) {
217
+ const toolName = request.params.name;
218
+ console.error(`MCP Tool Error [${toolName}]:`, error);
114
219
  return {
115
- content: [{ type: 'text', text: `Error: ${error.message}` }],
220
+ content: [
221
+ {
222
+ type: 'text',
223
+ text: JSON.stringify({
224
+ success: false,
225
+ error: error.message,
226
+ tool: toolName,
227
+ timestamp: new Date().toISOString()
228
+ }, null, 2)
229
+ }
230
+ ],
116
231
  isError: true,
117
232
  };
118
233
  }
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"snowflake.routes.d.ts","sourceRoot":"","sources":["../../src/routes/snowflake.routes.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAuHxB,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"snowflake.routes.d.ts","sourceRoot":"","sources":["../../src/routes/snowflake.routes.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAuJxB,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,CAAC"}
@@ -105,16 +105,39 @@ router.get('/session', async (req, res, next) => {
105
105
  }
106
106
  });
107
107
  // Connection status
108
- router.get('/status', async (req, res, next) => {
108
+ router.get('/status', async (req, res) => {
109
109
  try {
110
- const isConnected = snowflakeService.isConnected();
110
+ // Check if already connected
111
+ const isCurrentlyConnected = snowflakeService.isConnected();
112
+ if (isCurrentlyConnected) {
113
+ res.json({
114
+ success: true,
115
+ connected: true,
116
+ message: 'Connected to Snowflake',
117
+ });
118
+ return;
119
+ }
120
+ // If not connected, attempt a connection test
121
+ console.log('Testing Snowflake connection...');
122
+ // Reset connection to ensure fresh attempt
123
+ snowflakeService.resetConnection();
124
+ // Test connection by trying to get session info (timeout after 10 seconds)
125
+ const timeout = new Promise((_, reject) => setTimeout(() => reject(new Error('Connection timeout after 10 seconds')), 10000));
126
+ const connectionTest = snowflakeService.getCurrentSession();
127
+ await Promise.race([connectionTest, timeout]);
111
128
  res.json({
112
129
  success: true,
113
- connected: isConnected,
130
+ connected: true,
131
+ message: 'Successfully connected to Snowflake',
114
132
  });
115
133
  }
116
134
  catch (error) {
117
- next(error);
135
+ console.error('Status check failed:', error.message);
136
+ res.json({
137
+ success: true,
138
+ connected: false,
139
+ error: error.message,
140
+ });
118
141
  }
119
142
  });
120
143
  //# sourceMappingURL=snowflake.routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snowflake.routes.js","sourceRoot":"","sources":["../../src/routes/snowflake.routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snowflake.routes.js","sourceRoot":"","sources":["../../src/routes/snowflake.routes.ts"],"names":[],"mappings":";;;AAAA,qCAAkE;AAClE,qEAAiE;AAEjE,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAuJL,iCAAe;AAtJlC,MAAM,gBAAgB,GAAG,oCAAgB,CAAC,WAAW,EAAE,CAAC;AAExD,gBAAgB;AAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC9E,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,iBAAiB;AACjB,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACjF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC/E,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,QAAkB,CAAC,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,cAAc;AACd,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC9E,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAC9C,QAAkB,EAClB,MAAgB,CACjB,CAAC;QACF,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,iBAAiB;AACjB,MAAM,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAClG,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAClF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,cAAc,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,sBAAsB;AACtB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IAC/E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IAC1D,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAE5D,IAAI,oBAAoB,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,wBAAwB;aAClC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,8CAA8C;QAC9C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAE/C,2CAA2C;QAC3C,gBAAgB,CAAC,eAAe,EAAE,CAAC;QAEnC,2EAA2E;QAC3E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACxC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,EAAE,KAAK,CAAC,CAClF,CAAC;QAEF,MAAM,cAAc,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;QAE5D,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QAE9C,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,qCAAqC;SAC/C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,KAAK,CAAC,OAAO;SACrB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -11,6 +11,7 @@ export interface QueryResult {
11
11
  rows: any[];
12
12
  rowCount: number;
13
13
  executionTime: number;
14
+ query?: string;
14
15
  }
15
16
  export declare class SnowflakeService {
16
17
  private static instance;
@@ -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;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO;WAWO,WAAW,IAAI,gBAAgB;YAO/B,OAAO;IA8BN,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA2BpE,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"}
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;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO;WAWO,WAAW,IAAI,gBAAgB;YAO/B,OAAO;IA2CN,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA6CpE,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"}
@@ -47,6 +47,18 @@ class SnowflakeService {
47
47
  }
48
48
  else {
49
49
  console.log('✅ Successfully connected to Snowflake');
50
+ console.log('📊 Connection Details:');
51
+ console.log(` - Account: ${this.config.account}`);
52
+ console.log(` - Username: ${this.config.username}`);
53
+ if (this.config.warehouse) {
54
+ console.log(` - Warehouse: ${this.config.warehouse}`);
55
+ }
56
+ if (this.config.database) {
57
+ console.log(` - Database: ${this.config.database}`);
58
+ }
59
+ if (this.config.schema) {
60
+ console.log(` - Schema: ${this.config.schema}`);
61
+ }
50
62
  resolve(conn);
51
63
  }
52
64
  });
@@ -54,28 +66,43 @@ class SnowflakeService {
54
66
  }
55
67
  async executeQuery(sqlText, binds) {
56
68
  const startTime = Date.now();
57
- const conn = await this.connect();
58
- return new Promise((resolve, reject) => {
59
- conn.execute({
60
- sqlText,
61
- binds,
62
- complete: (err, stmt, rows) => {
63
- const executionTime = Date.now() - startTime;
64
- if (err) {
65
- reject(err);
66
- }
67
- else {
68
- const columns = stmt.getColumns().map(col => col.getName());
69
- resolve({
70
- columns,
71
- rows: rows || [],
72
- rowCount: rows?.length || 0,
73
- executionTime,
74
- });
75
- }
76
- },
69
+ try {
70
+ const conn = await this.connect();
71
+ return new Promise((resolve, reject) => {
72
+ conn.execute({
73
+ sqlText,
74
+ binds,
75
+ complete: (err, stmt, rows) => {
76
+ const executionTime = Date.now() - startTime;
77
+ if (err) {
78
+ console.error('SQL Execution Error:', {
79
+ query: sqlText,
80
+ error: err.message,
81
+ code: err.code,
82
+ sqlState: err.sqlState
83
+ });
84
+ reject(new Error(`SQL Error: ${err.message} (Code: ${err.code})`));
85
+ }
86
+ else {
87
+ const columns = stmt.getColumns().map(col => col.getName());
88
+ const result = {
89
+ columns,
90
+ rows: rows || [],
91
+ rowCount: rows?.length || 0,
92
+ executionTime,
93
+ query: sqlText
94
+ };
95
+ console.log(`Query executed successfully: ${sqlText.substring(0, 100)}${sqlText.length > 100 ? '...' : ''} (${executionTime}ms)`);
96
+ resolve(result);
97
+ }
98
+ },
99
+ });
77
100
  });
78
- });
101
+ }
102
+ catch (error) {
103
+ console.error('Connection Error:', error.message);
104
+ throw new Error(`Failed to execute query: ${error.message}`);
105
+ }
79
106
  }
80
107
  async listDatabases() {
81
108
  return this.executeQuery('SHOW DATABASES');
@@ -1 +1 @@
1
- {"version":3,"file":"snowflake.service.js","sourceRoot":"","sources":["../../src/services/snowflake.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snowflake.service.js","sourceRoot":"","sources":["../../src/services/snowflake.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,18 @@
1
1
  {
2
2
  "name": "@naganpm/snowflake-mcp-server",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "MCP server for Snowflake database integration",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
5
+ "main": "dist/mcp-server.js",
6
+ "types": "dist/mcp-server.d.ts",
7
7
  "bin": {
8
8
  "snowflake-mcp-server": "dist/mcp-server.js"
9
9
  },
10
10
  "scripts": {
11
11
  "build": "tsc",
12
- "dev": "ts-node src/index.ts",
13
- "start": "node dist/index.js",
12
+ "dev": "ts-node src/mcp-server.ts",
13
+ "dev:express": "ts-node src/index.ts",
14
+ "start": "node dist/mcp-server.js",
15
+ "start:express": "node dist/index.js",
14
16
  "watch": "tsc --watch",
15
17
  "clean": "rm -rf dist",
16
18
  "prepare": "npm run build"