Cashew Expense Tracker MCP Server
Description
# Cashew Expense Tracker MCP Server An MCP (Model Context Protocol) server that provides access to your Cashew expense tracker SQLite database. This server exposes table schemas as resources, provides tools for running read-only SQL queries, and includes prompts for common data…
About
# Cashew Expense Tracker MCP Server An MCP (Model Context Protocol) server that provides access to your Cashew expense tracker SQLite database. This server exposes table schemas as resources, provides tools for running read-only SQL queries, and includes prompts for common data analysis tasks. ## Features - **Database…
Details
- Author
- yashhere
- Downloads
- 276
- Categories
- Other
Jump to
- Database schema resources: access complete table schemas.
- Read-only SQL query tools: safe SELECT queries.
- Data analysis prompts: common expense analysis tasks.
- Multiple database support: test and production databases.
- Safety: only read-only operations allowed.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Cashew Expense Tracker MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install dependencies with uv sync, then run the server with uv run python cashew_mcp_server.py. Use --use-main-db to access the main Cashew database or --db-path to specify a custom database path. Integrate with MCP clients like Claude Desktop or VSCode by adding the server configuration to their MCP settings files.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"cashew expense tracker mcp server": {
"cashew-mcp-server": {
"command": "uv",
"args": [
"sync"
]
}
}
}
}
McpServers
{
"cashew-mcp-server": {
"command": "uv",
"args": [
"sync"
]
}
}
Cashew Expense Tracker MCP Server
An MCP (Model Context Protocol) server that provides access to your Cashew expense tracker SQLite database. This server exposes table schemas as resources, provides tools for running read-only SQL queries, and includes prompts for common data analysis tasks.
Features
- Database Schema Resources: Access complete table schemas and structure information
- Read-only SQL Query Tools: Execute safe SELECT queries against your expense data
- Data Analysis Prompts: Pre-built prompts for common expense analysis tasks
- Multiple Database Support: Switch between test and production databases
- Safety First: Only read-only operations are allowed to protect your data
Installation
The project uses uv for dependency management. Make sure you have uv installed, then run:
uv sync
Usage
Running the Server
Start the MCP server with the test database:
uv run python cashew_mcp_server.py
Use your main Cashew database:
uv run python cashew_mcp_server.py --use-main-db
Use a custom database path:
uv run python cashew_mcp_server.py --db-path /path/to/your/database.sqlite
MCP Client Integration
Claude Desktop
Add the server configuration to your Claude Desktop MCP settings file:
{
"mcpServers": {
"cashew-expense-tracker": {
"command": "uv",
"args": [
"run",
"python",
"cashew_mcp_server.py"
],
"cwd": "/Users/yash/Developer/cashew-mcp",
"env": {}
}
}
}
VSCode
Add the server configuration to your Vscode workspace's MCP settings file:
{
"servers": {
"cashew-mcp-server": {
"type": "stdio",
"command": "/Users/yash/Developer/cashew-mcp/.venv/bin/python",
"args": [
"/Users/yash/Developer/cashew-mcp/cashew_mcp_server.py",
"--db-path",
"/Users/yash/Developer/cashew-mcp/db.sqlite"
]
}
}
}
MCP Inspector (Development)
Test the server with the MCP Inspector:
uv run mcp dev cashew_mcp_server.py
Available Resources
The server exposes the following resources:
Database Schema Resources
- cashew://schema - Complete database schema for all tables
- cashew://schema/{table_name} - Detailed schema for a specific table
Example tables in your Cashew database:
- wallets - Wallet/account information
- categories - Expense and income categories
- transactions - All financial transactions
- budgets - Budget definitions and limits
- objectives - Financial goals and objectives
- category_budget_limits - Category-specific budget limits
Available Tools
SQL Query Tools
1. execute_sql_query(query: str)
- Execute read-only SELECT queries
- Returns results with columns, rows, and execution metadata
- Safety checks prevent dangerous operations
2. get_table_sample(table_name: str, limit: int = 10)
- Get sample rows from any table
- Useful for exploring data structure
- Limit max 100 rows
3. get_table_count(table_name: str)
- Get total row count for any table
- Quick overview of data volume
Available Prompts
Data Analysis Prompts
1. analyze_spending_patterns
- Comprehensive spending pattern analysis
- Category breakdowns and trends
- Temporal spending patterns
- Budget performance analysis
2. budget_analysis
- Budget performance evaluation
- Budget vs actual spending
- Recommendations for budget adjustments
- Future projections
3. income_vs_expenses
- Income and expense comparison
- Cash flow analysis
- Financial health indicators
- Trend analysis and projections
4. expense_anomaly_detection
- Detect unusual spending patterns
- Identify potential duplicate transactions
- Find spending anomalies and outliers
- Budget violation detection
Example Queries
Here are some example SQL queries you can run using the execute_sql_query tool:
Basic Data Exploration
-- Get recent transactions
SELECT name, amount, date_created, income
FROM transactions
ORDER BY date_created DESC
LIMIT 10;
-- Top spending categories
SELECT c.name, SUM(t.amount) as total_spent, COUNT() as transaction_count
FROM transactions t
JOIN categories c ON t.category_fk = c.category_pk
WHERE t.income = 0
GROUP BY c.name
ORDER BY total_spent DESC
LIMIT 10;
-- Monthly spending summary
SELECT
strftime('%Y-%m', date_created, 'unixepoch') as month,
SUM(CASE WHEN income = 0 THEN amount ELSE 0 END) as expenses,
SUM(CASE WHEN income = 1 THEN amount ELSE 0 END) as income,
COUNT() as transactions
FROM transactions
GROUP BY strftime('%Y-%m', date_created, 'unixepoch')
ORDER BY month DESC;
Budget Analysis
-- Current budget status
SELECT
b.name as budget_name,
b.amount as budget_amount,
SUM(t.amount) as spent,
(b.amount - SUM(t.amount)) as remaining,
ROUND((SUM(t.amount) / b.amount) 100, 2) as percent_used
FROM budgets b
LEFT JOIN transactions t ON t.date_created BETWEEN b.start_date AND b.end_date
AND t.income = 0
WHERE b.archived = 0
GROUP BY b.budget_pk, b.name, b.amount;
Category Analysis
-- Average transaction amount by category
SELECT
c.name as category,
ROUND(AVG(t.amount), 2) as avg_amount,
MIN(t.amount) as min_amount,
MAX(t.amount) as max_amount,
COUNT() as transaction_count
FROM transactions t
JOIN categories c ON t.category_fk = c.category_pk
WHERE t.income = 0
GROUP BY c.name
HAVING COUNT(*) >= 5
ORDER BY avg_amount DESC;
Database Schema
Your Cashew database contains the following main tables:
- wallets: Different accounts/wallets for organizing finances
- categories: Income and expense categories with hierarchical structure
- transactions: All financial transactions with amounts, dates, and categorization
- budgets: Budget definitions with time periods and amounts
- objectives: Financial goals and targets
- category_budget_limits: Category-specific budget constraints
Each table includes audit fields like date_created and date_time_modified for tracking changes.
Safety Features
- Read-only Access: Only SELECT queries are allowed
- Query Validation: Dangerous SQL keywords are blocked
- Input Sanitization: All inputs are validated before execution
- Error Handling: Graceful error handling with informative messages
Development
To contribute or modify the server:
1. Install dependencies: uv sync
2. Run tests: uv run python -m pytest (when tests are added)
3. Format code: uv run black .
4. Check types: uv run mypy . (when type hints are added)
Troubleshooting
Common Issues
1. Import errors: Make sure to use uv run to properly activate the virtual environment
2. Database not found: Check the database path and ensure the file exists
3. Permission errors: Ensure the SQLite database file is readable
Debug Mode
Run the server with debug output:
uv run python cashew_mcp_server.py --db-path test.sqlite
The server will output:
- Database path being used
- Available tables found
- Connection status
License
This project is licensed under the MIT License.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



