CatWallet MCP Server
Click on "Deploy 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., "@CatWallet MCP ServerWhat's my safe-to-spend this month, and show recent transactions?"
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.
CatWallet
Product screenshots
All screenshots below are generated from the real local UI with deterministic fictional data. No hosted account or financial record is used.

Transactions | Reports |
|
|
Planning | Mobile dashboard |
|
|
Related MCP server: OpenBudget MCP Server
The problem CatWallet solves
Personal-finance tools often trade privacy for convenience or flatten cash flow, liabilities, goals, and future commitments into one misleading balance. CatWallet keeps the ledger under your control and makes the important distinctions explicit: cash versus card liability, spending versus repayment, active versus completed installments, and available money versus already-promised money.
Core capabilities
Safe to spend: derives a practical monthly amount after active commitments, savings, and recorded spending.
Transactions and categories: income, expenses, savings, filtering, import semantics, soft deletion, and restoration.
Credit cards and repayments: card liabilities, invoice periods, due dates, repayments, refunds, and transfers without double counting.
Installments: per-installment or total plans, early completion, and retirement of completed future projections.
Fixed commitments: monthly, yearly, or custom recurring obligations.
Sinking funds: planned reserves with an immutable contribution and withdrawal ledger.
Budgets and reports: category limits, monthly detail, trends, cumulative balances, and exports.
Goals and cooling list: goal funding plus a deliberate waiting period for optional purchases.
MCP assistance: read tools and explicitly authorized mutations for compatible AI clients.
AI and MCP boundary
The MCP server is a recording and management assistant, not a financial adviser. It can explain stored data and prepare actions, but write operations remain subject to the user's explicit authorization and the same authenticated ownership checks as the web app. Do not give an AI client a broader token or scope than it needs.
Privacy-first and self-hosted
CatWallet is designed for an operator-controlled Supabase project. User-owned tables enforce Postgres Row Level Security, sensitive text fields are encrypted by the application, and no service-role key is used in browser code. This repository contains no hosted database, online demo, production environment, or real seed data.
Technology stack
Next.js 16 and React 19
TypeScript 6
Supabase Auth and Postgres with RLS
Model Context Protocol (MCP)
Tailwind CSS, Radix UI, and Recharts
Vitest and Playwright
Local development quick start
Requirements: Node.js 24, Corepack, Docker, and Git.
git clone https://github.com/yueyue95/CatWallet-OSS.git
cd CatWallet-OSS
corepack enable
corepack prepare pnpm@11.22.0 --activate
pnpm install --frozen-lockfile
cp .env.example .env.local
pnpm exec supabase start
pnpm exec supabase db reset --local --yes
pnpm devGenerate a 32-byte base64 FIELD_ENCRYPTION_KEY locally and place it only in .env.local. Open http://127.0.0.1:3000.
Docker Compose quick start
Start the local Supabase stack first, complete .env.local, then run:
docker compose --env-file .env.local build
docker compose --env-file .env.local up -dThe Compose volume stores only the Next.js cache. Postgres data remains in the local Supabase Docker volumes. Stop without deleting data using docker compose --env-file .env.local down.
Create a Supabase project from scratch
Create a new Supabase project owned by you, or use the local CLI stack.
Copy
.env.exampleto.env.localand set the project URL, publishable key, and a locally generated field-encryption key.Apply every file in
supabase/migrations/in filename order. For local development,pnpm exec supabase db reset --local --yesdoes this automatically.In Supabase Auth, enable email/password and add your exact
/auth/callbackand/auth/update-passwordURLs.Configure optional OAuth providers with secrets stored only in the provider or hosting platform.
Verify RLS with
pnpm test:integration:localbefore entering meaningful data.
Never use a production project as a development or demo target.
Environment variables
.env.example documents the supported variables using placeholders only:
NEXT_PUBLIC_SUPABASE_URL: browser-safe Supabase API URL.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY: browser-safe publishable key.SUPABASE_SERVER_URL: optional server-side URL for container networking.FIELD_ENCRYPTION_KEY: server-only base64-encoded 32-byte key.NEXT_PUBLIC_SITE_URL: canonical URL for your own deployment.CATWALLET_MCP_*: optional MCP resource, authorization, origin, scope, and time-zone controls.
Do not commit .env.local, tokens, passwords, connection strings, browser state, or database dumps.
Deterministic local demo
The demo tooling accepts only localhost or 127.0.0.1 Supabase endpoints and fails closed for any hosted or LAN target. It uses a fixed reference date, Asia/Kuala_Lumpur, MYR, and clearly fictional accounts and transactions.
pnpm demo:reset
pnpm demo:screenshotsThe second command resets the local database again, launches the real app, captures ten Playwright screenshots, and builds a contact sheet. Runtime credentials and the generated encryption key live only under ignored .demo/. See Demo data and screenshots.
MCP configuration
Run the stdio server with pnpm mcp:start. Configure the resource URL, authorization server, exact hosts and origins, audience, scopes, and time zone through environment variables described in .env.example. Keep bearer tokens in the MCP client's secret store; never put them in this repository or a command checked into shell history.
Tests, build, and security checks
Coverage uses the verified initial OSS baseline from the stable Production source: 74.44% statements, 67.90% branches, 71.94% functions, and 75.44% lines. This is a non-regression floor, not a quality ceiling; raise the thresholds in vitest.config.ts whenever coverage improves.
pnpm format:check
pnpm lint
pnpm typecheck
pnpm test
pnpm test:integration:local
pnpm mcp:test
pnpm build
pnpm e2e
pnpm security:audit
pnpm security:trivyIntegration and E2E suites require the isolated local Supabase stack. GitHub Actions run quality, CodeQL, dependency, Semgrep, Trivy, local E2E, and local-only ZAP checks; none deploy the application.
Generic deployment guide
Provision your own Supabase project and hosting provider.
Apply migrations before starting the new application version.
Set secrets in the hosting platform, not in Git.
Configure exact Auth callback, MCP Host, Origin, issuer, audience, and scope values.
Build with
pnpm build, deploy the resulting Next.js application, and run read-only smoke checks.
CatWallet is not tied to a particular Vercel team, Supabase project, domain, or deployment workflow.
Backups and migration upgrades
Back up both code and the database before upgrades. A source rollback does not roll back Postgres. Record the applied migration version, create encrypted logical dumps in a controlled location outside the repository, test restoration, then apply new migrations in order. Never upload financial dumps to GitHub artifacts or releases.
Project documents
Upstream attribution
CatWallet is based on Dragg. The original Felipe de Sousa MIT copyright and license are preserved in LICENSE; additional attribution is in NOTICE.md. CatWallet is an independent derivative project, not an official Dragg release.
Not financial advice
CatWallet records and visualizes information you provide. It does not provide financial, tax, investment, or legal advice, and its calculations should be independently reviewed before you make decisions.
This server cannot be deployed
Maintenance
Related MCP Connectors
Personal finance for AI agents: accounts, budgets, goals, 9-strategy debt payoff, reports. OAuth 2.1
- BankSyncOAuthio.banksync
Connect AI agents to bank accounts, transactions, balances, and investments.
Personal-finance workspace for AI agents: accounts, spending, budgets, goals, and investments.
Read-only access to your bank, investment, and crypto accounts: balances, transactions, holdings.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI assistants to interact with YNAB budgets, performing read-only queries by default and optional write operations like creating transactions and managing categories through natural language.39259 npm34MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and manage personal financial data from US institutions and manual entries, including transactions, balances, liabilities, and investments.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to securely access and manage your FinEye personal-finance data—accounts, transactions, budgets, categories, tags, holdings, and spending analytics—with read-only, write, and delete operations controlled by explicit safety gates.MIT

candor-financeofficial
FlicenseNot gradedqualityBmaintenanceEnables AI agents to securely access organized personal finance data such as accounts, spending, budgets, goals, investments, and notes, and act on decisions the user approves through Candor.2-



