Connect Claude to my Snowflake database and Slack for daily reports
“I need to connect Claude to my Snowflake database and Slack for daily reports”
$ npx mcpflix install ui0S9UvCWrites claude_desktop_config.json, prompts for any required API keys, and drops skills into ~/.claude/skills/. Backed up automatically.
What this stack is
What you're building
- Entities: Snowflake database (1 instance), Slack workspace (daily report channel), Claude Code agent (orchestrator), Daily report generation workflow
- Constraints: Daily scheduling requirement, Human-in-the-loop for report approval before Slack post
- Out of scope: Custom Snowflake connector (no official MCP exists), Advanced Slack formatting (threads, blocks beyond text), Report caching or versioning, Multi-workspace Slack support
Why this stack fits ask-slack-mcp-server enables human-in-the-loop report approval via Slack messages before posting. loop skill automates daily scheduling. You'll need a custom Snowflake integration since no catalog MCP covers Snowflake; we'll use Python + snowflake-connector-python in a local script that Claude orchestrates.
Architecture
MCP Servers
Slack MCP (ask-slack)
ask-slack-mcp-serverEnables Claude to send report drafts to Slack and wait for human approval before posting final reports — critical for daily report workflows.
Install everything in one go
Copy a single setup guide that includes the MCP config and the skills installer script — paste into a doc to keep, or follow it section by section.
Implementation Plan
- Install Slack MCP and loop skill ⏱ 15m
Run the MCPFlix CLI to install ask-slack-mcp-server and enable the loop skill. This writes the MCP config to your Claude Code settings and activates daily scheduling. The CLI will prompt for your Slack bot token and workspace ID.
Done when:
- Running
npx mcpflix install ask-slack-mcp-servercompletes without errors -
claude_desktop_config.jsoncontainsmcpServers.ask_slackentry with bot token - loop skill is enabled in Claude Code settings
Files: ~/.claude/claude_desktop_config.json
Accounts: Slack workspace admin access
Env vars: SLACK_BOT_TOKEN
Verify:
Loading code…
- Create Slack bot and grant permissions ⏱ 10m
Go to api.slack.com, create a new app in your workspace, and add the chat:write and channels:read scopes. Generate a bot token and save it as SLACK_BOT_TOKEN in your environment. Invite the bot to the channel where daily reports will be posted.
Done when:
- Slack bot token is generated and stored in environment
- Bot has chat:write and channels:read OAuth scopes
- Bot is invited to the target report channel
Accounts: Slack workspace (admin role)
- Set up Snowflake Python connector locally ⏱ 30m · • medium-risk
Install snowflake-connector-python via pip: pip install snowflake-connector-python. Create a Python script in your Claude Code project that connects to Snowflake using your account credentials (username, password, account URL). Store credentials as environment variables (SNOWFLAKE_USER, SNOWFLAKE_PASSWORD, SNOWFLAKE_ACCOUNT). The script should accept a SQL query as input and return results as JSON.
Done when:
-
snowflake_query.pyaccepts a SQL query string and returns JSON results - Script reads SNOWFLAKE_USER, SNOWFLAKE_PASSWORD, SNOWFLAKE_ACCOUNT from environment
- Running
python scripts/snowflake_query.py 'SELECT COUNT(*) FROM table'returns valid JSON
Files: scripts/snowflake_query.py
Env vars: SNOWFLAKE_USER, SNOWFLAKE_PASSWORD, SNOWFLAKE_ACCOUNT
Services: Python 3.8+, pip
Verify:
Loading code…
- Create daily report generation prompt ⏱ 30m
Write a Claude Code prompt that (1) calls your Python script to fetch data from Snowflake, (2) formats the results into a readable report, (3) sends the draft to Slack via ask-slack-mcp-server, and (4) waits for user approval. Use the /loop skill to schedule this prompt to run daily at your preferred time (e.g., 9 AM).
Done when:
- Prompt calls
python scripts/snowflake_query.pywith a meaningful business query - Prompt formats results into a readable Markdown report
- Prompt sends draft to Slack and waits for approval emoji reaction
- /loop command schedules the prompt to run daily
Files: prompts/daily_report.md
- Test end-to-end workflow ⏱ 15m
Manually trigger the daily report prompt in Claude Code to verify the full flow: Snowflake query → report generation → Slack draft → approval. React to the Slack message with an emoji (e.g., ✅) to trigger the final post. Confirm the report appears in the target channel.
Done when:
- Snowflake query executes and returns data without errors
- Report draft appears in Slack within 30 seconds
- Reacting with ✅ emoji triggers the final post to the channel
- Final report is formatted and readable in Slack
Verify:
Loading code…
- Schedule daily report with /loop ⏱ 5m
Once testing passes, run /loop /daily_report 09:00 America/New_York (or your preferred time zone) in Claude Code. This activates the recurring daily schedule. The loop skill will invoke the prompt at the specified time each day.
Done when:
- /loop command executes without errors
- Claude Code shows the scheduled task in the task list
- First scheduled run occurs at the specified time
Build your own — or save this one
Describe your project and our AI will design a complete stack — architecture diagram, MCP servers, skills, and step-by-step setup. Sign up free to save and share your own.