Skip to main content
Glama
adambbhe

kingdee_star

by adambbhe

kingdee_star —— Servidor MCP de Kingdee Cloud Galaxy

Agente financiero GC032 · lado Kingdee (el lado DingTalk ya está conectado mediante el MCP de DingTalk; este repositorio solo cubre Kingdee). Alineado con el requisito v2.1: Fase 1 solo lectura + cálculo de impuestos de facturas + generación de mensajes pendientes de registro para solicitudes de reembolso.

Cambio importante en v0.2.0: La autenticación, los endpoints y el motor de impuestos se han reescrito según la documentación oficial y las pruebas reales en el sandbox. Las constantes de endpoints de v0.1.0 (como /finance/expense) no existen en la pasarela real; no las reutilice.

Índice

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

Autenticación (dos niveles de credenciales, no los confunda)

Nivel

Valores

Uso

Aplicación ISV

JDY_CLIENT_ID / JDY_CLIENT_SECRET

Cabecera X-Api-ClientID + clave HMAC de X-Api-Signature

Cuenta del inquilino

JDY_APP_KEY / JDY_APP_SECRET

Calcula app_signature, intercambia por app-token

Cadena:

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

Tres trampas fáciles de pisar (signer.py ya las maneja; lea los comentarios antes de modificar):

  1. hash_hmac(..., raw_output=false) devuelve una cadena hexadecimal; la entrada del base64 es este hex, no el digest crudo.

  2. Los nombres de cabecera en la cadena a firmar están en minúsculas, y el nonce va primero, el timestamp después, en orden inverso al declarado en X-Api-SignHeaders; además hay un salto de línea al final.

  3. X-GW-Router-Addr (tomado del domain del mensaje push, p. ej. https://tf.jdy.com) es una cabecera obligatoria global; los 370 endpoints de la documentación oficial la marcan todos como obligatoria.

Inicio rápido

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

En Windows, haga doble clic en run_test.bat (el resultado se escribe en connection_test_result.txt).

Uso como servidor MCP

python -m kingdee_star.server        # stdio

Fusione kingdee-star de mcp.config.json en la configuración mcpServers del cliente (cambie cwd y env). Compatible con las versiones principales 1.x y 2.x de mcp.

Lista de herramientas (17)

Categoría

Herramientas

Endpoint

Meta/Autenticación

kdy_health kdy_auth_fetch_token

Sonda

kdy_current_user

sys/current_user_info

Solo lectura·Cuentas

kdy_list_account kdy_list_account_type

fi/account fi/account_type

Solo lectura·Comprobantes

kdy_list_voucher kdy_get_voucher

fi/voucher fi/voucher_detail

Solo lectura·Facturas

kdy_list_invoice kdy_get_invoice

fi/invoice_fp fi/invoice_detail

Solo lectura·Cobros/Pagos

kdy_list_ar_receive kdy_list_ap_pay

arap/ar_credit arap/ap_credit

Solo lectura·Partes relacionadas

kdy_reconciliation kdy_customer_debt

arap/reconciliation_statement arap/customer_debt

Solo lectura·Reembolsos

kdy_get_reimb_detail kdy_list_expense

ebx/reimb_detail (el endpoint de lista no existe)

Cálculo

kdy_calc_invoice_tax

Local, no llama a Kingdee

Generación de mensajes

kdy_fill_reimbursement

Solo dry-run, ver más abajo

Las facturas de ventas/salientes y de compras/entrantes no son dos endpoints; se filtran con bill_type / invoice_type de fi/invoice_fp.

⚠ Restricciones reales de escritura de reembolsos

La plataforma abierta oficial tiene 370 endpoints en total; el módulo ebx solo tiene un GET de «detalle de solicitud de reembolso», no hay ni lista de solicitudes de reembolso ni ningún endpoint de guardado de solicitudes de reembolso.

Por lo tanto, el «rellenado automático de borradores de solicitudes de reembolso con facturas» del requisito v2.1 no se puede persistir mediante la API abierta:

  • kdy_fill_reimbursement solo produce mensajes pendientes de registro con impuestos ya calculados y validación de cumplimiento superada; dry_run=False se rechaza explícitamente.

  • Para escribir automáticamente de verdad, solo queda el canal no-API-abierta (RPA / interfaz frontend / solicitar a Kingdee una interfaz personalizada).

Límites de seguridad

  • JDY_READONLY=true → solo lectura pura.

  • La capa de guardia es de lista blanca + denegación por defecto: las variaciones de ruta (barra final, subrutas, mayúsculas/minúsculas) no pueden eludirla.

  • Pagos/escritura de comprobantes/cuentas, envío de reembolsos a aprobación → prohibidos permanentemente (FORBID_ENDPOINTS), ejecución manual.

  • Auditoría completa: registro kingdee_star.audit.

Motor de impuestos

Tipo de factura

Criterio

Factura especial

Toma el impuesto indicado y el importe sin impuestos

Transporte de pasajeros (impuesto indicado)

Toma el impuesto indicado; si falta face_tax, error explícito, sin degradación silenciosa

Ferrocarril

÷1,09×9 %

Aviación

(Tarifa + recargo por combustible)÷1,09×9 %, validación con taxable_base() en lugar de total

Carretera/Vía fluvial

÷1,03×3 %

Otras facturas ordinarias

No deducible; si la factura ya indica impuesto, lanza un aviso pidiendo confirmación manual del tipo de factura

Deducción de transporte de pasajeros sin viajero → la validación de cumplimiento la marca como no deducible. Las facturas con importe negativo (facturas en rojo) se rechazan directamente.

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