Bulge-tier financial model factory — live formulas, source-traced cells, 14 templates.
io.github.Whatsonyourmind/modelforge — MCP Server
This MCP server (“ModelForge”) is a bulge-tier financial model factory that provides live formulas, source-traced cells, and 14 templates. It is positioned for financial-modeling workflows using Python tooling such as openpyxl and includes MCP-native integration.
🛠️ Key Features
Live formulas
Source-traced cells
14 templates
🚀 Use Cases
Credit-risk modeling
Valuation modeling (dcf, lbo)
Excel-based financial model generation and templating
Audit-trail and data-lineage workflows
⚡ Developer Benefits
MCP-native access (mcp-server)
YAML-to-Excel orientation (yaml-to-excel)
Uses LLM tools / AI agents integration topics
Designed with audit and traceability in mind (audit-trail, data-lineage)
⚠️ Limitations
Source excerpt only confirms templates and formula/trace features; detailed tooling behavior is not included in the provided data.
Bulge-tier Excel financial model factory for credit & structured finance. Every cell live-formulated. Every number traceable back to the source document page it came from.
A developer tool for analysts and engineers who build credit and corporate-finance models programmatically. Covers unitranche, sponsor-backed LBO, project finance, real estate credit, NPL, structured credit, restructuring, M&A, DCF and IPO templates. Extensible to any asset class.
The moat: builds are byte-identical deterministic (same spec → same workbook bytes, every run) and ship with a verifiable manifest + certificate — formula integrity, accounting/conservation invariants (balance sheet balances, cash ties out), and SHA-256 hashes of spec + sources + workbook. Run certify --strict / build --trust-strict and it's fail-closed: non-zero exit on any integrity violation, so a broken model never ships. That's model generation with a portable audit trail — not just generation. For an AI agent or an app that emits financial models, it's the layer that turns "the LLM produced a spreadsheet" into "here is a certificate that the spreadsheet is internally correct and reproducible."
🚀 Using ModelForge in production — or want managed features, priority support, or a specific template/connector?Tell me about your use case → — I read every one.
What this solves
Your agent needs to produce an Excel model from a structured spec — without an LLM hallucinating numbers directly into cells. ModelForge keeps the model deterministic: the LLM writes a typed YAML spec with source IDs, and a Python builder emits the live-formula workbook.
You need every output number to be auditable back to where it came from — without manually maintaining a sources sheet. Each hardcoded input carries a source ID, and the model's linkage graph is persisted to SQLite so a cell can be traced to its driver, source, and document page.
You want a model that recalculates instead of being a static dump — without writing formula strings by hand. Every cell is a real Excel formula, with named ranges, sign conventions, and WORST/BASE/BEST scenario toggles wired across sheets.
You need to gate a workbook for review — without eyeballing it. The QC tool runs an automated structural check suite (QC sheet present, named ranges populated, source references resolve, print areas set, no orphan sheets) and returns a per-check pass/fail report.
You need to triage many candidate deals fast — without building a workbook for each one. The screening tool filters and ranks a directory of spec YAMLs by quantitative criteria (margins, leverage, IRR) on their screening: block alone.
You want the whole pipeline available to an AI assistant — without bespoke glue code. ModelForge ships an MCP server (modelforge-mcp) so agents in Claude Code, Cursor, Cline, or ChatGPT Enterprise can list templates, build, QC, trace lineage, ingest a data room, and export deliverables.
Use it inside Claude Code, Cursor, ChatGPT Enterprise (MCP-native)
PyPI name: modelforge-finance (the unscoped modelforge was taken by source{d}'s ML library). Import name stays modelforge.
bash
pip install "modelforge-finance[mcp,export]"# wire into your MCP client config:
{
"mcpServers": {
"modelforge": { "command": "modelforge-mcp" }
}
}
Then in your AI assistant:
"Build me a unitranche LBO model from this YAML spec, export the committee deck."
Tools available: list_templates · build_model · qc_workbook · list_sources · lineage_walk · ingest_dataroom · screen_deals · compute_tax · export_pptx · export_docx · plus 7 unified-feed tools (data_providers_status · quote · history · fundamentals · search_filings · entity_lookup · search_securities) across a 14-provider data stack.
The architectural principle
LLMs produce specs + sources + narrative. Deterministic Python produces the workbook.
The LLM never writes a number into a cell. It writes a typed YAML spec with source IDs. A deterministic builder emits the Excel via openpyxl. A QC gate validates before export. Excel is a render of a linkage graph; the graph is persisted to SQLite and is the canonical artifact.
Quality standards (bulge-tier, non-negotiable)
Formatting
Blue = hardcoded input. Black = formula. Green = cross-sheet link. Red = warning.
No mixed formulas (no magic numbers embedded). Named ranges for every driver.
Costs NEGATIVE (sign convention enforced and checked).
EN primary labels, multi-language secondary (DE / ES / IT shipped; SV / NO / DA / NL on the v0.10 roadmap as design-partner asks).
Historical vs Projected column separator, obvious.
Check row at top of every sheet (BS balance, CFS tie, covenant headroom — TRUE or 0).
Sourcing
Every hardcoded cell has a comment with source ID (S-001, S-002, ...).
Assumptions (not sourced) tagged A-001 with rationale + confidence H/M/L.
Scenarios
WORST / BASE / BEST toggle on Assumptions. Drives every sheet via CHOOSE.
Every sheet respects the toggle — no orphan assumptions.
Audit
QC sheet with 8 automated checks, all must pass.
Revision log on Cover.
Named ranges mandatory.
Print areas set. Print-ready on every sheet.
Quick start
bash
pip install "modelforge-finance[mcp,export]"# Scaffold a ready-to-build spec — no repo checkout needed (works for any of the 19# templates; run `modelforge list-templates` to see them all)
modelforge scaffold dcf -o demo_dcf.yaml
# Build it: live-formula workbook + linkage graph + manifest sidecar
modelforge build demo_dcf.yaml # -> output/demo_dcf.xlsx# Certify the delivered artifact: zero formula errors, byte-identical, manifest-valid
modelforge certify output/demo_dcf.xlsx
Trust Layer v1 (new in v0.9.7)
Why should a buyer trust the number in cell B42?
The Trust Layer is a semantic gate (separate from the structural QC gate). It answers the question every IC asks in the first five minutes: is this number plausible? It catches issues like a DCF EV that's 8× the company's real market cap before the model ever leaves QA.
25+ built-in rules cover all shipped templates:
DCF: WACC band (3-25%), terminal growth ≤ GDP + 1%, EV vs market-cap deviation, terminal-value share, sensitivity-table monotonicity
Three-statement: balance-sheet integrity, cash reconciliation, retained-earnings link
Each violation produces a RedFlags worksheet inside the built workbook with severity (info / warn / fail), the rule that fired, expected-vs-actual, and the recommended remediation.
bash
modelforge audit-all examples/ # every shipped example, 0 FAIL violations in current ship
Turn a directory of PDFs, XLSXs and CSVs into a validated ModelForge YAML spec using Claude Opus. Every extracted number traces back to a doc page via the auto-built Sources registry.