Expense MCP
Enables searching and reading emails and creating draft messages through the Gmail API; sending is not supported.
Enables creating calendar events (optionally with Google Meet links), reading events, and checking free/busy availability via the Google Calendar API.
Provides a PostgreSQL-backed expense store for saving expense records and listing expenses within a date range.
Allows expense data to be stored in and queried from a Supabase Postgres database, supporting adding expenses and retrieving them by date range.
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., "@Expense MCPAdd $15 for lunch today"
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.
Expense MCP
Open-source expense tracker with two parts:
A FastMCP server that stores expenses in Postgres (Supabase).
An Expo Android app that acts as an MCP host. You can speak or type an expense; Claude calls the MCP tools for you.
Live MCP endpoint:
https://indirect-olive-catshark.fastmcp.app/mcpRepo: github.com/sahaniaditya/expense-mcp
Features
add_expense— save an amount, category, date, and optional descriptionget_expenses— list expenses in a date rangedata://categories— groceries, transport, education, entertainment, health, otherVoice input on Android (“I spent 250 on groceries”)
Horizon / FastMCP Cloud OAuth for the expense server
Optional Google Calendar and Gmail from the Android app (draft-only Gmail; Meet via Calendar)
GitHub Actions workflow that builds a standalone APK
Related MCP server: Expense Tracker MCP
Architecture
Android app (MCP host)
→ Claude (Anthropic API)
→ expense MCP (FastMCP Cloud / Horizon)
→ Supabase Postgres
→ Google Calendar API (on-device, after Google sign-in)
→ Gmail API (on-device, draft-only)The phone app does not talk to the database directly. Claude decides which tool to call; the app runs expense tools against FastMCP Cloud, and Calendar/Gmail tools against Google’s REST APIs on the phone.
MCP server
Requirements
Python 3.14+
A Postgres database (Supabase works)
Database
Create an expenses table:
create table if not exists expenses (
id uuid primary key,
price integer not null,
category text not null,
date timestamptz not null,
description text
);Environment
Copy .env.example to .env and set your connection string:
SUPABASE_URL=postgresql://postgres:YOUR_PASSWORD@db.YOUR_PROJECT.supabase.co:5432/postgresNever commit .env.
Run locally
uv sync
uv run python main.pyThe HTTP MCP endpoint is http://127.0.0.1:8000/mcp.
Inspector:
uv run fastmcp dev inspector main.pyDeploy
Push this repo to GitHub, then create a project on Prefect Horizon / FastMCP Cloud with entrypoint main.py:mcp. Add SUPABASE_URL as a secret in the deployment settings.
Clients connect to:
https://YOUR-PROJECT.fastmcp.app/mcpHorizon authentication is on by default. Use a Horizon API key (fmcp_...) or complete the OAuth sign-in from a client.
Android app
Source lives in mobile/.
Try with Expo Go (development)
Play Store Expo Go must match SDK 54.
cd mobile
npm install
npx expo startYou still need a computer running Metro. For a phone-only install, use the APK.
App setup
Open Connect.
Confirm the FastMCP Cloud URL (already prefilled for the hosted server).
Paste an Anthropic API key.
Tap Sign in and connect and finish Horizon login (or paste a
fmcp_API key).Optional: tap Sign in with Google for Calendar and Gmail tools.
Use Speak or Add.
The app stores the session and reconnects on the next launch.
Google Calendar and Gmail
Google’s official Calendar/Gmail MCP servers are a Workspace developer preview and often blocked for personal Gmail. The Android app instead calls the Calendar and Gmail REST APIs on the phone with the signed-in Google token. Expense tools stay on FastMCP Cloud. Calendar/Gmail tools appear after Google sign-in (prefixed calendar__ and gmail__).
Limits
Gmail can search, read, and create drafts only. It cannot send. After a draft is created, send it from Gmail.
There is no separate Meet API in the app. Ask to create an event with a Meet link (
calendar__create_eventwithwith_meet).
Google Cloud (one-time)
Create a GCP project (or reuse one).
Enable the product APIs:
gcloud services enable \
calendar-json.googleapis.com \
gmail.googleapis.com \
--project=YOUR_PROJECT_IDConfigure the OAuth consent screen (External is fine for a personal app). Add yourself as a test user.
Add scopes:
https://www.googleapis.com/auth/calendar.calendarlist.readonlyhttps://www.googleapis.com/auth/calendar.events.freebusyhttps://www.googleapis.com/auth/calendar.events.readonlyhttps://www.googleapis.com/auth/calendar.eventshttps://www.googleapis.com/auth/gmail.readonlyhttps://www.googleapis.com/auth/gmail.compose
Create an OAuth client of type Web application.
Do not use
auth.expo.ioorexpensemcp://google. Gmail and Calendar are sensitive scopes, so Google blocks Expo’s proxy (expo.io has not completed the Google verification process).Authorized JavaScript origins:
https://sahaniaditya.github.ioAuthorized redirect URIs:
https://sahaniaditya.github.io/expense-mcp/oauth-callback.html
On the OAuth consent screen Audience, add your Gmail (
adityasahani93@gmail.comor whatever you sign in with) as a test user. The app stays in Testing until Google verifies it.Enable GitHub Pages on this repo (Settings → Pages → Deploy from
main, folder/docs) so that callback URL exists. The page isdocs/oauth-callback.html.expo.extra.googleRedirectUriinmobile/app.jsonmust match the Google Cloud redirect URI exactly.In the app Connect tab, paste the Google web client ID and secret, then tap Sign in with Google. They are stored on the phone, not in git.
OAuth apps left in Testing expire refresh tokens after 7 days. Re-sign in, or publish the OAuth app.
App setup (Google)
Connect tab → paste Google web client ID and secret.
Tap Sign in with Google.
Connect tab → Sign in with Google.
Confirm Calendar and Gmail show as connected and their tools appear in the list.
Build an APK
GitHub Actions produces a release APK (JS bundle included, no Metro required):
Push to
mainorapk-github-actions, or run the Android APK workflow from the Actions tab.Download the expense-mcp-apk artifact.
Unzip and install
app-release.apk.Uninstall any previous debug build first.
Local EAS (optional, needs an Expo account):
cd mobile
npx eas-cli login
npx eas-cli build -p android --profile previewProject layout
main.py Expense MCP tools and resource
connection.py Supabase / Postgres connection
mobile/ Expo SDK 54 Android MCP host
mobile/src/mcpHost.ts Routes tools to expense, Calendar, and Gmail MCP servers
.github/workflows/ APK buildLicense
MIT. See LICENSE.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Log expenses, receipts and mileage from chat: auto-categorise, split VAT, summarise, export, rebill.
Personal finance by conversation: expenses, receipts, statement import, budgets, net worth.
Log, query, and edit expenses, budgets, and accounts in Ledgy from any MCP-compatible AI assistant.
- ManiloOAuthapp.manilo
Log, query, and edit expenses, budgets, and accounts in Manilo from any MCP-compatible AI assistant.
Related MCP Servers
- FlicenseCqualityDmaintenanceEnables AI assistants to manage personal finances by storing, analyzing, and exporting expense data using a persistent PostgreSQL database. Supports adding/editing expenses, generating spending summaries, detecting top categories, and creating monthly reports.12-
- FlicenseNot gradedqualityDmaintenanceEnables management of expenses via SQLite database, including adding, listing, updating, deleting, filtering, and summing expenses through natural language.-
- FlicenseNot gradedqualityDmaintenanceEnables natural language management of personal expenses, including adding, listing, and summarizing expenses with local SQLite storage.-
- FlicenseNot gradedqualityCmaintenancePersistent expense tracker backed by Neon Postgres with SQL tools for adding, editing, deleting, and analyzing expenses via natural language.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sahaniaditya/expense-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server