Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CashChat MCP ServerShow me my spending summary for this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CashChat MCP Server
Connect your financial data to AI assistants like Claude
CashChat MCP Server exposes your CashChat financial data to AI assistants via the Model Context Protocol (MCP). It supports both local stdio connections and remote URL-based connections with OAuth 2.0 authentication.
Features
π OAuth 2.0 Authentication - Secure URL-based connections for Claude Desktop
π° Transaction Management - Query, add, update, and delete transactions
π Financial Analytics - Get spending summaries and category breakdowns
βοΈ Settings Control - Manage currency preferences and AI agent instructions
π Multiple Deployment Options - Run locally, Node.js server, or Cloudflare Workers
π MCP Standard Compliant - Works with any MCP-compatible AI assistant
Quick Start
For Claude Desktop Users (URL-based connection)
This is the recommended way to connect CashChat to Claude Desktop using a publicly accessible server.
1. Get Your CashChat API Key
Sign up at CashChat and get your API key from the settings page.
2. Connect to the Public Server
Add this configuration to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"cashchat": {
"url": "https://cashchat.supastellar.dev/sse",
"oauth": {
"authUrl": "https://cashchat.supastellar.dev/oauth/authorize",
"tokenUrl": "https://cashchat.supastellar.dev/oauth/token",
"clientId": "cashchat-mcp-server",
"scopes": ["read", "write"]
}
}
}
}3. Restart Claude Desktop
Restart Claude Desktop and you'll be prompted to authorize the connection. Click "Authorize" and you're ready to go!
4. Try It Out
In Claude Desktop, try asking:
"What did I spend on groceries this month?"
"Add a transaction: $50 for dinner at Joe's Restaurant"
"Show me my spending summary for this week"
Local Development & Self-Hosting
Prerequisites
Node.js 18 or higher
npm or yarn
CashChat API key
Installation
Clone the repository:
git clone https://github.com/supastellar/cashchat-mcp
cd cashchat-mcpInstall dependencies:
npm installConfigure environment variables:
cp .env.example .envEdit .env and add your CashChat API key:
CASHCHAT_API_KEY=your_api_key_here
PORT=3000
SERVER_URL=http://localhost:3000Build the project:
npm run buildStart the server:
npm run start:serverThe server will be running at http://localhost:3000.
Testing Locally
Connect Claude Desktop to your local server by updating the config:
{
"mcpServers": {
"cashchat": {
"url": "http://localhost:3000/sse",
"oauth": {
"authUrl": "http://localhost:3000/oauth/authorize",
"tokenUrl": "http://localhost:3000/oauth/token",
"clientId": "cashchat-mcp-server",
"scopes": ["read", "write"]
}
}
}
}Note: Claude Desktop may require HTTPS for OAuth. For local testing with HTTPS, use a tool like ngrok or localtunnel.
Legacy stdio Mode (for local-only setup)
If you prefer the classic stdio-based local connection without OAuth:
Claude Desktop Config (stdio mode)
{
"mcpServers": {
"cashchat": {
"command": "node",
"args": ["/absolute/path/to/cashchat-mcp/build/index.js"],
"env": {
"CASHCHAT_API_KEY": "your_api_key_here"
}
}
}
}This mode runs the server as a subprocess and communicates via stdin/stdout. No HTTP server or OAuth required.
Available Tools
The MCP server provides 8 tools for interacting with your financial data:
Transaction Tools
get_transactions
Retrieve transactions with optional filters.
Parameters:
startDate(optional): Start date (YYYY-MM-DD)endDate(optional): End date (YYYY-MM-DD)category(optional): Filter by categorylimit(optional): Max results (default: 50)offset(optional): Pagination offset
Example:
Get my transactions from January 2024add_transaction
Add a new transaction.
Parameters:
amount(required): Transaction amountcategory(required): Category (e.g., Food, Transport)date(required): Date (YYYY-MM-DD)type(optional): 'expense' or 'income' (default: expense)note(optional): Descriptionname(optional): Merchant name
Example:
Add a transaction: $75 for groceries at Whole Foods on 2024-01-15update_transaction
Update an existing transaction.
Parameters:
id(required): Transaction IDamount(optional): New amountcategory(optional): New categorynote(optional): New notename(optional): New merchant name
delete_transaction
Delete a transaction.
Parameters:
id(required): Transaction ID to delete
Analytics Tools
get_summary
Get spending summary for a time period.
Parameters:
period(required): 'day', 'week', 'month', or 'year'date(optional): Reference date (defaults to today)
Example:
Show me my spending summary for this monthget_categories
List all available transaction categories.
Example:
What categories can I use?Settings Tools
get_settings
Get your CashChat settings.
update_settings
Update your CashChat settings.
Parameters:
preferredCurrency(optional): Currency code (USD, CAD, EUR, etc.)agentInstructions(optional): Custom instructions for AI assistant
Deployment
For production deployment instructions, see DEPLOYMENT.md.
Quick Deployment Options
Railway (Recommended)
Click the button above
Add your
CASHCHAT_API_KEYDeploy!
Cloudflare Workers
npm install -g wrangler
wrangler login
wrangler secret put CASHCHAT_API_KEY
wrangler deploySee DEPLOYMENT.md for detailed instructions.
Architecture
URL-Based Mode (HTTP + SSE + OAuth)
βββββββββββββββββββ ββββββββββββββββββββ
β Claude Desktop β β CashChat MCP β
β β β Server (HTTP) β
βββββββββββββββββββ€ ββββββββββββββββββββ€
β β β β
β 1. OAuth Flow β βββββββββΊβ /oauth/* β
β β β β
β 2. SSE Connect β βββββββββΊβ /sse β
β β β β
β 3. MCP Tools β βββββββββΊβ MCP Server β
β β β β
βββββββββββββββββββ ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β CashChat API β
β (Backend) β
ββββββββββββββββββββLegacy stdio Mode
βββββββββββββββββββ ββββββββββββββββββββ
β Claude Desktop β β CashChat MCP β
β β β Server (stdio) β
βββββββββββββββββββ€ ββββββββββββββββββββ€
β β β β
β stdio pipe β βββββββββΊβ MCP Server β
β β β β
βββββββββββββββββββ ββββββββββ¬ββββββββββ
β
βΌ
ββββββββββββββββββββ
β CashChat API β
β (Backend) β
ββββββββββββββββββββSecurity
OAuth 2.0 with PKCE support for secure authorization
Bearer token authentication for API requests
HTTPS required in production
Token expiration (30 days default)
Scope-based permissions (read/write)
Production Security Recommendations
Use HTTPS only (no HTTP in production)
Set
OAUTH_CLIENT_SECRETfor additional securityImplement rate limiting
Use a proper database for token storage (not in-memory)
Rotate API keys regularly
Monitor access logs
Troubleshooting
"Connection refused" error
Check if the server is running
Verify the URL in your Claude Desktop config
Ensure firewall allows the port
OAuth authorization fails
Confirm
SERVER_URLis publicly accessibleCheck that URLs in Claude config match your server
Verify HTTPS is enabled (required by Claude Desktop)
"Invalid API key" error
Check your
CASHCHAT_API_KEYis correctVerify the API key is active in your CashChat account
Tools not showing up in Claude
Restart Claude Desktop after config changes
Check server logs for errors
Verify OAuth flow completed successfully
For more help, see DEPLOYMENT.md or open an issue.
Development
Project Structure
cashchat-mcp/
βββ src/
β βββ index.ts # Legacy stdio server
β βββ server.ts # HTTP/SSE server with OAuth
β βββ worker.ts # Cloudflare Workers version
β βββ types.ts # TypeScript types
β βββ api/
β β βββ client.ts # CashChat API client
β βββ auth/
β β βββ tokenStore.ts # OAuth token storage
β β βββ middleware.ts # Auth middleware
β β βββ oauthRoutes.ts # OAuth endpoints
β βββ tools/
β βββ transactions.ts # Transaction tools
β βββ summary.ts # Analytics tools
βββ build/ # Compiled JavaScript
βββ package.json
βββ tsconfig.json
βββ wrangler.toml # Cloudflare Workers config
βββ README.mdScripts
npm run build- Compile TypeScriptnpm run dev- Watch mode for developmentnpm start- Run stdio server (legacy)npm run start:server- Run HTTP/SSE servernpm run dev:server- Development mode with auto-reload
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
MIT License - see LICENSE for details.
Links
CashChat: https://cashchat.supastellar.dev
MCP Documentation: https://modelcontextprotocol.io
Claude Desktop: https://claude.ai/download
GitHub: https://github.com/supastellar/cashchat-mcp
Issues: https://github.com/supastellar/cashchat-mcp/issues
Support
Need help?
π Check the DEPLOYMENT.md guide
π Report bugs on GitHub Issues
π¬ Questions? Open a Discussion
Built with β€οΈ by