🐍 ☁️ - Snowflake access that works behind a corporate proxy, with read and optional write operations
Simple Snowflake MCP server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**Enhanced Snowflake MCP Server with comprehensive configuration system and full MCP protocol compliance.**
A production-ready MCP server that provides seamless Snowflake integration with advanced features including configurable logging, resource subscriptions, and comprehensive error handling. Designed to work seamlessly behind corporate proxies.
For release details, see CHANGELOG.md.
Tools
The server exposes the following MCP tools to interact with Snowflake:
**Database Operations:**
- **execute-snowflake-sql**: Executes a SQL query on Snowflake and returns the result. Supports json (default), markdown, and csv output via the format argument.
- **execute-query**: Executes a SQL query with server-enforced read-only protection. In read-only mode (the default) only SELECT, SHOW, DESCRIBE, EXPLAIN, and WITH statements (without DML) are allowed. Read-only mode is governed **solely by server configuration** and cannot be relaxed by the caller. Supports a limit, an offset for paging, and markdown (default)/json/csv output via format. When a result is truncated the response includes the offset for the next page.
**Discovery and Metadata:**
- **get-connection-info**: Returns current Snowflake connection information and server status.
- **list-snowflake-warehouses**: Lists available Data Warehouses (DWH) on Snowflake. Pass include_details: false for names only.
- **list-databases**: Lists all accessible Snowflake databases. Supports a pattern filter (wildcards) and include_details.
- **list-schemas**: Lists schemas in a database. Supports a pattern filter (wildcards) and include_details.
- **list-tables**: Lists tables in a database/schema. Supports a pattern filter (wildcards) and include_details.
- **list-views**: Lists views in a database/schema. Supports a pattern filter (wildcards) and include_details.
- **describe-table**: Returns the columns and types of a database/schema/table (works for views too). Supports json (default)/markdown/csv via format.
- **query-view**: Reads rows from a database/schema/view (or table) by name, with the same server-enforced read-only protection and row limiting as execute-query. Supports a limit, an offset for paging, and markdown (default)/json/csv via format.
- **export-schema**: Exports hierarchical schema metadata (databases → schemas → tables/views → columns). Supports json (default), yaml, and sql via format, an optional database filter, and opt-in include_data_samples (table rows only, max 3 rows per table).
**Notes (in-memory session state):**
- **add-note**: Adds or updates a note (name, content) kept in server memory for the session.
- **delete-note**: Deletes an existing note by name.
- **list-notes**: Lists current note names in sorted order.
- **get-note**: Returns the note payload (name, content) for a given note name.
Prompts
The server also exposes MCP prompts that bundle server context into ready-to-use
messages:
- **summarize-notes**: Summarizes the stored notes. Arguments: style (brief/detailed/executive), format (text/markdown/json).
- **analyze-snowflake-schema**: Produces a schema-analysis prompt. Arguments: database (optional focus), focus (tables/views/functions/all).
- **generate-sql-query**: Helps draft a SQL query from a natural-language goal. Arguments: intent (required), complexity (simple/intermediate/advanced).
- **troubleshoot-connection**: Builds a connection-troubleshooting prompt. Arguments: error_message (optional).
🔒 Security Model
This server executes client-supplied SQL against Snowflake using a single set of
credentials. Treat the MCP client as untrusted (an LLM can be prompt-injected) and
deploy accordingly.
> **The real security boundary is a least-privilege Snowflake role, not the
> server's keyword filter.** The built-in read-only check is *defense-in-depth
> only*. Always connect with a role scoped to exactly what you need.
**Required deployment posture:**
1. **Use a least-privilege, read-only Snowflake role.** For read-only deployments,