Skip to main content
Glama
adambbhe

kingdee_star

by adambbhe

kingdee_star —— Kingdee Cloud MCP Server

GC032 Finanz-Agent · Kingdee-Seite (die DingTalk-Seite ist bereits über DingTalk MCP angebunden, dieses Repository macht nur Kingdee). Abgestimmt auf Anforderung v2.1: Phase 1 nur lesend + Rechnungssteuerberechnung + Erzeugung von Meldungen für noch zu erfassende Spesenabrechnungen.

Wichtige Änderung in v0.2.0: Authentifizierung, Endpunkte und Steuer-Engine wurden gemäß offizieller Dokumentation und Sandbox-Tests neu geschrieben. Die Endpunkt-Konstanten aus v0.1.0 (wie /finance/expense) existieren auf dem echten Gateway nicht, bitte nicht weiterverwenden.

Inhaltsverzeichnis

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         # 配置模板

Related MCP server: QuickBooks Online MCP Server

Authentifizierung (zwei Ebenen von Anmeldedaten, nicht verwechseln)

Ebene

Wert

Verwendung

ISV-App

JDY_CLIENT_ID / JDY_CLIENT_SECRET

X-Api-ClientID-Header + HMAC-Schlüssel für X-Api-Signature

Mandanten-Kontenrahmen

JDY_APP_KEY / JDY_APP_SECRET

Berechnung von app_signature, Austausch gegen app-token

Kette:

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

