gst-tax-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gst-tax-mcp What's the GST rate for HSN 1905 on 1 Feb 2026?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gst-tax-mcp
A Model Context Protocol server that gives an AI agent, or any app that speaks MCP, nine deterministic Indian GST tools: from "does this business need to register?" to "what is due, for which return, by when?" to the income-tax crossover checks that catch mismatches before a notice does.
Every rate, threshold and due date is tied to the CBIC notification or section it comes from. Not tax advice: verify with the notification or a CA before filing.
Product thinking behind it (users, metrics, trade-offs, roadmap): docs/PRD.md.
The agent layer built on top of it is measured in a companion repo: agent-eval-bench.
Install
Run it without installing (needs uv):
uvx --from git+https://github.com/zoeb-nomi/gst-tax-mcp gst-tax-mcpOr install with pip (Python 3.10+):
pip install git+https://github.com/zoeb-nomi/gst-tax-mcp
gst-tax-mcp # serves over stdioThe LangGraph demo agent needs extra dependencies:
pip install "gst-tax-mcp[agent] @ git+https://github.com/zoeb-nomi/gst-tax-mcp".
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"gst-tax": {
"command": "uvx",
"args": ["--from", "git+https://github.com/zoeb-nomi/gst-tax-mcp", "gst-tax-mcp"]
}
}
}Cursor
Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"gst-tax": {
"command": "uvx",
"args": ["--from", "git+https://github.com/zoeb-nomi/gst-tax-mcp", "gst-tax-mcp"]
}
}
}Related MCP server: india-stack-mcp
The nine tools
# | Tool | What it answers |
1 |
| Is registration required? Is composition available? Which filer type fits? |
2 |
| HSN/SAC code → kind, description, rate in force on a date, full rate history |
3 |
| Per-line CGST/SGST or IGST, cess, reverse-charge self-assessment, invoice totals |
4 |
| Books ITC vs GSTR-2B: matched, mismatched, missing, section 17(5) blocked, claimable |
5 |
| Due dates for GSTR-1/GSTR-3B/IFF/payment by filer type, period and state |
6 |
| Outward register → GSTR-1 table buckets (B2B, B2CL, B2CO, exports, notes, HSN memo) |
7 |
| IRN format, GSTIN format + checksum, mandatory fields, HSN digits by turnover, tax math |
8 |
| GSTR-3B turnover vs ITR gross receipts; presumptive-limit breaches |
9 |
| Annual tax + quarterly instalments, new vs old regime comparison |
All nine are deterministic Python over rule tables in gst_mcp/core/data.py.
No model is in the loop. The LLM (if any) sits on top.
Rates follow the invoice date

Coverage and limits
Rule tables are hand-maintained. Check rates against CBIC notifications before filing. This is not tax advice.
HSN/SAC rate table: 24 prefixes, 41 rate rows, each with the date it took effect (older rates are kept, so a past invoice gets the rate of its date). The most specific prefix wins.
Goods: 1006 (rice), 1905 (bakery products, biscuits), 2005 (pickles and other preserved vegetables), 2402 (cigarettes, tobacco), 2523 (cement), 3304 (beauty / make-up preparations), 3305 (shampoos, hair care), 3401 (soaps), 8471 (laptops, computers), 8544 (insulated wire and cables), 8703 (motor cars), 870321 (motor cars, petrol <=1000cc), 870322 (motor cars, petrol 1000-1500cc), 870331 (motor cars, diesel <=1500cc), 8708 (motor vehicle parts), 8711 (motorcycles), 871140 (motorcycles), 871150 (motorcycles)
Services (SAC): 996511 (goods transport by road), 997212 (renting of commercial / non-residential property), 997331 (life and health insurance), 9982 (legal and accounting services), 998311 (IT consulting and software services), 999799 (personal care services)
Anything not listed is not classified.
Latest effective date in the rate table: 1 February 2026.
Blocked ITC (section 17(5)): a small subset keyed on 4 HSN/SAC prefixes (8703, 1905, 9963, 9303).
Deadlines: three filer types:
monthly,qrdp(quarterly, turnover up to Rs 5 crore) andcomposition. Periods: a month (YYYY-MM), an Indian fiscal quarter (YYYY-Q1toYYYY-Q4, Q1 = April to June) or a financial year (FY2026-27, for GSTR-9, GSTR-9C, GSTR-4 and ITR dates). State matters only for QRDP GSTR-3B: it separates the two state categories (22nd and 24th). There are no per-state extensions; the override table holds a single historical example.E-invoice validator checks: IRN is present and 64 hex characters; seller and buyer GSTIN format and mod-36 checksum; invoice number, date and place of supply; at least one line; HSN/SAC present and long enough (4 digits up to Rs 5 crore turnover, 6 above); tax lines equal taxable value x rate; invoice total equals the sum of lines; a warning when same-state parties carry IGST. It does not recompute the IRN hash, verify a signature or QR code, call the IRP portal, or check that a GSTIN is actually registered or active.
Fixtures and demo clients are synthetic, including every GSTIN in them. Figures the tools cannot source (ITR gross receipts, projected income) are passed in by the caller, never guessed.
Eval
40 questions a business owner would ask (registration, rates on a date, liability split, blocked credit, return dates, e-invoice, income-tax crossover), each with the expected answer taken from a CBIC notification or a section of the Act, never from the tools. Cases, sources and the runner are in eval/.
Run | Score |
gst-tax-mcp tools | 40/40, every answer cited |
Claude Haiku answering from memory, no tools, blind | 33/40 |

