{"_id":"@bossforce.ai/mcp-snowflake","name":"@bossforce.ai/mcp-snowflake","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@bossforce.ai/mcp-snowflake","version":"0.1.0","type":"module","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/databases-data/snowflake"},"publishConfig":{"access":"public"},"bin":{"bossforce-mcp-snowflake":"dist/bin.js"},"dependencies":{"zod":"^4.4.3","@bossforce.ai/mcp-core":"0.3.0"},"devDependencies":{"@bossforce.ai/mcp-testkit":"0.0.0"},"scripts":{"build":"tsc -p tsconfig.json","test":"node --test \"dist/*.test.js\""},"_id":"@bossforce.ai/mcp-snowflake@0.1.0","description":"MCP server for **Snowflake**, built on the [SQL REST API v2](https://docs.snowflake.com/en/developer-guide/sql-api/index). Fetch-based — no native driver. A good fit for analytics, reporting and data lookups.","bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","_integrity":"sha512-M2i/vt6fWR5fiuJo7Th5IgQpQiVZoAmEC3wNCALmna/QBTYhSGlwdnGwB8zI7R6Px7+C3ssnMeFfCSGnZEKd+Q==","_resolved":"C:\\Users\\user\\AppData\\Local\\Temp\\f947ccd7930c68afb66ac55c4a3480c7\\bossforce.ai-mcp-snowflake-0.1.0.tgz","_from":"file:bossforce.ai-mcp-snowflake-0.1.0.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-M2i/vt6fWR5fiuJo7Th5IgQpQiVZoAmEC3wNCALmna/QBTYhSGlwdnGwB8zI7R6Px7+C3ssnMeFfCSGnZEKd+Q==","shasum":"75376253e492131192104a92ededb66036bf8c29","tarball":"https://registry.npmjs.org/@bossforce.ai/mcp-snowflake/-/mcp-snowflake-0.1.0.tgz","fileCount":26,"unpackedSize":26158,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDtn/WQddz0D8O8kNzcBrdAPNnN97auT3caA4gXtNcxkgIgdaJeDJjRFHODse+qKxHwGGW8zGbWs8EcHjrDPRat5/s="}]},"_npmUser":{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"},"directories":{},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-snowflake_0.1.0_1781237943518_0.8971215868611853"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-12T04:19:03.407Z","0.1.0":"2026-06-12T04:19:03.742Z","modified":"2026-06-12T04:19:03.907Z"},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"description":"MCP server for **Snowflake**, built on the [SQL REST API v2](https://docs.snowflake.com/en/developer-guide/sql-api/index). Fetch-based — no native driver. A good fit for analytics, reporting and data lookups.","homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/databases-data/snowflake"},"bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"readme":"# @bossforce.ai/mcp-snowflake\n\nMCP server for **Snowflake**, built on the\n[SQL REST API v2](https://docs.snowflake.com/en/developer-guide/sql-api/index).\nFetch-based — no native driver. A good fit for analytics, reporting and data\nlookups.\n\n## Credentials\n\n| Env                 | How to obtain                                                                                                                                    |\n| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `SNOWFLAKE_ACCOUNT` | Your account identifier (e.g. `orgname-account_name`). Forms the host `https://{account}.snowflakecomputing.com`.                                |\n| `SNOWFLAKE_TOKEN`   | A [programmatic access token (PAT)](https://docs.snowflake.com/en/user-guide/programmatic-access-tokens) or OAuth token, sent as a Bearer token. |\n\nBoth are read lazily, so the server boots and answers `tools/list` without\nthem; calls fail with an `auth` error until they are set.\n\n## Tools\n\n| Tool                   | Arguments                                                                           | Returns                                                      |\n| ---------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------ |\n| `run_query`            | `statement`, `bindings?`, `database?`, `schema?`, `warehouse?`, `role?`, `timeout?` | `{ statement_handle, running, columns, column_types, data }` |\n| `get_statement_status` | `statement_handle`                                                                  | `{ statement_handle, running, columns, column_types, data }` |\n\nA long-running query returns HTTP `202` with `running: true` and a\n`statement_handle`. Poll `get_statement_status` with that handle until\n`running` is `false`.\n\n### Safety — read-only\n\nThe Snowflake SQL REST API has **no per-statement read-only toggle**, so this\nserver **cannot** enforce read-only. Achieve read-only at the database instead:\n\n- Create the programmatic access token for a user bound to a **read-only role**\n  (a role granted only `SELECT` on the relevant objects), and/or\n- Pass a read-only `role`/`warehouse` per query.\n\nBind user-supplied values through `bindings` (`?` placeholders) rather than\nconcatenating them into the SQL.\n\nThe API is authenticated with `Authorization: Bearer {SNOWFLAKE_TOKEN}` and\n`X-Snowflake-Authorization-Token-Type: PROGRAMMATIC_ACCESS_TOKEN`. If you supply\nan OAuth token instead, it is still sent as a Bearer token (Snowflake detects\nthe type from the token).\n\n## Develop\n\n```bash\npnpm --filter @bossforce.ai/mcp-snowflake build\npnpm --filter @bossforce.ai/mcp-snowflake test\n```\n\nTests inject a fake `fetch` implementation, so they run without a live\nwarehouse. Regenerate the tools/list snapshot after an intentional signature\nchange:\n\n```bash\nUPDATE_SNAPSHOTS=1 pnpm --filter @bossforce.ai/mcp-snowflake test\n```\n","readmeFilename":"README.md","_rev":"1-39d6e6ebaeb2870b83fc346d8773bb0a"}