Skip to main content

MCP server for month-end close reconciliation — Bank matching, GL reconciliation, Intercompany checking, Break classification, and Close tracking.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

auxilab_mcp_finance_recon-0.1.0.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

auxilab_mcp_finance_recon-0.1.0-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file auxilab_mcp_finance_recon-0.1.0.tar.gz.

File metadata

File hashes

Hashes for auxilab_mcp_finance_recon-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3e0ce77f2443aeb7a49c0cb2a0599bde38c72ca4f217f2432820e35a9fb8a8c9
MD5 a8a71b776461de774f74738bfce71cbc
BLAKE2b-256 951258dd78dd60bd5ffea8a791330e02a6646b2a299ff413760154afc7f3ba8c

See more details on using hashes here.

File details

Details for the file auxilab_mcp_finance_recon-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for auxilab_mcp_finance_recon-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ed7cbb40dc59ae8e7fa5401a11371e69280411999c5c7400213cdb44eb12b021
MD5 97ba1d24899d44f857382cc738f672fe
BLAKE2b-256 41d6478b01208964c5eb10b0dbb11f9d2f8ff1dcc70375e2ae85e705e6e2cfad

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page