kingdee_star
Enables read-only access to Kingdee Cloud Star financial data, invoice tax calculation, and generation of reimbursement draft payloads through MCP tools.
README
kingdee_star —— 金蝶云星辰 MCP Server
GC032 财务智能体 · 金蝶端(钉钉侧已由钉钉 MCP 打通,本仓库只做金蝶)。 对齐需求 v2.1:一期只读 + 发票税额计算 + 报销单待录入报文生成。
v0.2.0 重要变更:鉴权、端点、税额引擎均已按官方文档与沙箱实测重写。 v0.1.0 的端点常量(
/finance/expense一类)在真实网关上并不存在,请勿沿用。
目录
kingdee_star/
├── kingdee_star/
│ ├── config.py # 环境/凭据(两层:ISV + 租户),只读/写开关
│ ├── signer.py # jdy 网关签名(X-Api-Signature / app_signature)
│ ├── models.py # Invoice / ExpenseDraft / ExpenseLine
│ ├── tax_engine.py # 发票税额决策树(专票/铁路/航空/旅客运输/公路水路/其他)
│ ├── guards.py # 只读守卫 + 受控写入守卫(白名单+默认拒绝)+ 审计
│ └── star_client.py # 鉴权 + 只读查询 + 报销报文生成
├── test_connection.py # 分层联调测试(配置→网络→鉴权→只读→dry-run)
├── run_test.bat # Windows 一键跑:装依赖 + 单测 + 联调
├── tests/ # pytest:税额引擎 + 签名算法
└── .env.example # 配置模板
鉴权(两层凭据,别搞混)
| 层 | 取值 | 用途 |
|---|---|---|
| ISV 应用 | JDY_CLIENT_ID / JDY_CLIENT_SECRET |
X-Api-ClientID 头 + X-Api-Signature 的 HMAC 密钥 |
| 租户账套 | JDY_APP_KEY / JDY_APP_SECRET |
计算 app_signature,换 app-token |
链路:
POST /jdyconnector/app_management/push_app_authorize?outerInstanceId=...
→ data[0].appKey / appSecret
GET /jdyconnector/app_management/kingdee_auth_token?app_key=..&app_signature=..
→ data['app-token'](有效期约 2h)
GET /jdy/v2/{module}/{object}
→ 头带 app-token + X-Api-* 签名 + X-GW-Router-Addr
三个容易踩的坑(signer.py 已处理,改动前先看注释):
hash_hmac(..., raw_output=false)返回 hex 字符串,base64 的输入是这个 hex,不是 raw digest。- 待签名串里的头名是小写,且 nonce 在前、timestamp 在后,与
X-Api-SignHeaders声明的顺序相反;末尾还有一个换行。 X-GW-Router-Addr(取推送报文里的domain,如https://tf.jdy.com)是全局必填头,官方文档 370 个接口全部标注必填。
快速开始
pip install -r requirements.txt
cp .env.example .env # 填入凭据
pytest -q # 单测应全绿
python test_connection.py # 联调:配置→网络→鉴权→只读→dry-run
Windows 直接双击 run_test.bat(结果写入 connection_test_result.txt)。
作为 MCP Server 使用
python -m kingdee_star.server # stdio
把 mcp.config.json 里的 kingdee-star 合并进客户端 mcpServers 配置(改 cwd 与 env)。
兼容 mcp 1.x 与 2.x 两个大版本。
工具清单(17)
| 类别 | 工具 | 端点 |
|---|---|---|
| 元/鉴权 | kdy_health kdy_auth_fetch_token |
— |
| 探针 | kdy_current_user |
sys/current_user_info |
| 只读·科目 | kdy_list_account kdy_list_account_type |
fi/account fi/account_type |
| 只读·凭证 | kdy_list_voucher kdy_get_voucher |
fi/voucher fi/voucher_detail |
| 只读·发票 | kdy_list_invoice kdy_get_invoice |
fi/invoice_fp fi/invoice_detail |
| 只读·收付 | kdy_list_ar_receive kdy_list_ap_pay |
arap/ar_credit arap/ap_credit |
| 只读·往来 | kdy_reconciliation kdy_customer_debt |
arap/reconciliation_statement arap/customer_debt |
| 只读·报销 | kdy_get_reimb_detail kdy_list_expense |
ebx/reimb_detail(列表接口不存在) |
| 计算 | kdy_calc_invoice_tax |
本地,不调金蝶 |
| 报文生成 | kdy_fill_reimbursement |
仅 dry-run,见下 |
销项/进项发票不是两个端点,用
fi/invoice_fp的bill_type/invoice_type过滤。
⚠ 报销写入的现实约束
官方开放平台共 370 个接口,ebx 模块只有「报销单详情」一个 GET,
既没有报销单列表,也没有任何报销单保存接口。
因此需求 v2.1 里的「发票代填报销单草稿」无法通过开放 API 落库:
kdy_fill_reimbursement只产出已算好税额、已过合规校验的待录入报文,dry_run=False会被显式拒绝。- 要真正自动写入,只能走非开放-API 通道(RPA / 前端接口 / 找金蝶开定制接口)。
安全边界
JDY_READONLY=true→ 纯只读。- 守卫层为白名单 + 默认拒绝:路径变形(尾斜杠、子路径、大小写)均无法绕过。
- 付款/凭证/科目写入、报销提交审批 → 永久禁止(
FORBID_ENDPOINTS),人工执行。 - 全量审计:
kingdee_star.audit日志。
税额引擎
| 票种 | 口径 |
|---|---|
| 专票 | 取票面税额与不含税金额 |
| 旅客运输(列示税额) | 取票面税额;缺 face_tax 显式报错,不静默降档 |
| 铁路 | ÷1.09×9% |
| 航空 | (票价+燃油附加费)÷1.09×9%,校验用 taxable_base() 而非 total |
| 公路/水路 | ÷1.03×3% |
| 其他普票 | 不可抵扣;若票面已列税额会抛提示要求人工确认票种 |
旅客运输抵扣缺出行人 → 合规校验置为不可抵扣。负数(红字)发票直接拒绝。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。