Mcp Einvoicing In

io.github.cmendezsPublished by GitHub account cmendezsv0.2.2Updated Oct 24, 2026

MCP server for India GST e-invoicing (FORM GST INV-01 schema v1.1 / IRP-IRN)

VerifiedSTDIODesktop onlyFinanceDeveloper Tools

Overview

AI-generated overview

Local MCP server that lets an assistant build and structurally validate Indian GST e-invoice JSON payloads and render an IRP signed QR string as a PNG.

What you can do
Report the supported document types, supply types and out-of-scope items for the current phase of the package. Build GST e-invoice JSON payloads for INV, CRN and DBN documents from structured input, without ever emitting an IRN. Run offline structural and business-rule validation: mandatory fields, enum membership, CGST+SGST versus IGST pairing, and GSTIN/state-code consistency. Render an IRP-returned signed QR string as a displayable PNG image.
When to use it
Useful when drafting or checking Indian GST e-invoice payloads before they go to an Invoice Registration Portal, or when you need a signed QR string turned into an image. It is an offline helper, not a submission client.
Requirements
Runs as a local process, installed from PyPI (pip install mcp-einvoicing-in) or launched with uvx; Python is required. No environment variables or credentials are needed for the current scope, and it makes no network calls.
Before you install
It does not submit to the IRP, so an invoice built here is not legally valid until the portal returns an IRN. The QR tool only renders the string and does not decode or interpret it. Live submission, once added, is expected to need IRP/GSP credentials.

Installation

In SourceWeft

  1. Open Mcp Einvoicing In in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

mcp-einvoicing-in 🇮🇳

English | हिन्दी

[License] [PyPI version] [Python] [mcp-einvoicing-in MCP server]

A Python MCP server providing tools for Indian GST e-invoicing, per GSTN's FORM GST INV-01 schema v1.1 (CGST Act 2017 s.31 + CGST Rule 48(4), Notification No. 68/2019-Central Tax). It enables AI agents (Claude, IDEs) to build and structurally validate GST e-invoice JSON payloads (INV, CRN, DBN document types) and render an IRP-returned signed QR string as a displayable image.

Phase A scope. This package covers offline payload building, structural validation, and GSTIN tax-identifier validation only. It does not submit to the Invoice Registration Portal (IRP) — live submission (auth/token, generate-IRN, cancel-IRN) is a later phase, blocked on the NIC e-invoice API specification not yet being available to this project (see "Spec availability" below). See Available tools for exactly what is implemented today.


Introduction

This package is built on mcp-einvoicing-core, the shared base library for e-invoicing MCP servers. It provides the InvoiceDocument model base and the TaxIdentifier.validate_in_gstin GSTIN validator.

mcp-einvoicing-core is installed automatically as a dependency, no additional step is required.

GST e-invoicing is a clearance-model system: an invoice becomes legally valid only once the IRP (Invoice Registration Portal, operated by NIC) validates the supplier's JSON payload and returns an Invoice Reference Number (IRN), acknowledgement number/date, and a signed QR code (CGST Rule 48(4)/(5)). This package builds and structurally validates the request payload a supplier would submit; it does not itself submit to the IRP (see "Phase A scope" above).

Installation

Via PyPI (recommended)

bash
pip install mcp-einvoicing-in

Or without prior installation using uvx:

bash
uvx mcp-einvoicing-in

From source

bash
git clone https://github.com/cmendezs/mcp-einvoicing-in.gitcd mcp-einvoicing-inpip install -e ".[dev]"

Configuration

This package requires no environment variables for its current (Phase A) scope — it performs no network calls. Live IRP submission, once implemented, will require IRP/GSP credentials; this section will be updated at that time.

Claude Desktop integration

Add to your Claude Desktop configuration file (claude_desktop_config.json):

json
{  "mcpServers": {    "einvoicing-in": {      "command": "uvx",      "args": ["mcp-einvoicing-in"]    }  }}

Cursor integration

Add the same mcpServers block to either:

  • Global: ~/.cursor/mcp.json
  • Project-specific: .cursor/mcp.json in your project root
json
{  "mcpServers": {    "einvoicing-in": {      "command": "uvx",      "args": ["mcp-einvoicing-in"]    }  }}

Reload Cursor (or run "Reload Window" from the command palette) after saving.

Kiro integration

Add to either:

  • Global: ~/.kiro/settings/mcp.json
  • Workspace: .kiro/settings/mcp.json
