Tally Prime MCP (模型上下文协议) 服务器实现,用于将 Tally Prime ERP 数据传输给支持 MCP 客户端的流行大语言模型(如 Claude、ChatGPT)。此 MCP 服务器帮助直接向大语言模型暴露 Tally 的功能。
确保以下内容已预安装并设置好:
TallyPrime 作为 = 服务器
端口 = 9000
注意:请避免使用教育版的 Tally Prime,因为它有日期范围限制。这会导致无效或部分数据被传递给大语言模型,从而导致高度降级且不正确的响应。
避免直接克隆仓库。工具可以在以下链接下载(包括所需依赖项)<br> https://excelkida.com/resource/tally-mcp-server-v5.zip
已在以下 AI 平台上测试过实现
| 平台 | 本地 | 远程 |
|---|---|---|
| Claude AI | :heavy_check_mark: | :heavy_check_mark: |
| ChatGPT | :heavy_check_mark: |
当 MCP 客户端(如 Claude Desktop、Perplexity 等)和 Tally Prime 都存在于本地 PC 上时,应使用此模式进行设置。在这种情况下,MCP 客户端软件本身会内部运行 MCP 服务器。
只需下载并解压到磁盘上的某个位置。假设我们将其下载并解压到了以下路径(文件夹)
D:\Software\Tally MCP Server
演示了几个流行工具的一些设置示例。
Claude AI 桌面版支持加载本地 MCP 服务器。确保您拥有 Claude 的 Pro / Team / Max / Enterprise 订阅,这些订阅相比免费版支持更高的限制。MCP 对 Tally 多次调用以进行验证和推理,可能会快速耗尽免费限额。从以下链接下载 Claude Desktop claude.ai/download
进入菜单 > 文件 > 设置 > 开发者
这将打开我的电脑窗口。右键点击并编辑 claude_desktop_config.json 文件(通过记事本),如下所示的 JSON
{
"mcpServers": {
"Tally Prime": {
"command": "node",
"args": ["D:\\Software\\Tally MCP Server\\dist\\index.mjs"]
}
}
}
注意:文件夹路径中的单斜杠需要替换为双斜杠
保存文件。关闭 Claude Desktop(菜单 > 文件 > 退出)并重新启动它。
通过点击工具按钮并检查 Tally Prime 是否出现在列表中来验证(如下截图)
Perplexity Desktop 版本(适用于 MacOS)支持连接到本地 MCP 服务器。配置文件(JSON 格式)与 Claude Desktop 所示相同。由于没有 MacBook,无法提供带截图的文档。请参阅以下 Perplexity 网站上的博客,了解步骤说明。
当使用基于浏览器的 MCP 客户端(如 ChatGPT、Claude AI、Copilot)或这些大语言模型的移动应用时,这些客户端无法访问本地 PC 中运行的 Tally Prime。在这种情况下,MCP 服务器需要作为 Web 服务器运行,并且内部安全地连接到 Tally。设置较为复杂,详情在项目中的 docs 文件夹中有详细介绍。
提取特定主表的列表,用于自动补全和验证主表是否存在,以便大语言模型进行推理
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
| collection | 有效的 Tally 集合 |
输出 查询主表的列表(或数组)
可以查询的集合:
提取账户表(或组层次结构),有助于准备资产负债表、利润和损失表、试算平衡表
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
输出 具有以下列的表格输出
| 列 | 描述 |
|---|---|
| group | 分类账名称 |
| parent | 分类账所在的组 |
| bs_pl | BS(资产负债表)/ PL(利润和损失) |
| dr_cr | D(借方)/ C(贷方) |
| affects_gross_profit | Y(是)/ N(否) |
提取指定期间的试算平衡表
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
| fromDate | 期间开始日期(用于期初余额) |
| toDate | 期间结束日期(用于期末余额) |
输出 具有以下列的表格输出
| 列 | 描述 |
|---|---|
| ledger | 分类账名称 |
| group | 分类账所在的组 |
| opening_balance | 指定 fromDate 的期初余额 |
| net_debit | 指定期间内的净借方 |
| net_credit | 指定期间内的净贷方 |
| closing_balance | 指定 fromDate 的期末余额 |
提取截至某日的资产负债表
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
| toDate | 资产负债表的截至日期 |
输出 具有以下列的表格输出
| 列 | 描述 |
|---|---|
| ledger | 分类账名称 |
| group | 分类账所在的组 |
| closing_balance | 截至日期的期末余额 |
提取指定期间的利润和损失表
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
| fromDate | 期间开始日期 |
| toDate | 期间结束日期 |
输出 具有以下列的表格输出
| 列 | 描述 |
|---|---|
| ledger | 分类账名称 |
| group | 分类账所在的组 |
| amount | 净活动金额(负数 = 费用 / 正数 = 收入) |
返回指定日期的分类账期末余额
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
| ledgerName | 要查询余额的分类账名称 |
| toDate | 具体日期的期末余额 |
输出 分类账的期末余额(如果存在)
| 符号 | 描述 |
|---|---|
| 负数 (-) | 借方 |
| 正数 (+) | 贷方 |
注意:如果指定的分类账不存在,大语言模型可能会调用 list-master 工具来获取分类账列表。它将尝试找到最接近的分类账名称并重新执行此操作。这可能会产生不可预测的响应。
提取指定分类账在给定期间的账户
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
| ledgerName | 要查询余额的分类账名称 |
| fromDate | 期间开始日期 |
| toDate | 期间结束日期 |
输出 具有以下列的表格输出
| 列 | 描述 |
|---|---|
| date | 凭证日期 |
| voucher_type | 凭证类型 |
| voucher_number | 凭证编号 |
| party_ledger | 对方分类账或相反侧分类账 |
| amount | 金额(负数 = 借方 / 正数 = 贷方) |
| narration | 凭证的备注 |
返回指定日期的存货项目的可用数量
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
| itemName | 要查询可用数量的存货项目名称 |
| toDate | 具体日期的可用数量 |
输出 存货项目的可用数量(如果存在)
注意:如果指定的存货项目不存在,大语言模型可能会调用 list-master 工具来获取存货项目列表。它将尝试找到最接近的存货项目名称并重新执行此操作。这可能会产生不可预测的响应。
提取指定存货项目在给定期间的账户报表
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
| itemName | 要查询余额的存货项目名称 |
| fromDate | 期间开始日期 |
| toDate | 期间结束日期 |
输出 具有以下列的表格输出
| 列 | 描述 |
|---|---|
| date | 凭证日期 |
| voucher_type | 凭证类型 |
| voucher_number | 凭证编号 |
| party_ledger | 对方分类账或相反侧分类账 |
| quantity | 数量(负数 = 发出 / 正数 = 收入) |
| amount | 金额(负数 = 借方 / 正数 = 贷方) |
| narration | 凭证的备注 |
| tracking_number | 跟踪号,用于忽略实际购买(针对收货单)和销售(针对发货单)中的超额/缺失数量,以核对待收数量 |
提取按发票的应收账款/应付账款报告
输入
| 参数 | 描述 |
|---|---|
| targetCompany (可选) | Tally 中目标公司的公司名称。跳过此参数默认为活动公司 |
| nature | 应收账款 / 应付账款 |
| toDate | 截至日期的未结状态 |
输出 具有以下列的表格输出
| 列 | 描述 |
|---|---|
| date | 采购/销售发票日期 |
| reference_number | 采购/销售发票的发票编号 |
| outstanding_amount | 截至日期的未结金额 |
| party_name | 对方分类账名称 |
| overdue_days | 发票逾期天数 |
项目开发及维护人:Dhananjay Gokhale
邮箱:info@excelkida.com <br> WhatsApp:(+91) 90284-63366