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_ratioon 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 passedHIGH: deadline ≤ 2 days with >3 outstanding, or ≥3 overdue tasksMEDIUM: completion < 75% or any overdueLOW: 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file auxilab_mcp_finance_recon-0.1.0.tar.gz.
File metadata
- Download URL: auxilab_mcp_finance_recon-0.1.0.tar.gz
- Upload date:
- Size: 25.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e0ce77f2443aeb7a49c0cb2a0599bde38c72ca4f217f2432820e35a9fb8a8c9
|
|
| MD5 |
a8a71b776461de774f74738bfce71cbc
|
|
| BLAKE2b-256 |
951258dd78dd60bd5ffea8a791330e02a6646b2a299ff413760154afc7f3ba8c
|
File details
Details for the file auxilab_mcp_finance_recon-0.1.0-py3-none-any.whl.
File metadata
- Download URL: auxilab_mcp_finance_recon-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed7cbb40dc59ae8e7fa5401a11371e69280411999c5c7400213cdb44eb12b021
|
|
| MD5 |
97ba1d24899d44f857382cc738f672fe
|
|
| BLAKE2b-256 |
41d6478b01208964c5eb10b0dbb11f9d2f8ff1dcc70375e2ae85e705e6e2cfad
|