json
{  "mcpServers": {    "einvoicing-in": {      "command": "uvx",      "args": ["mcp-einvoicing-in"],      "disabled": false,      "autoApprove": []    }  }}

Kiro reloads MCP configuration automatically on save. If a future version of this package requires credentials, prefer "VAR_NAME": "${VAR_NAME}" shell-interpolation syntax over plaintext secrets in this file.

Available tools

Scope

  • in__get_supported_scope — returns the document types, supply types, and explicit out-of-scope items this package currently supports.

Build and validate

  • in__build_invoice — validates structured input against INInvoice and builds a GST e-invoice JSON payload (INV/CRN/DBN). Never emits IRN — that field is IRP-generated, never supplier-populated.
  • in__validate_invoice — offline structural/business-rule validation: mandatory fields, enum membership, CGST+SGST-vs-IGST pairing (item and document-total level), and GSTIN/state-code consistency. There is no XSD/Schematron pass — FORM GST INV-01 is JSON, not XML.

QR

  • in__render_irp_qr_png — renders an IRP-returned signed QR string as a displayable PNG. Does not decode or interpret the QR's content — the NIC e-invoice API spec that would document that content is not yet available to this project (see "Spec availability" below).

Spec availability

Retrieving current, exact NIC/GSTN technical specifications from outside India is unreliable: the GSTN enforces strict geographic firewalls that routinely block or rate-limit non-Indian IP addresses. This package was built entirely from specification documents supplied directly by the maintainer (FORM GST INV-01 schema v1.1; CGST Notifications 68/2019-CT and 72/2020-CT; and Notification No. 10/2023-CT, confirming the current AATO mandate threshold) — no document was fetched from the internet by an automated agent. As a direct consequence:

  • Not yet available to this project: comprehensive list in specs/README.md's "Pending specs" table.
  • Live IRP submission tools cannot be built responsibly without the NIC e-invoice API spec — see "Phase A scope".

If you are based in India and can supply any of the documents listed there, please open an issue using the Spec Update issue template. The template captures the document name, official source URL, version, and retrieval date; a follow-up pull request then adds the file under specs/ together with a sources-table entry and a provenance/redistribution affirmation. See CONTRIBUTING.md for the full two-step flow.

Architecture

INInvoice subclasses InvoiceDocument (mcp_einvoicing_core.models) — FORM GST INV-01 has no EN 16931/UBL/CII lineage (it is a flat JSON clearance-model schema), so this package follows the InvoiceDocument pathway, the same one used by mcp-cfdi-mx (CFDI) and mcp-nfe-br (NF-e). INInvoiceLine subclasses InvoiceLineItem to add the schema's GST/HSN/cess fields, which have no equivalent in the base line-item model. GSTIN fields are validated via TaxIdentifier.validate_in_gstin, called from INInvoice's own model validators — this package never reimplements identifier-validation logic locally. There is no Schematron/XSD validator layer (validators/structural.py implements plain-Python business-rule checks instead), since the wire format is JSON, not XML.

Vendor neutrality

This server implements the standard itself: it builds and validates the document locally. It is not a client for a commercial invoicing platform, and your credentials never leave your own infrastructure.

A GSP (GST Suvidha Provider) would be required to reach the IRP; this package builds and structurally validates the payload locally, and live IRP submission itself is not yet implemented, pending the NIC API spec (see "Spec availability" above).

Contributing

See CONTRIBUTING.md for development setup, the PR checklist, and commit style.

Other e-invoicing MCP servers

CountryServer
🌍 Globalmcp-einvoicing-core
🇧🇪 Belgiummcp-einvoicing-be
🇧🇷 Brazilmcp-nfe-br
🇫🇷 Francemcp-facture-electronique-fr
🇩🇪 Germanymcp-einvoicing-de
🇮🇳 Indiamcp-einvoicing-in
🇮🇹 Italymcp-fattura-elettronica-it
🇲🇽 Mexicomcp-cfdi-mx
🇵🇱 Polandmcp-ksef-pl
🇸🇬 Singaporemcp-invoicenow-sg
🇪🇸 Spainmcp-facturacion-electronica-es
🇦🇪 United Arab Emiratesmcp-einvoicing-ae

License

This project is licensed under the Apache 2.0 license — see LICENSE for details. For the full version history, see CHANGELOG.md.

Source: README.md at commit 2145e16

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.2.2LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts