We all know the failure mode: ask an LLM for a tax rate and it'll hand you a confident number with zero provenance. Fine for a demo, useless for anything you'd ship. The interesting question is how you ground the model in a source of truth — and MCP has quietly made that a one-liner.
Quick recap for anyone who missed it: Model Context Protocol is an open standard (Anthropic, late 2024) for connecting an assistant to external tools and data. Client support is now broad — Claude Desktop, Claude Code, ChatGPT, Cursor, VS Code, Windsurf.
2Fin runs a free public MCP server for tax at taxmcp.ai2fin.com
. No key, no auth. Point any MCP client at it:
{
"mcpServers": {
"tax": { "url": "https://taxmcp.ai2fin.com" }
}
}
You get eight tools: tax_rate_lookup
, compute_gst_vat
, income_tax_estimate
, company_tax_estimate
, cgt_estimate
, superannuation_estimate
, student_loan_repayment
, compare_countries
— across 88 countries.
Every response includes its source authority and a dataVerifiedOn date. That's the part most "AI + data" integrations skip, and it's exactly what makes the output auditable instead of vibes. A wrong or stale number is
> income_tax_estimate { country: "AU", income: 95000 }
< { incomeTax: ..., medicareLevy: ..., takeHome: ...,
source: "ATO — ato.gov.au", dataVerifiedOn: "2026-06-01" }
The same engine backs their web calculators, so the MCP answers and the site can't drift apart — which, if you've ever maintained two copies of the same rate table, you'll appreciate.
Good worked example of the pattern: don't make the model remember facts, give it a tool that fetches them with a citation attached. The tax domain just makes the stakes obvious — but the same design applies to any data your assistant has no business memorising.
If you want to poke at it, it's free and needs no account: taxmcp.ai2fin.com.