expense-tracker
Enables tracking business trip expenses and calculating settlements using Google Sheets, with natural language parsing of expenses.
README
Expense Tracker MCP Server
A Model Context Protocol (MCP) server for tracking business trip expenses and calculating settlement amounts using Google Sheets.
Overview
This server provides tools to:
- Create Google Sheets for expense tracking
- Parse expenses from natural language input
- Track who paid what and calculate who owes whom
- Support multiple participants and settlement calculations
Prerequisites
- Node.js 18+
- Google Cloud project with Sheets API enabled
- Google OAuth 2.0 credentials (or Service Account)
Installation
npm install
npm run build
npm test # Verify all 18 tests pass
Setup
Option 1: Google OAuth 2.0 (Recommended for Small Projects)
- Create a Google Cloud project and enable Sheets + Drive APIs
- Create OAuth 2.0 credentials (Desktop application)
- Copy
.env.exampleto.envand add your credentials:GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=your-client-secret GOOGLE_REDIRECT_URI=http://localhost:3000/oauth/callback DEFAULT_PARTICIPANTS=Mike,Chris DEFAULT_CURRENCY=MXN - Complete OAuth authorization to get refresh token:
npm run build node get-refresh-token.js - Copy the generated
GOOGLE_REFRESH_TOKENto your.env
Option 2: Service Account (Better for Production)
- Create a Service Account in Google Cloud Console
- Download the JSON key file
- Update configuration to use Service Account credentials
Configuration
Create a .env file from .env.example with:
- Google OAuth credentials
- Default participants list
- Preferred currency
Tools
- create-expense-sheet - Create a new expense tracking spreadsheet
- add-expense - Add a single expense entry
- add-expenses-bulk - Parse and add multiple expenses
- get-expenses - Query expenses with filters
- get-settlement-summary - Calculate final settlement
Using with Claude
Add to your Claude Desktop config (~/.config/Claude/claude_desktop_config.json):
{
"mcpServers": {
"expense-tracker": {
"command": "node",
"args": ["/path/to/expense-tracker-mcp/dist/index.js"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id",
"GOOGLE_CLIENT_SECRET": "your-secret",
"GOOGLE_REDIRECT_URI": "http://localhost:3000/oauth/callback",
"GOOGLE_REFRESH_TOKEN": "your-refresh-token",
"DEFAULT_PARTICIPANTS": "Mike,Chris",
"DEFAULT_CURRENCY": "MXN"
}
}
}
}
Development
npm run watch # Watch TypeScript compilation
npm run dev # Build and start server
npm test # Run all tests (18 tests)
npm start # Start the server
Architecture
src/index.ts- MCP server entry point and tool handlerssrc/config.ts- Environment configuration with Zod validationsrc/types.ts- TypeScript type definitionssrc/google/- Google Sheets API integrationauth.ts- OAuth 2.0 authenticationclient.ts- Sheets API clienttypes.ts- Google API types
src/utils/- Utility functionsparsers.ts- Natural language expense parsingsettlement.ts- Settlement calculation logicformatters.ts- Output formatting
Security Notes
- Never commit
.envfile - it contains credentials - Never expose refresh tokens in code or logs
- Use environment variables for all sensitive data
- Consider Service Account for production deployments
Testing
All functionality is tested with 18 comprehensive tests:
npm test
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.