Skip to main content

auxilab-mcp-finance-recon

MCP Server for Month-End Close Reconciliation
Finance Shared Services · GBS/SSC · Auxiliobits

Automate the most manual, error-prone activities in a shared services team:
bank reconciliation, GL close, intercompany matching, and month-end close tracking.


What it does

MCP Tool Description
match_bank_statement Match bank CSV vs GL cash ledger — ±3 day date proximity, exact amount
reconcile_gl_accounts Compare prior vs current GL extract — new entries, reversals, variances
check_intercompany_balances Entity A vs Entity B — gross mismatch, FX component, risk flag
classify_reconciliation_breaks Rules-based break classification with recommended next actions
track_month_end_close 12-task close tracker with overdue detection and risk rating

Quick Start

1. Install

git clone https://github.com/auxiliobits/auxilab-mcp-finance-recon
cd auxilab-mcp-finance-recon
pip install -e ".[dev]"

2. Generate test data

python data/generate_test_data.py

This creates data/sample_data/ with 7 synthetic CSV files — no real data required.

3. Run the standalone demo

python demo.py

Expected output: full 5-step reconciliation flow ending with a Month-End Readiness Report.

4. Start the MCP server (for Claude Desktop / agent use)

python src/server.py

MCP Server Config (claude_desktop_config.json)

{
  "mcpServers": {
    "finance-recon": {
      "command": "python",
      "args": ["/path/to/auxilab-mcp-finance-recon/src/server.py"]
    }
  }
}

Tool Reference

match_bank_statement

{
  "bank_csv": "<CSV string>",
  "gl_csv": "<CSV string>",
  "opening_balance": 500000.00
}

Returns: reconciliation_summary, matched_pairs, unmatched_bank_items, unmatched_gl_items

Matching logic:

  • Amount match: exact within ±$0.01
  • Date proximity: ±3 calendar days
  • Tiebreaker: rapidfuzz token_sort_ratio on description

reconcile_gl_accounts

{
  "period_a_csv": "<prior period CSV>",
  "period_b_csv": "<current period CSV>",
  "account_name": "Accrued Liabilities — 2110"
}

Returns: reconciliation_statement, new_entries, removed_entries, reversals, common_entries


check_intercompany_balances

{
  "entity_a_csv": "<Entity A ledger CSV>",
  "entity_b_csv": "<Entity B ledger CSV>",
  "entity_a_name": "Auxiliobits India",
  "entity_b_name": "Auxiliobits Singapore",
  "base_currency": "USD"
}

Returns: summary (with mismatch_risk: NONE/LOW/MEDIUM/HIGH/CRITICAL), matched_transactions, entity-only lists, mismatch_detail

Demo scenario: Entity A = $125,000 receivable · Entity B = $123,500 payable → $1,500 mismatch, flagged HIGH


classify_reconciliation_breaks

{
  "breaks_csv": "<unreconciled items CSV>"
}

CSV columns: reference, date, description, amount, source

Classification categories:

Category Rule
Timing Difference Keywords: transit, outstanding, cut-off, clearing
Missing Entry Keywords: missing, not posted, unposted
Duplicate Posting Keywords: duplicate, double post, twice
Currency Rounding Amount ≤ $10, or FX/forex keywords
Intercompany Mismatch Keywords: interco, entity, subsidiary
Unknown No rule matched — escalate

track_month_end_close

{
  "tasks_csv": "<tasks CSV>",
  "close_deadline": "2024-11-30",
  "as_of_date": "2024-11-29"
}

CSV columns: account_name, owner, status, due_date

Valid statuses: complete, in progress, not started, overdue, on hold

Risk logic:

  • CRITICAL: deadline ≤ 1 day with outstanding tasks, or deadline passed
  • HIGH: deadline ≤ 2 days with >3 outstanding, or ≥3 overdue tasks
  • MEDIUM: completion < 75% or any overdue
  • LOW: on track

Project Structure

auxilab-mcp-finance-recon/
├── src/
│   ├── server.py               # MCP server — tool registry + dispatch
│   └── tools/
│       ├── __init__.py
│       ├── bank_matcher.py     # Bank ↔ GL matching (Pandas + rapidfuzz)
│       ├── gl_reconciler.py    # Prior vs current GL extract diff
│       ├── intercompany_checker.py  # Entity A vs Entity B
│       ├── break_classifier.py # Rules-based break classifier
│       └── close_tracker.py   # Month-end task tracker
├── data/
│   ├── generate_test_data.py  # Synthetic CSV generator
│   └── sample_data/           # Generated CSVs (gitignored)
├── tests/
│   └── test_tools.py
├── demo.py                    # Full 5-step demo runner
├── pyproject.toml
└── README.md

Tech Stack

Component Library
MCP protocol mcp Python SDK >= 1.0.0
Matching logic pandas >= 2.0, numpy
Fuzzy description matching rapidfuzz (falls back to difflib)
CSV parsing pandas.read_csv
Break classification Rules-based (regex) — no LLM required

Demo Data Summary

File Rows Notes
bank_statement.csv 50 Unique amounts, full month
gl_cash_ledger.csv 48 45 match bank (±1-2 day drift), 3 GL-only timing items
gl_prior_period.csv 20 October GL extract
gl_current_period.csv 25 15 carry-forward + 8 new + 2 reversals
entity_a_ledger.csv 3 $125,000 receivable
entity_b_ledger.csv 3 $123,500 payable — $1,500 mismatch
month_end_tasks.csv 12 4 complete, 3 overdue, deadline in 1 day → HIGH risk
breaks_sample.csv 8 Covers all 6 break categories

License

MIT · Built for the Auxiliobits Hackathon — Financial Reconciliation Pillar

Metadata

Release files for auxilab-mcp-finance-recon 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for auxilab-mcp-finance-recon 0.1.0
File Size Uploaded Provenance Actions
auxilab_mcp_finance_recon-0.1.0.tar.gz 25.5 kB Without provenance Details for auxilab_mcp_finance_recon-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for auxilab-mcp-finance-recon 0.1.0
File Interpreter ABI Platform Actions
auxilab_mcp_finance_recon-0.1.0-py3-none-any.whl Python 3 none any Details for auxilab_mcp_finance_recon-0.1.0-py3-none-any.whl

Total release size: 42.1 kB

Release files / auxilab_mcp_finance_recon-0.1.0.tar.gz

Download URL auxilab_mcp_finance_recon-0.1.0.tar.gz
Size 25.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3e0ce77f2443aeb7a49c0cb2a0599bde38c72ca4f217f2432820e35a9fb8a8c9
BLAKE2b-256 checksum
How to use checksums
951258dd78dd60bd5ffea8a791330e02a6646b2a299ff413760154afc7f3ba8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / auxilab_mcp_finance_recon-0.1.0-py3-none-any.whl

Download URL auxilab_mcp_finance_recon-0.1.0-py3-none-any.whl
Size 16.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ed7cbb40dc59ae8e7fa5401a11371e69280411999c5c7400213cdb44eb12b021
BLAKE2b-256 checksum
How to use checksums
41d6478b01208964c5eb10b0dbb11f9d2f8ff1dcc70375e2ae85e705e6e2cfad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Security for auxilab-mcp-finance-recon 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page