@naganpm/snowflake-mcp-server
v1.0.8
Published
MCP server for Snowflake database integration
Maintainers
Readme
Snowflake MCP Server
A Model Context Protocol (MCP) server for Snowflake database integration built with Express.js and TypeScript.
Features
- ✅ Execute custom SQL queries
- ✅ List databases, schemas, and tables
- ✅ Describe table structures
- ✅ List warehouses
- ✅ Get current session information
- ✅ Connection status monitoring
- ✅ TypeScript support
- ✅ RESTful API
- ✅ Error handling
Installation
npm installConfiguration
Approach1
Note: If you are trying to configure MCP using continue.dev
mcpServers:
- name: snowflake MCP
command: npx
args:
- -y
- "@naganpm/snowflake-mcp-server@latest"
env:
SNOWFLAKE_ACCOUNT: <account-id>.us-east-2.aws
SNOWFLAKE_USERNAME: <your-username>
SNOWFLAKE_PASSWORD: <your-password>
SNOWFLAKE_WAREHOUSE: <warehouse-name>
SNOWFLAKE_DATABASE: <database-name>
SNOWFLAKE_SCHEMA: <schema-name>Approach2
- Copy
.env.exampleto.env:
cp .env.example .env- Update
.envwith your Snowflake credentials:
SNOWFLAKE_ACCOUNT=your-account.region.cloud
SNOWFLAKE_USERNAME=your-username
SNOWFLAKE_PASSWORD=your-password
SNOWFLAKE_WAREHOUSE=YOUR_WAREHOUSE
SNOWFLAKE_DATABASE=YOUR_DATABASE
SNOWFLAKE_SCHEMA=YOUR_SCHEMA
PORT=3000Usage
Development Mode
npm run devBuild
npm run buildProduction
npm startAPI Endpoints
Health Check
GET /healthExecute Query
POST /api/snowflake/query
Content-Type: application/json
{
"query": "SELECT * FROM table_name LIMIT 10",
"binds": []
}List Databases
GET /api/snowflake/databasesList Schemas
GET /api/snowflake/schemas?database=YOUR_DATABASEList Tables
GET /api/snowflake/tables?database=YOUR_DATABASE&schema=YOUR_SCHEMADescribe Table
GET /api/snowflake/tables/:tableName/describeList Warehouses
GET /api/snowflake/warehousesGet Current Session
GET /api/snowflake/sessionConnection Status
GET /api/snowflake/statusExample Requests
Using cURL
# Health check
curl http://localhost:3000/health
# Execute query
curl -X POST http://localhost:3000/api/snowflake/query \
-H "Content-Type: application/json" \
-d '{"query": "SELECT CURRENT_DATE()"}'
# List databases
curl http://localhost:3000/api/snowflake/databases
# List tables
curl "http://localhost:3000/api/snowflake/tables?database=MYDB&schema=PUBLIC"Using JavaScript/TypeScript
// Execute query
const response = await fetch('http://localhost:3000/api/snowflake/query', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
query: 'SELECT * FROM my_table LIMIT 10',
}),
});
const result = await response.json();
console.log(result.data);Response Format
All successful responses follow this format:
{
"success": true,
"data": {
"columns": ["col1", "col2"],
"rows": [
{ "col1": "value1", "col2": "value2" }
],
"rowCount": 1,
"executionTime": 123
}
}Error responses:
{
"success": false,
"error": {
"message": "Error message",
"code": "ERROR_CODE"
}
}Development
Project Structure
.
├── src/
│ ├── index.ts # Main entry point
│ ├── services/
│ │ └── snowflake.service.ts # Snowflake service
│ ├── routes/
│ │ └── snowflake.routes.ts # API routes
│ └── middleware/
│ └── error.middleware.ts # Error handling
├── package.json
├── tsconfig.json
└── .envScripts
npm run build- Build TypeScript to JavaScriptnpm run dev- Run in development mode with ts-nodenpm start- Run production buildnpm run watch- Watch mode for developmentnpm run clean- Clean dist folder
License
MIT