Drei häufige Stolperfallen (in signer.py bereits behandelt, vor Änderungen zuerst die Kommentare lesen):

  1. hash_hmac(..., raw_output=false) liefert einen Hex-String zurück, die Base64-Eingabe ist dieser Hex-String, nicht der rohe Digest.

  2. Die Header-Namen in der zu signierenden Zeichenkette sind kleingeschrieben, und die nonce steht vorne, der timestamp hinten – entgegengesetzt zur Reihenfolge, die in X-Api-SignHeaders deklariert ist; am Ende steht zusätzlich ein Zeilenumbruch.

  3. X-GW-Router-Addr (aus dem domain-Feld der Push-Meldung, z. B. https://tf.jdy.com) ist ein global verpflichtender Header – in der offiziellen Dokumentation sind alle 370 Schnittstellen als Pflichtfeld markiert.

Schnellstart

pip install -r requirements.txt
cp .env.example .env        # 填入凭据
pytest -q                   # 单测应全绿
python test_connection.py   # 联调:配置→网络→鉴权→只读→dry-run

Unter Windows einfach run_test.bat doppelklicken (Ergebnis wird in connection_test_result.txt geschrieben).

Verwendung als MCP Server

python -m kingdee_star.server        # stdio

kingdee-star aus mcp.config.json in die mcpServers-Konfiguration des Clients übernehmen (cwd und env anpassen). Kompatibel mit den beiden Hauptversionen mcp 1.x und 2.x.

Werkzeugliste (17)

Kategorie

Werkzeug

Endpunkt

Meta/Authentifizierung

kdy_health kdy_auth_fetch_token

Sonde

kdy_current_user

sys/current_user_info

Nur lesen·Konten

kdy_list_account kdy_list_account_type

fi/account fi/account_type

Nur lesen·Belege

kdy_list_voucher kdy_get_voucher

fi/voucher fi/voucher_detail

Nur lesen·Rechnungen

kdy_list_invoice kdy_get_invoice

fi/invoice_fp fi/invoice_detail

Nur lesen·Zahlungen

kdy_list_ar_receive kdy_list_ap_pay

arap/ar_credit arap/ap_credit

Nur lesen·Geschäftsbeziehungen

kdy_reconciliation kdy_customer_debt

arap/reconciliation_statement arap/customer_debt

Nur lesen·Spesen

kdy_get_reimb_detail kdy_list_expense

ebx/reimb_detail (Listen-Endpunkt existiert nicht)

Berechnung

kdy_calc_invoice_tax

lokal, ruft Kingdee nicht auf

Meldungserzeugung

kdy_fill_reimbursement

nur dry-run, siehe unten

Ausgangs-/Eingangsrechnungen sind nicht zwei Endpunkte, sondern werden über bill_type / invoice_type von fi/invoice_fp gefiltert.

⚠ Realistische Einschränkungen beim Schreiben von Spesenabrechnungen

Die offizielle offene Plattform umfasst insgesamt 370 Schnittstellen, das ebx-Modul hat nur ein einziges GET für „Spesenabrechnungsdetails", es gibt weder eine Spesenabrechnungsliste noch irgendeine Schnittstelle zum Speichern von Spesenabrechnungen.

Daher kann das „automatische Ausfüllen von Spesenabrechnungsentwürfen mit Rechnungen" aus Anforderung v2.1 nicht über die offene API in der Datenbank gespeichert werden:

  • kdy_fill_reimbursement erzeugt nur Meldungen mit bereits berechneter Steuer und bestandener Compliance-Prüfung, dry_run=False wird explizit abgelehnt.

  • Für eine echte automatische Übernahme bleibt nur der Weg über nicht-offene API-Kanäle (RPA / Frontend-Schnittstellen / bei Kingdee eine kundenspezifische Schnittstelle anfragen).

Sicherheitsgrenzen

  • JDY_READONLY=true → rein lesend.

  • Die Schutzschicht ist Whitelist + Standard-Ablehnung: Pfadmanipulationen (nachgestellter Schrägstrich, Unterpfade, Groß-/Kleinschreibung) können nicht umgangen werden.

  • Zahlungen/Belege/Konten schreiben, Spesenabrechnungen zur Genehmigung einreichen → dauerhaft verboten (FORBID_ENDPOINTS), nur manuell auszuführen.

  • Vollständige Prüfung: kingdee_star.audit-Log.

Steuer-Engine

Rechnungsart

Berechnungsmethode

Sonderrechnung (MwSt.)

Steuerbetrag und Nettobetrag von der Rechnung übernehmen

Personenbeförderung (mit ausgewiesenem Steuerbetrag)

Steuerbetrag von der Rechnung übernehmen; fehlendes face_tax führt zu explizitem Fehler, keine stille Herabstufung

Bahn

÷1,09×9%

Flug

(Ticketpreis+Kraftstoffzuschlag)÷1,09×9%, Prüfung mit taxable_base() statt total

Straße/Wasser

÷1,03×3%

Sonstige Normalrechnungen

Nicht abzugsfähig; wenn ein Steuerbetrag ausgewiesen ist, wird ein Hinweis zur manuellen Bestätigung der Rechnungsart ausgegeben

Fehlt bei der Personenbeförderung die reisende Person → Compliance-Prüfung setzt auf nicht abzugsfähig. Negative (rote) Rechnungen werden direkt abgelehnt.

Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables querying SAP SuccessFactors OData API metadata and managing Role-Based Permission (RBP) configurations. It provides tools for retrieving entity metadata, listing permission roles, and inspecting user-specific access rights through MCP-compatible clients.
    29
    11
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables interaction with the QuickBooks Online Accounting API to manage customers, invoices, expenses, and payments through MCP-compatible clients. It supports comprehensive financial workflows and the generation of reports like Profit and Loss or Balance Sheets.
    133
    2
    Apache 2.0
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI assistants to operate Kingdee Cloud Star ERP via natural language, including querying, creating, submitting, auditing, and deleting business documents.
    81
    57
    MIT

View all related MCP servers

Related MCP Connectors

  • A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud

  • PayPal MCP Pack — read-only access to PayPal transactions, orders, invoices, and disputes.

  • Remote MCP for Japan's EDINET DB — 3,800 listed companies' financials & filings (OAuth)

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/adambbhe/kingdee-star-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server