TallyMind
БесплатноНе проверенAn MCP server for TallyPrime ERP that fixes common gaps such as hardcoded localhost, lack of connection diagnostics and dry-run safety, missing GST tools, and s
Описание
An MCP server for TallyPrime ERP that fixes common gaps such as hardcoded localhost, lack of connection diagnostics and dry-run safety, missing GST tools, and session state loss, providing a smoother integration with Claude Desktop.
README
Hand Claude a folder of invoices, bills, and bank statements. It drafts GST-correct Tally vouchers, shows you the entire batch before touching anything, and posts only what you approve. Then ask it anything about the books, in plain English.
- Documents in, vouchers out. PDFs, scanned images, Excel/CSV bank statements — classified, GST-split, and drafted as review-ready Tally vouchers.
- Books in, plain English out. Trial Balance, P&L, Day Book, outstanding bills, GSTR-1/3B — ask instead of clicking through Tally's menus.
- Nothing posts on its own. Every single write is preview-first: Claude shows you the exact change and waits for your go-ahead before anything reaches Tally.
tally-plugins is free, open-source, and installs as one Claude plugin — skills, config, and the
small local program that talks to Tally, all together. Nothing about your books is sent anywhere
except the Claude conversation you're having.
irm https://raw.githubusercontent.com/Wadhawnaiya/tally-plugins/main/install.ps1 | iex
That one line gets Claude talking to Tally. To also get the two skills that teach Claude the procedure — document-to-voucher drafting, GST conventions, the preview-then-confirm discipline — install the full plugin bundle; see Install for both routes.
Contents
- Why this exists
- The accounting workflow
- What it handles
- What makes TallyMind different
- What data it can see and touch inside Tally
- Requirements
- Install
- Check it's working
- Example things to ask
- How the safety model works
- Full capability reference
- Troubleshooting
- Under the hood
- Development
- License
Why this exists
TallyPrime doesn't talk to AI assistants on its own, and turning a client's raw paperwork into
correctly-coded vouchers is normally an hour of manual data entry per client per period. A handful
of open-source bridges between Tally and AI tools already exist, but every one we could find
shares the same rough edges: hardcoded to localhost (breaks the moment Tally runs on a different
office PC), no way to tell why a connection failed, nothing built for GST work specifically,
session settings that reset on every restart, and — worst of all for a non-developer — an install
that means downloading a zip and hand-editing a JSON config file, backslash escaping and all.
TallyMind fixes all of that, does the document-to-voucher drafting work that used to be manual, and is free for anyone to use, fork, or build on.
The accounting workflow
This is the whole pipeline, from a client's folder of paperwork to a reviewed, posted entry in Tally:
flowchart TD
subgraph DOCS["Client's raw paperwork"]
direction LR
A1[Invoices]
A2[Purchase bills]
A3[Bank statement]
A4[Cash receipts]
A5[Credit / debit notes]
end
DOCS --> READ[["Read & classify<br/>PDF · scans · Excel/CSV"]]
READ --> EXTRACT[["Extract the transaction<br/>date · party · amount · GST split"]]
EXTRACT --> CHECK{Ledger already<br/>exists in Tally?}
CHECK -- fuzzy match found --> REUSE[Reuse the exact<br/>existing ledger]
CHECK -- nothing matches --> DRAFT[["Draft a new ledger"]]
REUSE --> BUILD[["Build the voucher entries,<br/>correct GST legs and sign convention"]]
DRAFT --> BUILD
BUILD --> BATCH["One consolidated batch,<br/>shown to you for review"]
BATCH -- correction needed --> EXTRACT
BATCH -- you approve --> CONFIRM[["Confirm — the only step<br/>that writes to Tally"]]
CONFIRM --> TALLY[(TallyPrime)]
TALLY --> VERIFY["Verify: Day Book · Trial Balance ·<br/>Outstanding · GSTR-1/3B"]
Step by step:
- Read. Point Claude at a folder — PDFs and scanned images are read natively (no OCR step), CSVs are read as-is, and Excel files are converted with a dependency-free script.
- Classify & extract. Each document is matched to a voucher type (sales invoice, purchase bill, bank line, receipt, credit/debit note) and its transaction data is pulled out — date, party, amounts, and the correct CGST/SGST-vs-IGST split.
- Resolve ledgers. Every party, tax, and expense ledger a transaction touches is looked up by fuzzy name first. An existing ledger is reused exactly as spelled in Tally; only a genuinely missing ledger gets drafted.
- Build the entries. Debit/credit legs are assembled with the correct sign convention and GST treatment, one voucher per transaction.
- One batch, one review. Every drafted ledger and voucher — GST split, party, amount, narration — lands in a single table before anything is confirmed. A transaction that can't be confidently matched to a party (e.g., a bank line naming nobody in the batch) is flagged as unresolved, never silently posted as a guess.
- Confirm what you approved. Ledgers post before vouchers that reference them; each item is confirmed individually and reported back individually — one failure never hides inside an overall "done."
- Verify. Ask about the Day Book, Trial Balance, or a party's outstanding balance to confirm the batch landed the way you expected.
The preview → confirm step in the middle is the one safety-critical moment, so it's worth seeing on its own:
sequenceDiagram
participant You
participant Claude
participant Connector as TallyMind connector
participant Tally as TallyPrime
You->>Claude: "Process this client's documents"
Claude->>Connector: preview_voucher(...) / preview_ledger_change(...)
Connector-->>Claude: preview_id + the exact entries — nothing sent to Tally yet
Claude->>You: Shows the full batch for review
You->>Claude: "Confirmed, post it"
Claude->>Connector: confirm_import(preview_id)
Connector->>Tally: Posts the voucher
Tally-->>Connector: Success
Connector-->>Claude: Posted
Claude->>You: Reports what posted — and what didn't, and why
A preview_id is single-use — replaying an old or invalid one fails rather than silently
reposting, and anything you didn't approve simply expires unconfirmed.
What it handles
| Client's document | Tally voucher | GST treatment |
|---|---|---|
| Sales invoice | Sales |
CGST+SGST (intra-state) or IGST (inter-state), booked as output tax |
| Purchase bill | Purchase |
GST booked to an Input ledger, recoverable via input credit |
| Bank line — money in | Receipt |
Matched to the customer ledger; which specific invoice it settles is flagged for manual bill-matching in Tally |
| Bank line — money out | Payment |
Matched to a vendor ledger, or booked straight to an expense head |
| Cash expense receipt | Payment |
Usually no GST (unregistered supplier) |
| Credit note | Credit Note |
Reverses the sale and its output GST |
| Debit note | Debit Note |
Reverses the purchase and its input GST |
| Bank ↔ cash transfer | Contra |
No GST — internal transfer between own accounts |
| Accountant's own adjustment | Journal |
No GST — reclassification only |
Full worked examples (exact entries, sign convention, GST split arithmetic) live in cowork-plugin/skills/tally-doc-import/references/voucher-mapping.md, and ledger-naming/parent-group conventions in references/gst-and-ledgers.md. Try the whole thing risk-free with the bundled demo client before pointing it at real books.
What makes TallyMind different
| Most existing Tally MCP servers | TallyMind | |
|---|---|---|
| Install | Download a zip, manually edit claude_desktop_config.json, restart Claude |
One PowerShell command does everything |
| Connecting to Tally on another PC | Hardcoded to localhost — breaks if Tally is on a different machine |
Host and port are configurable (set_connection) |
| When something's wrong | A raw connection error, or silently wrong data | tally_doctor tells you plainly what's broken and how to fix it |
| Posting entries | Often "just does it," or leaves safety entirely up to you remembering to back up first | Every write is preview-first: nothing touches Tally until you explicitly confirm |
| Client document → voucher drafting | Not covered — you type every entry by hand | tally-doc-import reads a folder of paperwork and drafts the whole batch |
| GST work | Not covered | Dedicated GSTR-1/GSTR-3B and mismatch-review tools |
| Restarting the server | Forgets which company/connection you were using | Remembers your last connection and company automatically |
| Finding a ledger by a rough name | You have to know the exact spelling | Fuzzy search — "VRO" finds "VRO Technology" |
What data it can see and touch inside Tally
This matters more than almost anything else in this document, so it gets its own section.
- TallyMind only ever talks to the TallyPrime instance you point it at, over TallyPrime's own
built-in HTTP/XML interface (the same interface Tally's official developer tools use). By
default that's
localhost:9000— your own computer, nothing external. - Nothing about your Tally data is sent anywhere except to the Claude conversation you're having. There is no cloud relay, no third-party server, no telemetry. It's a small program that runs entirely on your machine.
- Read access: whatever company is currently open/loaded in TallyPrime — its ledgers, vouchers, Balance Sheet, Profit & Loss, Trial Balance, Day Book, Stock Summary, outstanding bills, and (best-effort — see below) GST return data. It cannot see companies you haven't opened, and it cannot see anything Tally itself wouldn't show to whatever user account Tally is running as.
- Write access is real but gated. Ledgers and vouchers can be created or altered — but never in one step. Every write is a two-stage preview, then confirm: the preview builds the exact change and shows it to you first, and nothing is sent to Tally until you (or Claude, on your explicit instruction) call confirm with that specific preview. There is no tool that mutates Tally data in a single call.
- GST reporting is honestly best-effort. TallyPrime doesn't publicly document the exact data
format its GST reports return over this interface, so these tools are marked
best_effortin their own output and come with a note to cross-check against Tally's own GST screens — it will not pretend to a level of certainty it doesn't have. - You control the scope.
set_connectionandset_companypoint at exactly the Tally instance and company you intend — nothing happens automatically in the background.
Requirements
- TallyPrime, Silver or Gold edition — not the Educational edition, which silently truncates date ranges and will feed Claude plausible-looking but wrong numbers.
- Tally's HTTP/XML gateway enabled: in TallyPrime, go to F1 (Help) → Settings → Connectivity →
Client/Server configuration, set "TallyPrime acts as" to Server (or Both), and note
the port (default
9000). - Windows, since TallyPrime itself only runs on Windows.
- Claude Desktop and/or Claude Code, installed on the same PC as TallyPrime.
Install
There are two routes in, and they're complementary rather than either/or — most people want both.
Route 1: get Claude talking to Tally (PowerShell, one line)
Open TallyPrime, load your company, and make sure the gateway setting above is on. Then open PowerShell and run:
irm https://raw.githubusercontent.com/Wadhawnaiya/tally-plugins/main/install.ps1 | iex
Here's exactly what that one line does, step by step, so nothing is a mystery:
- Checks for Python 3.10+. If it's missing, installs it automatically via
winget. - Installs TallyMind itself (
pip install, straight from this repository). - Looks for your running Tally gateway at
localhost:9000. If it doesn't find one, it asks you once for the right port rather than failing silently. - Registers TallyMind with Claude Desktop by safely reading and rewriting
claude_desktop_config.json— your existing config is backed up first, and the file is only ever edited through proper JSON parsing, never by pasting text into it, so it can't get corrupted the way hand-editing sometimes does. - Registers with Claude Code too, if you have it installed.
- Runs a connection self-test and tells you plainly whether everything is ready.
When it finishes, fully quit Claude Desktop (from the system tray, not just closing the window) and reopen it, so it picks up the new server.
This route gets you the raw tools (tally_doctor, list_ledgers, preview_voucher, and so on) —
enough for Claude to read and write your books if you describe what you want in detail.
Route 2: the full plugin bundle (skills included)
The two Claude skills — tally-mind and tally-doc-import — are what teach Claude the actual
procedure: which order to call things in, the sign convention for voucher entries, GST ledger
conventions, the preview-then-confirm discipline. They ship as cowork-plugin/ in this repo,
pre-packaged as a zip containing the plugin manifest, both skills, and their supporting
scripts/references together.
1. Download the bundle:
tallymind-cowork-plugin-v0.2.0.zip
2. Install it, however you use Claude:
Cowork or Claude Desktop — go to Customize → Plugins, use the option to install/upload a plugin from a file, and point it at the zip you just downloaded.
Claude Code — Code installs plugins from a marketplace source rather than a raw zip. Unzip the download into its own folder, then add a small
marketplace.jsonnext to it:{ "name": "tallymind-marketplace", "plugins": [ { "name": "tallymind", "source": { "type": "directory", "path": "./tallymind-cowork-plugin-v0.2.0" } } ] }Then, inside Claude Code:
/plugin marketplace add /path/to/marketplace.json /plugin install tallymind
Either way, this is what actually gets you tally-doc-import's document-to-voucher workflow, not
just the bare tools from Route 1 — and since TallyPrime only ever listens on the PC it's running
on, the tallymind connector itself still needs Route 1 run on that same Windows machine.
Try it without a real client's documents
demo/ ships a complete fictitious client — invoices, bills, a credit note, a debit note, a cash
receipt, and a bank statement — sized to exercise every voucher type tally-doc-import handles,
including one deliberately unresolved bank line to prove nothing gets guessed. Point it at a
throwaway/test Tally company, not real books, and follow demo/README.md
end to end: process the folder, review the batch, confirm, then check the result with
tally-mind.
Check it's working
Ask Claude:
Using TallyMind, run tally_doctor and tell me if I'm connected.
You should get back a plain-language status: whether Tally is reachable, whether a company is loaded, and a reminder about the Educational-edition caveat above.
Example things to ask
- "Process the invoices and bank statement in C:\Clients\VRO Technology\July, then show me the batch before posting anything."
- "Using TallyMind, what's my Trial Balance look like right now?"
- "Which ledgers have unusually large closing balances?"
- "Show me overdue debtors past 90 days."
- "Pull the GSTR-1 and GSTR-3B summary for April 2026 and the Day Book for the same period so I can compare them."
- "Preview a sales voucher dated today for ₹10,000 against VRO Technology, then show me the preview before you touch anything."
How the safety model works
Every tool that only reads data runs freely — there's nothing to protect there. Every tool that writes data works in two separate steps, shown in the sequence diagram above:
- Preview (
preview_ledger_changeorpreview_voucher) builds the exact XML that would be sent to Tally and hands back apreview_id. Nothing has touched Tally yet. - Confirm (
confirm_import) is the only tool that actually posts to Tally, and it requires that exactpreview_id. A preview can only ever be confirmed once — replaying an old or invalid ID fails rather than silently reposting.
As always with accounting software: this produces a review-ready change, not a replacement for a qualified professional's review before anything is finalized for compliance or client reporting purposes.
Full capability reference
Claude picks the right tool from plain English — you don't need to know these names — but the full list is here for anyone who wants it.
Expand for all 20 tools, grouped by purpose
Check the connection
tally_doctor— is Tally reachable, is a company loaded, plus an honest reminder to confirm you're not on the Educational edition.set_connection— point at a specific Tally host/port instead of the defaultlocalhost:9000.set_company— set which company subsequent questions apply to.
Read your books
list_companies,list_ledgers(with fuzzy name search),get_ledger,list_vouchersget_balance_sheet,get_profit_and_loss,get_trial_balance,get_day_book,get_stock_summary,get_outstanding(overdue receivables/payables)
GST
get_gstr1_summary,get_gstr3b_summary— best-effort GSTR summaries for a periodfind_gst_mismatches— pulls the GST return summary and the Day Book for the same period side by side, so a CA can spot-check them together, rather than fabricating a false-confidence "mismatches found" count Tally's data doesn't reliably support yet
Make changes (always preview first)
preview_ledger_change/preview_voucher— build the exact change, return a preview ID, touch nothingconfirm_import— the only tool that actually writes to Tally, and only with a valid preview ID
Escape hatch
raw_gateway_request— send a raw XML request directly, for anything the above doesn't cover
Document import (tally-doc-import skill, orchestrates the tools above)
- Reads a folder of mixed-format documents, classifies each one, extracts the transaction, and
drives
preview_ledger_change/preview_voucher/confirm_importfor the whole batch. See The accounting workflow for the full procedure andcowork-plugin/skills/tally-doc-import/SKILL.mdfor the source of truth.
Troubleshooting
"TallyPrime XML gateway unavailable" — Open TallyPrime, load a company, and confirm
F1 → Settings → Connectivity → Client/Server is set to Server or Both with the right port.
Run tally_doctor again after fixing this.
Claude doesn't see the TallyMind tools at all — Make sure you fully quit and reopened Claude Desktop after installing (a window close isn't enough — quit from the system tray).
Installer says Python or winget isn't available — Install Python 3.10+ manually from python.org, then re-run the install command.
Under the hood
The two skills never talk to Tally directly. Every read and every write goes through a small,
local MCP (tally-plugins implements the Model Context Protocol)
server, tallymind, that gives Claude a guarded connection to TallyPrime's own HTTP/XML gateway.
tally-doc-import orchestrates it for document batches; tally-mind calls it directly for
conversational reading and writing. It's an implementation detail rather than something you need
to interact with — the workflow above is what actually matters day to day.
Claude <── plain English ──> You
│
│ MCP tool calls (preview → confirm)
▼
tallymind (local process)
│
│ HTTP/XML, localhost by default
▼
TallyPrime
Repo layout, in brief:
cowork-plugin/— the installable plugin: the manifest (.claude-plugin/plugin.json), MCP server config, and both skills (tally-mind,tally-doc-import) with their reference docs and scripts.src/tallymind/— the MCP server itself (connection/session state, fuzzy ledger search, reports, guarded writes, diagnostics).demo/— the fictitious client used to try the whole workflow end to end.install.ps1— the one-line Windows installer.dist/— the pre-packaged plugin bundle zip (see Route 2) — rebuild it by zippingcowork-plugin/'s contents whenever the skills or manifest change.
Development
pip install -e ".[dev]"
pytest
install.ps1 is Windows-only and can't be exercised in a Linux dev environment — review it
manually and test it on a real Windows + TallyPrime machine before trusting changes to it.
License
MIT — free for anyone to use, modify, and distribute, commercially or otherwise.
Установка TallyMind
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/Wadhawnaiya/tally-pluginsFAQ
TallyMind MCP бесплатный?
Да, TallyMind MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для TallyMind?
Нет, TallyMind работает без API-ключей и переменных окружения.
TallyMind — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить TallyMind в Claude Desktop, Claude Code или Cursor?
Открой TallyMind на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzCompare TallyMind with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai
