mcpField
C
chargescout

chargescout

Local
github.com/GillMacedoFinance0Updated 2w ago

About chargescout

chargescout is a local MCP server and CLI that analyzes bank or card statement CSVs to identify recurring charges, price increases, and possible duplicate charges. It requires no account or network connection and is intended for individuals, small businesses, and freelancers reviewing spending.

Key features

  1. 01Detect recurring charges and intervals
  2. 02Estimate annual costs
  3. 03Flag price increases and duplicates
  4. 04Inspect CSV columns and row counts
  5. 05Support JSON output

Use cases

  1. 01Review personal or business subscriptions
  2. 02Find subscriptions that may have stopped
  3. 03Check statements for increases or duplicate charges

MCP support

The MCP server provides tools to find subscriptions and inspect CSV structure. The finder returns merchant names and amounts to the MCP client; analysis runs locally, and the project uses no network.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"gillmacedo-chargescout": {
"command": "npx",
"args": [
"-y",
"chargescout"
]
}
}
}
Run commandnpx -y chargescout

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmchargescout0.2.0

Tools

2

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
pathstringYesPath to the bank or card statement CSV
limitnull|integerNoMost findings to return, default 100. 0 returns only the totals
columnsobjectNoColumn names by field (date, amount, credit, debit, description), when detection fails
date_formatstringNodmy or mdy, needed only if the tool reports that dates are ambiguous
positive_outbooleanNoSet if the file shows charges as positive numbers, as many card statements do

Details

From the project README

chargescout: find subscriptions and recurring charges in your bank statement

npm CI MIT license MCP Registry

See every subscription you're paying for, what it costs per year, which prices went up, and where you were charged twice, without linking your bank account or uploading anything. For small businesses, freelancers and anyone auditing their spending.

Subscription trackers usually want your bank login and charge a monthly fee. chargescout reads a CSV export from your bank or card instead, and finds the charges that repeat weekly, monthly, quarterly or yearly. It's an MCP server and a single Go binary, with no account, no API key and no network access.

What you can ask your agent

  • "What subscriptions am I paying for?"
  • "How much do my recurring charges cost per year?"
  • "Which subscription prices went up?"
  • "Was I charged twice for anything?"
  • "What should my business cancel to save money?"

Install

As a Claude Code plugin, which adds the MCP server and a skill that tells Claude when to use it. You need Node, which runs the server through npx:

claude plugin marketplace add GillMacedo/chargescout
claude plugin install chargescout@chargescout-marketplace

For other MCP clients:

{
  "mcpServers": {
    "chargescout": {
      "command": "npx",
      "args": ["-y", "chargescout", "serve"]
    }
  }
}

Or build the binary with Go 1.27 or newer:

go install github.com/GillMacedo/chargescout@latest

Usage

Without installing anything, run npx chargescout find statement.csv. This example uses the made-up statement in examples/:

$ go run . find examples/statement.csv
SAMPLE POWER CO  83.30  monthly  999.60/year  last 2026-09-12  active  (likely)
  ! amount varies, so this may be a usage-based bill
MOCK ACCOUNTING SOFTWARE  60.00  quarterly  240.00/year  last 2026-08-25  active  (likely)
SAMPLE STREAM  18.99  monthly  227.88/year  last 2026-09-03  active
  ! price went up from 15.99 to 18.99 on 2026-06-03
PLACEHOLDER DOMAINS ANNUAL  120.00  yearly  120.00/year  last 2026-09-14  active  (likely)
EXAMPLE CLOUD STORAGE  9.99  monthly  119.88/year  last 2026-09-07  active
  ! possible double charge of 9.99 on 2026-06-08
FICTIONAL GYM MEMBERSHIP  45.00  monthly  540.00/year  last 2026-05-21  may have stopped
SKIPPED row 59: no valid date or amount
6 recurring charges, 5 active, costing 1707.36 a year

Add --positive-out if your file shows charges as positive numbers, as many card statements do, and --json for machine-readable output. A longer statement gives better results, and a year of history is ideal.

How it decides

FindingRule
Recurring4 or more charges from one merchant at a steady interval and price
Likely3 charges, 2 charges a year apart, or a steady bill whose amount changes most cycles
May have stoppedThe next charge is overdue by the end of the statement. It's left out of the total

Most intervals must fit the cycle, and amounts must stay within 25%, so everyday shopping isn't reported. Two plans from one company stay separate.

MCP tools

ToolWhat it does
subscriptions_findReturns recurring charges, yearly cost and alerts, with a limit for long results
subscriptions_inspect_csvShows detected columns and row counts, without row contents

Both are read-only. subscriptions_find returns merchant names and amounts to the MCP client, so they reach whichever AI model you use. The CLI keeps everything on your machine.

FAQ

How do I find forgotten subscriptions? Export your bank or card transactions as CSV and run npx chargescout find statement.csv.

Do I have to connect my bank account? No. It only reads the file you give it, and it has no network code.

Can it cancel subscriptions? No. It shows you what's there, and you cancel with each provider.

Does it work with my bank? It reads CSV exports and recognizes common column names in several languages, and you can name others with --columns date=When,amount=Sum,description=What. It hasn't been tested on each bank's real exports yet.

Limits

  • This helps you review spending and isn't financial advice. Check results against your statement.
  • It reads CSV only, so PDF statements need converting first.
  • Merchant names come from bank descriptions, so one company can appear under two names, and those won't be connected.
  • It can miss charges with irregular timing, and can report steady non-subscription spending, such as rent or a regular purchase.
  • Yearly cost is the last amount times the cycles per year, so it's an estimate.
  • It assumes two decimal places, and doesn't convert currencies.
  • So far it has been tested on made-up data, not real exports. If yours fails, please open an issue with the column headers, not your data.

Contributing

Contributions are welcome, from people and from people working with AI agents. See CONTRIBUTING.md. Good first issues:

  • Add column names from more banks and languages
  • Add more card-processor prefixes to merchant name cleanup
  • Connect the same merchant under different names
  • Add --out to write results to a CSV
  • Add a plugin icon
How pull requests work
  1. Open a PR. Fork the repo, work on a branch, and keep it to one change. Write a title that says what changes for users, because it becomes the changelog line: feat: goes under Added and fix: under Fixed.
  2. Automatic check. Code changes need tests, and make test must pass. Changes over 30 lines need a linked open issue (Closes #<number>), and a PR can have at most 800 changed lines. If something is missing, a comment tells you what to fix.
  3. Review. Claude reviews each PR automatically. Code PRs also get a security review and are tested in a sandbox. The review then merges the PR or asks for changes. PRs that change CI, agent settings, npm or Python dependencies, vendored code or build files can't be merged this way, and a comment says so. The same goes for anything the security review doesn't clear.
  4. Release. A merge that changes what users install becomes a new version within about two hours, with a GitHub Release and, if the project has one, its npm package. Docs and CI changes wait for the next release.

AI disclosure

This project was largely generated with Claude Code and reviewed by its maintainer.

About me

I'm Giulliano Macedo, and I build developer tools at GoTech Solutions. Follow along or get in touch:

If chargescout found a charge you forgot about, a star helps others find it.


MIT licensed.

Built by Giulliano Macedo, GoTech Solutions · LinkedIn · X

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.