Fresha
Access the Fresha Data Connector through Snowflake.
mcp-fresha
MCP (Model Context Protocol) server for accessing Fresha Data Connector via Snowflake. Query your Fresha business data directly through AI assistants like Claude.
Author: Boris Djordjevic
Quick Start
npm install -g mcp-fresha
Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"fresha": {
"command": "mcp-fresha",
"env": {
"SNOWFLAKE_ACCOUNT": "your-account.snowflakecomputing.com",
"SNOWFLAKE_USER": "FRESHA_DATA_XXX_XXX",
"SNOWFLAKE_PASSWORD": "your-password",
"SNOWFLAKE_DATABASE": "FRESHA_DATA_CONNECTOR",
"SNOWFLAKE_SCHEMA": "FRESHA_DATA_XXX",
"SNOWFLAKE_WAREHOUSE": "FRESHA_DATA_XXX"
}
}
}
}
Important: If your password contains #, wrap it in quotes: "password#123"
Get these credentials from your Fresha Data Connector settings.
Features
- Real-time Data Access: Direct connection to your Fresha business data through Snowflake
- Flexible Querying: Support for date ranges, custom filters, sorting, and pagination
- Smart Date Parsing: Natural language date inputs like "yesterday", "last week", "this month"
- Comprehensive Schema Discovery: Automatic discovery of all available tables and their structures
- Type-safe Operations: Built with TypeScript for reliability and maintainability
- Mock Mode: Development mode with sample data when Snowflake credentials are not available
- Structured Logging: Detailed logging with Pino for debugging and monitoring
Available Tools
list_fresha_reports
Lists all available tables and views in your Fresha database.
Example: "Show me all tables"
get_fresha_report
Get data from any Fresha report/table with flexible filtering options.
Parameters:
report_name(required) - Name of the table (e.g., CASH_FLOW, SALES, BOOKINGS)start_date(optional) - Start date filter (YYYY-MM-DD)end_date(optional) - End date filter (YYYY-MM-DD)limit(optional) - Max records to return (default: 1000)order_by(optional) - Column to sort by (e.g., "SALE_DATE DESC")filters(optional) - Additional filters as key-value pairs
Examples:
- "Get yesterday's cash flow"
- "Show me top 10 clients by appointment count"
- "Get all bookings for this week"
- "Show sales from location 123"
Available Tables
Your Fresha database includes:
CASH_FLOW- Transaction-level cash flow dataBOOKINGS- Service bookings and appointmentsCLIENTS- Client information and historyPAYMENTS- Payment transactionsSALES- Sales recordsLOCATIONS- Business locationsTEAM_MEMBERS- Staff information- And more...
Troubleshooting
Authentication Failed
- Ensure credentials match exactly from Fresha Data Connector
- Check for special characters in password (especially
#) - Remove
https://from account URL if present
No Data Returned
- Verify you have the correct database and schema names
- Check Fresha Data Connector is active (8-hour daily limit)
Security
Best Practices
- Environment Variables: All sensitive credentials are stored as environment variables, never in code
- No Credential Logging: The server automatically masks Snowflake credentials in logs
- Read-Only Access: Designed for read-only operations to prevent accidental data modifications
- Input Validation: All tool inputs are validated using Zod schemas to prevent injection attacks
- Parameterized Queries: All database queries use parameterized statements to prevent SQL injection
- Session Management: Each connection is properly managed with automatic cleanup
Data Protection
- Credentials are never exposed in error messages or logs
- Mock mode prevents accidental production data access during development
- All database connections are encrypted using Snowflake's secure protocols
Development
# Clone and install
git clone https://github.com/199-biotechnologies/mcp-fresha.git
cd mcp-fresha/fresha-mcp-server
npm install
# Configure environment
cp .env.example .env
# Edit .env with your credentials
# Build and test
npm run build
npm test
# Development mode with mock data
npm run dev
# Watch mode for development
npm run watch
# Lint and type check
npm run lint
npm run typecheck
Architecture
The project follows a clean architecture pattern:
- Controllers: Business logic for handling data queries and transformations
- Services: Data access layer with Snowflake connection management
- Tools: MCP tool definitions that expose functionality to AI assistants
- Utils: Shared utilities for logging, date parsing, and error handling
Contributing
Contributions are welcome! Please ensure:
- All code passes linting (
npm run lint) - TypeScript types are properly defined
- New features include appropriate error handling
- Security best practices are followed
License
MIT
Verwandte Server
Secret Network
Provides secure access to Secret Network blockchain functionality, designed for deployment in Trusted Execution Environments (TEEs).
CData SAP ByDesign
A read-only MCP server for querying live SAP ByDesign data. Requires a separate CData JDBC Driver for SAP ByDesign.
Power BI MCP Servers
Integrate with Power BI using a local server for offline .pbix file analysis and an Azure server for querying live datasets.
BigQuery
Access and cache Google Cloud BigQuery metadata.
kintone Sample MCP Server
Integrate with kintone data and applications using the Model Context Protocol.
Unofficial ChEMBL MCP Server
Access the ChEMBL chemical database for drug discovery, chemical informatics, and bioactivity research using specialized tools via its REST API.
MCP Registry - Lyra
Lyra Registry is a standalone API service that catalogs, scores, and serves metadata for all tools in the Lyra ecosystem. It enables discovery, evaluation, and integration of 800+ crypto, blockchain, DeFi, memecoin, NFT, metaverse, trading tools, MCP tools.
Movies MCP Server
A comprehensive movie database server supporting advanced search, CRUD operations, and image management via a PostgreSQL database.
Zurich Open Data MCP Server
Enables Claude, ChatGPT, and other MCP-compatible AI assistants to directly query 900+ datasets, geodata, parliamentary proceedings, tourism data, linked data, and real-time environmental and mobility information from the City of Zurich. 20 Tools, 6 Resources, 6 APIs.
YugabyteDB MCP Server
Allows LLMs to directly interact with a YugabyteDB database.