{
  "markdown": "# mcp-einvoicing-in 🇮🇳\n\n[English](README.md) | [हिन्दी](README.hi.md)\n\n<!-- mcp-name: io.github.cmendezs/mcp-einvoicing-in -->\n\n![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)\n[![PyPI version](https://img.shields.io/pypi/v/mcp-einvoicing-in.svg)](https://pypi.org/project/mcp-einvoicing-in/)\n[![Python](https://img.shields.io/pypi/pyversions/mcp-einvoicing-in.svg)](https://pypi.org/project/mcp-einvoicing-in/) [![mcp-einvoicing-in MCP server](https://glama.ai/mcp/servers/cmendezs/mcp-einvoicing-in/badges/score.svg)](https://glama.ai/mcp/servers/cmendezs/mcp-einvoicing-in)\n\nA Python MCP server providing tools for Indian **GST e-invoicing**, per GSTN's **FORM GST INV-01\nschema v1.1** (CGST Act 2017 s.31 + CGST Rule 48(4), Notification No. 68/2019-Central Tax). It\nenables AI agents (Claude, IDEs) to build and structurally validate GST e-invoice JSON payloads\n(INV, CRN, DBN document types) and render an IRP-returned signed QR string as a displayable image.\n\n**Phase A scope.** This package covers offline payload building, structural validation, and GSTIN\ntax-identifier validation only. It does **not** submit to the Invoice Registration Portal (IRP) —\nlive submission (auth/token, generate-IRN, cancel-IRN) is a later phase, blocked on the NIC\ne-invoice API specification not yet being available to this project (see \"Spec availability\"\nbelow). See [Available tools](#available-tools) for exactly what is implemented today.\n\n---\n\n## Introduction\n\nThis package is built on [**mcp-einvoicing-core**](https://github.com/cmendezs/mcp-einvoicing-core),\nthe shared base library for e-invoicing MCP servers. It provides the `InvoiceDocument` model base\nand the `TaxIdentifier.validate_in_gstin` GSTIN validator.\n\n`mcp-einvoicing-core` is installed automatically as a dependency, no additional step is required.\n\nGST e-invoicing is a **clearance-model** system: an invoice becomes legally valid only once the\nIRP (Invoice Registration Portal, operated by NIC) validates the supplier's JSON payload and\nreturns an Invoice Reference Number (IRN), acknowledgement number/date, and a signed QR code\n(CGST Rule 48(4)/(5)). This package builds and structurally validates the request payload a\nsupplier would submit; it does not itself submit to the IRP (see \"Phase A scope\" above).\n\n## Installation\n\n### Via PyPI (recommended)\n\n```bash\npip install mcp-einvoicing-in\n```\n\nOr without prior installation using `uvx`:\n\n```bash\nuvx mcp-einvoicing-in\n```\n\n### From source\n\n```bash\ngit clone https://github.com/cmendezs/mcp-einvoicing-in.git\ncd mcp-einvoicing-in\npip install -e \".[dev]\"\n```\n\n## Configuration\n\nThis package requires no environment variables for its current (Phase A) scope — it performs no\nnetwork calls. Live IRP submission, once implemented, will require IRP/GSP credentials; this\nsection will be updated at that time.\n\n## Claude Desktop integration\n\nAdd to your Claude Desktop configuration file (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"einvoicing-in\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-einvoicing-in\"]\n    }\n  }\n}\n```\n\n## Cursor integration\n\nAdd the same `mcpServers` block to either:\n\n- Global: `~/.cursor/mcp.json`\n- Project-specific: `.cursor/mcp.json` in your project root\n\n```json\n{\n  \"mcpServers\": {\n    \"einvoicing-in\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-einvoicing-in\"]\n    }\n  }\n}\n```\n\nReload Cursor (or run \"Reload Window\" from the command palette) after saving.\n\n## Kiro integration\n\nAdd to either:\n\n- Global: `~/.kiro/settings/mcp.json`\n- Workspace: `.kiro/settings/mcp.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"einvoicing-in\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-einvoicing-in\"],\n      \"disabled\": false,\n      \"autoApprove\": []\n    }\n  }\n}\n```\n\nKiro reloads MCP configuration automatically on save. If a future version of this package\nrequires credentials, prefer `\"VAR_NAME\": \"${VAR_NAME}\"` shell-interpolation syntax over\nplaintext secrets in this file.\n\n## Available tools\n\n### Scope\n\n- `in__get_supported_scope` — returns the document types, supply types, and explicit\n  out-of-scope items this package currently supports.\n\n### Build and validate\n\n- `in__build_invoice` — validates structured input against `INInvoice` and builds a GST\n  e-invoice JSON payload (INV/CRN/DBN). Never emits `IRN` — that field is IRP-generated, never\n  supplier-populated.\n- `in__validate_invoice` — offline structural/business-rule validation: mandatory fields, enum\n  membership, CGST+SGST-vs-IGST pairing (item and document-total level), and GSTIN/state-code\n  consistency. There is no XSD/Schematron pass — FORM GST INV-01 is JSON, not XML.\n\n### QR\n\n- `in__render_irp_qr_png` — renders an IRP-returned signed QR string as a displayable PNG. Does\n  not decode or interpret the QR's content — the NIC e-invoice API spec that would document that\n  content is not yet available to this project (see \"Spec availability\" below).\n\n## Spec availability\n\nRetrieving current, exact NIC/GSTN technical specifications from outside India is unreliable: the\nGSTN enforces strict geographic firewalls that routinely block or rate-limit non-Indian IP\naddresses. This package was built entirely from specification documents supplied directly by the\nmaintainer (FORM GST INV-01 schema v1.1; CGST Notifications 68/2019-CT and 72/2020-CT; and\nNotification No. 10/2023-CT, confirming the current AATO mandate threshold) — no document was\nfetched from the internet by an automated agent. As a direct consequence:\n\n- **Not yet available to this project:** comprehensive list in\n  [`specs/README.md`](specs/README.md)'s \"Pending specs\" table.\n- Live IRP submission tools cannot be built responsibly without the NIC e-invoice API spec — see\n  \"Phase A scope\".\n\n**If you are based in India and can supply any of the documents listed there**, please open an issue\nusing the [Spec Update issue template](https://github.com/cmendezs/mcp-einvoicing-in/issues/new?template=spec-update.yml).\nThe template captures the document name, official source URL, version, and retrieval date; a\nfollow-up pull request then adds the file under `specs/` together with a sources-table entry and\na provenance/redistribution affirmation. See [CONTRIBUTING.md](CONTRIBUTING.md) for the full\ntwo-step flow.\n\n## Architecture\n\n`INInvoice` subclasses `InvoiceDocument` (`mcp_einvoicing_core.models`) — FORM GST INV-01 has no\nEN 16931/UBL/CII lineage (it is a flat JSON clearance-model schema), so this package follows the\n`InvoiceDocument` pathway, the same one used by `mcp-cfdi-mx` (CFDI) and `mcp-nfe-br` (NF-e).\n`INInvoiceLine` subclasses `InvoiceLineItem` to add the schema's GST/HSN/cess fields, which have\nno equivalent in the base line-item model. GSTIN fields are validated via\n`TaxIdentifier.validate_in_gstin`, called from `INInvoice`'s own model validators — this package\nnever reimplements identifier-validation logic locally. There is no Schematron/XSD validator\nlayer (`validators/structural.py` implements plain-Python business-rule checks instead), since\nthe wire format is JSON, not XML.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, the PR checklist, and commit style.\n\n## Other e-invoicing MCP servers\n\n| Country | Server |\n|---------|--------|\n| 🌍 Global | [mcp-einvoicing-core](https://github.com/cmendezs/mcp-einvoicing-core) |\n| 🇧🇪 Belgium | [mcp-einvoicing-be](https://github.com/cmendezs/mcp-einvoicing-be) |\n| 🇧🇷 Brazil | [mcp-nfe-br](https://github.com/cmendezs/mcp-nfe-br) |\n| 🇫🇷 France | [mcp-facture-electronique-fr](https://github.com/cmendezs/mcp-facture-electronique-fr) |\n| 🇩🇪 Germany | [mcp-einvoicing-de](https://github.com/cmendezs/mcp-einvoicing-de) |\n| 🇮🇳 India | [mcp-einvoicing-in](https://github.com/cmendezs/mcp-einvoicing-in) |\n| 🇮🇹 Italy | [mcp-fattura-elettronica-it](https://github.com/cmendezs/mcp-fattura-elettronica-it) |\n| 🇲🇽 Mexico | [mcp-cfdi-mx](https://github.com/cmendezs/mcp-cfdi-mx) |\n| 🇵🇱 Poland | [mcp-ksef-pl](https://github.com/cmendezs/mcp-ksef-pl) |\n| 🇸🇬 Singapore | [mcp-invoicenow-sg](https://github.com/cmendezs/mcp-invoicenow-sg) |\n| 🇪🇸 Spain | [mcp-facturacion-electronica-es](https://github.com/cmendezs/mcp-facturacion-electronica-es) |\n| 🇦🇪 United Arab Emirates | [mcp-einvoicing-ae](https://github.com/cmendezs/mcp-einvoicing-ae) |\n\n## License\n\nThis project is licensed under the **Apache 2.0** license — see [LICENSE](LICENSE) for details.\nFor the full version history, see [CHANGELOG.md](CHANGELOG.md).\n",
  "bytes": 8473,
  "sha": "3543af6085fcfd4979d87ec0c2539fd97cbcdc9c87802a4cf2af4014501c12d7",
  "repo_slug": "cmendezs/mcp-einvoicing-in",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_cmendezs_mcp_einvoicing_in_6bb5780c/readme"
}