The model alone missed the quarterly GSTR-3B due-date groups (all three cases), two state registration thresholds, the B2C-large limit and the February 2026 change for cigarettes. Building the set also found and fixed 18 rules in the tools' own tables before release; the full history is in eval/README.md. Because the tables were checked against these same 40 cases, a fresh held-out set is the next step.
Known gaps outside these cases: bakery items (1905) are treated as blocked credit in every case; the label on 9303 is wrong; small-car length and engine-size conditions are flagged, not enforced; advance tax for 44AD/44ADA filers is shown as four instalments instead of one by 15 March.
The agent
The server itself makes no network calls. The optional agent (pip install "gst-tax-mcp[agent]") sends your questions and the tool results to OpenRouter, using your own OPENROUTER_API_KEY.
gst_mcp/agent.py is a LangGraph ReAct agent whose tools are these nine,
loaded from the MCP server over stdio via langchain-mcp-adapters. One
session walks a client quarter (applicability, deadlines, reverse-charge
liability, ITC reconciliation, GSTR-1, e-invoice, ITR crossover) and prints a
filing pack. Run it from a source checkout:
python -m venv .venv && .venv/bin/pip install -e ".[agent]"
OPENROUTER_API_KEY=... .venv/bin/python -m gst_mcp.agent \
--fixtures fixtures/priya_pickles --period 2026-Q2A recorded live run: demo/transcripts/agent_live_session.txt.
Develop
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/python scripts/mcp_smoke.py # spawn server over stdio, list 9 tools, call two
.venv/bin/python -m pytest tests -q # 33 unit tests on the core engine
.venv/bin/gst-tax-mcp # serve stdiopip install -r requirements.txt also works for a plain checkout.
Architecture
docs/architecture.md has a component diagram (Mermaid) and the paths
through it: the agent session and direct MCP use. Any MCP client or app can
call the server.
License
MIT, see LICENSE.
Available Tools
9 toolscalc_gst_liabilityA
Compute GST for an invoice. invoice is a JSON object (or file path)
with lines: [{description, hsn_sac, quantity, unit_price, discount,
place_of_supply_state, supplier_state, reverse_charge, on_date(optional
ISO date)}]. Returns per-line tax and totals (CGST/SGST or IGST, cess,
reverse-charge liability).
Inputs: invoice (required).
classify_hsn_sacB
Classify an HSN (goods) or SAC (services) code and return the GST rate in force on the given date (default today), with the rate history.
Inputs: code (required), on_date.
gst_applicabilityB
Does this business need GST registration, and is it eligible for the
composition scheme? profile is a JSON object (or path to one):
aggregate_turnover_prior_fy, state_code, supplies_goods, supplies_services,
inter_state_supply, sells_via_ecommerce, casual_taxable_person,
composition_scheme_interest.
Inputs: profile (required).
gst_filing_deadlinesC
Filing due dates for a period. period is "YYYY-MM" (month or IFF),
"YYYY-Q1".."YYYY-Q4" (quarter), or "FY2026-27" (annual + ITR).
filer_type: monthly | qrdp | composition.
Inputs: period (required), filer_type, state_code, turnover_above_5cr.
gstr1_summary_toolB
Summarise an outward-supply register into GSTR-1 table buckets (B2B,
B2C large, B2C others, exports, SEZ, credit/debit notes, HSN memo).
invoices is a JSON array (or file path).
Inputs: invoices (required).
itr_advance_tax_estimate_toolB
ITR crossover: estimate the annual tax and quarterly advance-tax instalments from a projected annual income (new or old regime), and compare regimes.
Inputs: annual_income_projection (required), regime.
itr_turnover_reconcile_toolB
ITR crossover: reconcile GSTR-3B annual turnover against the ITR gross receipts; flags variance beyond 5% and presumptive-limit breaches.
Inputs: gstr3b_turnover (required), itr_gross_receipts (required), itr_presumptive_scheme.
reconcile_itc_toolB
Reconcile input tax credit in the books against GSTR-2B. Each of
books and gstr2b is a JSON array (or a file path): rows of
{supplier_gstin, invoice_number, invoice_date, taxable_value, itc_amount,
hsn_sac}. Flags missing invoices, mismatches beyond tolerance rupees and
section 17(5) blocked credits.
Inputs: books (required), gstr2b (required), tolerance.
validate_einvoice_toolA
Validate an e-invoice payload: IRN hash format, GSTIN format and
checksum, mandatory fields, HSN digit requirements for the supplier's
aggregate turnover (supplier_ato), tax math and invoice totals.
Inputs: einvoice (required), supplier_ato.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool targets a distinct step in the GST/ITR workflow: applicability, classification, liability calc, ITC reconciliation, deadlines, GSTR-1 summary, e-invoice validation, and two ITR tools. The only mild overlap is between reconcile_itc_tool and itr_turnover_reconcile_tool, but the descriptions clearly separate ITC-vs-GSTR-2B from turnover-vs-ITR, so confusion is unlikely.
Casing is uniformly snake_case, but the verb convention is chaotic: gst_applicability and gst_filing_deadlines have no verb, classify_hsn_sac and calc_gst_liability lead with an abbreviated verb, reconcile_itc_tool, gstr1_summary_tool, and validate_einvoice_tool append a '_tool' suffix, while itr_turnover_reconcile_tool and itr_advance_tax_estimate_tool put the noun first with the verb embedded mid-name. No single predictable pattern an agent can rely on.
Nine tools is well within the sweet spot for a domain-aware server, and each covers a genuinely distinct compliance function rather than padding the surface. Nothing feels redundant or thin.
The surface covers registration, classification, liability, ITC reconciliation, deadlines, GSTR-1, e-invoice validation, and ITR crossovers—a broad lifecycle. Minor gaps exist (no GSTR-3B summary/filing helper, GSTR-9 annual reconciliation, or liability payment/challan step), but agents can work around these.
Maintenance
Related MCP Connectors
Validate EU, UK, AU VAT numbers for AI agents. EU ViDA e-invoicing compliance.
15 deterministic validation tools for AI agents: tax IDs (15 countries), VAT, IBAN, LEI, HS codes.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Deterministic compliance and vertical knowledge bases for autonomous agents. Free 24hr trial.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to generate India GST e-invoices (IRN) via Sandbox GSP, computing tax splits automatically.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Indian enterprise systems by providing tools for accounting (TallyPrime), invoicing (Zoho Books), and GST compliance (validation, e-invoice generation, and GSTR-2B reconciliation), with dry-run-first writes and an audit trail.2Apache 2.0
- AlicenseAqualityCmaintenanceEnables live GSTIN verification, GST return and compliance history lookup, HSN/SAC code searches, and MCA company registry queries through MCP clients.1050 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to fetch Indian mutual-fund NAVs and NSE market data, calculate GST and income-tax amounts, and look up RBI policy rates, with provenance blocks for citations. Works with any MCP client over stdio or HTTP.17MIT