Skip to main content
Glama
RommelTVAG

simplefin

by RommelTVAG
README.md
# SimpleFIN MCP Server

A small, self-contained MCP server that exposes [SimpleFIN](https://www.simplefin.org/protocol.html)
bank data (accounts + transactions) as tools for Claude Code.

It is independent of the shared Pipedream proxy — it just adds a second MCP
server to this workspace's `.mcp.json`.

## How SimpleFIN works

1. You generate a **setup token** (Base64) at a bridge, e.g.
   `https://bridge.simplefin.org/simplefin/create`.
2. The token decodes to a one-time **claim URL**. POSTing to it returns a
   permanent **Access URL** that embeds HTTP Basic credentials.
3. All data comes from `GET /accounts` on that Access URL.

A setup token can be claimed **only once**.

## Setup

```bash
cd C:\Users\Admin\John-Rommel\simplefin-mcp
npm install
```

### Connect (one time)

Get a setup token, then either:

```bash
npm run claim -- <YOUR_SETUP_TOKEN>
```

or run `node claim.js` and paste it when prompted. This saves the Access URL to
`credentials.json` (mode 600, gitignored).

To test without a real bank, skip the claim step and point the server at the
public demo Access URL via env (`SIMPLEFIN_ACCESS_URL`, see `.mcp.json` below):

```
https://demo:demo@beta-bridge.simplefin.org/simplefin
```

This demo returns three sample accounts (Savings, Checking, Empty) with real
transaction data, so you can exercise `list_accounts` and `get_transactions`
immediately.

## Register with Claude Code

Add this server alongside `pipedream` in `C:\Users\Admin\John-Rommel\.mcp.json`:

```json
"simplefin": {
  "command": "node",
  "args": ["C:/Users/Admin/John-Rommel/simplefin-mcp/index.js"]
}
```

If you'd rather pass credentials by env instead of `credentials.json`:

```json
"simplefin": {
  "command": "node",
  "args": ["C:/Users/Admin/John-Rommel/simplefin-mcp/index.js"],
  "env": { "SIMPLEFIN_ACCESS_URL": "https://user:pass@bridge.simplefin.org/simplefin" }
}
```

Restart Claude Code in this folder and approve the server once.

## Tools

| Tool | Purpose |
|------|---------|
| `claim_setup_token` | Exchange a setup token for an Access URL and save it. |
| `connection_status` | Report whether a connection is configured (no secrets shown). |
| `list_accounts` | List accounts + balances (fast, balances-only). |
| `get_transactions` | Fetch transactions, with optional date range / pending / account filter. |

## Security notes

- The Access URL is as sensitive as a banking password — `credentials.json` is
  written mode 600 and gitignored.
- All requests are HTTPS with verified certificates (Node default).

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct purpose: setup, status check, account listing, and transaction retrieval. There is no overlap in functionality, making selection unambiguous.

Naming Consistency4/5

Most tools follow a verb_noun pattern (claim_setup_token, list_accounts, get_transactions), but connection_status is a noun phrase rather than a verb-based action, breaking the pattern slightly.

Tool Count5/5

Four tools cover the core lifecycle of connecting and reading financial data without unnecessary bloat. The count is well-scoped for a simple financial data server.

Completeness4/5

The tool set covers setup, status verification, account balances, and transaction history. A minor gap is the lack of a way to disconnect or update the connection, but the core workflow is complete.

Maintenance

ActivityInactive
ResponsivenessNo issues