Kingdee K3Cloud MCP
金蝶云星空 K3Cloud MCP Server,让 AI 助手(Claude Desktop、Claude Code、Cursor、Cline、Cherry Studio、Openclaw 等任意支持 MCP 协议的客户端)通过自然语言查询和操作金蝶 ERP 系统。
提示:支持 Skill 机制的 AI Agent(Claude Code、openclaw、hermes 等)可配合 kingdee-k3cloud-skill 获得更佳体验。Skill 为 Agent 注入金蝶表单字段、常用查询模式和工作流知识,大幅减少试错次数。
┌─────────────────────┐ ┌─────────────────────┐ ┌──────────────────┐
│ kingdee-k3cloud │───▶│ kingdee-k3cloud │───▶│ K3Cloud Web API │
│ -skill │ │ -mcp │ │ (金蝶云星空) │
│ 知识库 / 工作流 │ │ 执行引擎 / MCP工具 │ │ │
└─────────────────────┘ └─────────────────────┘ └──────────────────┘
支持 Skill 的 Agent 所有 MCP 客户端通用
MCP Server for Kingdee K3Cloud ERP. Connect AI assistants to your ERP system via the Model Context Protocol.
功能特性
- 15 个 MCP 工具:覆盖查询、大数据量导出、新增、提交、审核、反审核、删除、下推等核心操作
- 通用接口设计:单一
form_id参数支持物料、客户、销售订单、采购订单等所有表单,无需为每种业务单独配置 - 高阶查询原语:
query_bill_all(自动翻页)、query_bill_to_file(流式落盘)、query_bill_range(日期分片),彻底消除模型手动循环的负担 - 只读/读写模式:可限制 AI 只能查询,防止误操作
- 自动会话恢复:长时间运行时自动处理会话超时,无需人工干预
- 多传输协议:支持 stdio(本地)、SSE、streamable-http(远程共享)
快速开始
方式一:uvx 直接运行(推荐)
无需克隆仓库,直接通过 uvx 运行。注意:服务启动时必须提供 5 个必填环境变量(KD_SERVER_URL、KD_ACCT_ID、KD_USERNAME、KD_APP_ID、KD_APP_SEC),否则会报错退出。
在 MCP 客户端中使用(推荐,见下方"客户端配置"章节):通过客户端配置的 env 字段传入,uvx 进程会自动读取。
手动测试时,可通过以下任一方式提供环境变量:
# 方式 A:在当前目录创建 .env 文件(服务启动时自动加载)
cp .env.example .env # 填写真实值后再运行
uvx kingdee-k3cloud-mcp
# 方式 B:在命令行临时导出
export KD_SERVER_URL=https://your-server/k3cloud/
export KD_ACCT_ID=your_acct_id
export KD_USERNAME=your_username
export KD_APP_ID=your_app_id
export KD_APP_SEC=your_app_secret
uvx kingdee-k3cloud-mcp
方式二:从源码运行
git clone https://github.com/adamzhang1987/kingdee-k3cloud-mcp.git
cd kingdee-k3cloud-mcp
uv sync
uv run kingdee-k3cloud-mcp
配置
复制环境变量模板并填写:
cp .env.example .env
| 环境变量 | 说明 | 示例 |
|---|---|---|
KD_SERVER_URL |
金蝶服务器地址(必须以 /k3cloud/ 结尾) |
https://your-server/k3cloud/ |
KD_ACCT_ID |
账套 ID | your_acct_id |
KD_USERNAME |
集成用户账号 | your_username |
KD_APP_ID |
应用 ID | your_app_id |
KD_APP_SEC |
应用密钥 | your_app_secret |
KD_LCID |
语言(默认 2052 中文) | 2052 |
KD_ORG_NUM |
组织编码(可选) |
第三方应用 ID 和密钥需在金蝶云星空管理端的「第三方系统登录授权」中申请。
环境变量配置说明
在金蝶云星空产品中配置第三方系统集成,需按以下步骤获取 5 个环境变量:
1. 登录金蝶云星空管理后台
- 使用管理员账号登录金蝶云星空系统,进入「系统管理」菜单下的「第三方系统登录授权」。
- 点击新增按钮,进入新增第三方系统登录授权功能页面。
- 点击”获取应用 ID”按钮,根据提示跳转到 Open 网站 的第三方系统登录授权页面,点击“新增授权”。
- Open 网站用户根据自身信息进行表单填写。
- 提交成功后会生成应用信息,复制应用信息填入金蝶云星空产品 - 第三方系统登录授权 - 获取应用 ID - 应用信息框中,点击“确认”按钮。
- 配置集成用户。
- 点击“保存”按钮,保存成功后点击“生成测试链接”,测试链接是否成功。
注意:当前数据库中心 ID(即账套 ID)可以通过生成测试链接弹出的信息中获取。
2. 获取 KD_SERVER_URL
金蝶服务器地址,格式为 https://your-server/k3cloud/,其中:
your-server为金蝶云星空服务器的域名或 IP 地址- 一般以
/k3cloud/结尾 - 示例:
https://erp.company.com/k3cloud/
3. 获取 KD_ACCT_ID - 账套 ID
4. 获取 KD_USERNAME - 集成用户账号
使用具有相关模块操作权限的账号,不建议使用管理员账号。建议新建一个专门的集成用户账号,并为其分配所需的模块操作权限。
5. 获取 KD_APP_ID - 应用 ID 和 KD_APP_SEC - 应用密钥
注意:如需查看 APP_SECRET,可随时在应用详情中查看;如遗失,也可通过「重置」功能重新生成。
6. 验证配置
配置完成后,可通过以下命令验证连接:
cd kingdee-k3cloud-mcp
cp .env.example .env
# 编辑 .env 填写上述 5 个环境变量
uvx kingdee-k3cloud-mcp
如看到「MCP Server running」或类似输出,表示配置成功。
参考文档:金蝶云星空第三方系统集成配置指南
客户端配置
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS):
{
"mcpServers": {
"kingdee-k3cloud": {
"command": "uvx",
"args": ["kingdee-k3cloud-mcp"],
"env": {
"KD_SERVER_URL": "https://your-server/k3cloud/",
"KD_ACCT_ID": "your_acct_id",
"KD_USERNAME": "your_username",
"KD_APP_ID": "your_app_id",
"KD_APP_SEC": "your_app_secret",
"KD_LCID": "2052"
}
}
}
}
Claude Code
在项目目录下创建 .mcp.json:
{
"mcpServers": {
"kingdee-k3cloud": {
"command": "uvx",
"args": ["kingdee-k3cloud-mcp"],
"env": {
"KD_SERVER_URL": "https://your-server/k3cloud/",
"KD_ACCT_ID": "your_acct_id",
"KD_USERNAME": "your_username",
"KD_APP_ID": "your_app_id",
"KD_APP_SEC": "your_app_secret",
"KD_LCID": "2052"
}
}
}
}
Cursor / Windsurf 及其他 MCP 客户端
配置方式与 Claude Desktop 类似,参考各客户端的 MCP 配置文档,使用相同的 uvx 命令和环境变量。
SSE 模式(远程共享)
如需多人共用同一个服务实例:
# 启动 SSE 服务(默认端口 8000)
FASTMCP_HOST=0.0.0.0 FASTMCP_PORT=8080 uvx kingdee-k3cloud-mcp --transport sse
客户端连接地址:http://your-server:8080/sse
可通过 MCP_API_KEY 环境变量启用 Bearer Token 鉴权。
可用工具
查询工具(只读模式下可用)
| 工具 | 说明 |
|---|---|
query_bill |
查询单据数据(返回二维数组) |
query_bill_json |
查询单据数据(返回 JSON,字段名作为 key) |
count_bill |
估算查询结果行数,用于大数据量查询前的探测 |
query_bill_all |
自动翻页查询直到拉完或达到安全上限,返回合并结果 |
query_bill_to_file |
自动翻页并流式写入本地文件(ndjson / csv),适合万行以上导出 |
query_bill_range |
按日期自动分片(月/周/日)+ 翻页,适合跨月/跨年查询,支持落盘 |
view_bill |
查看单条记录完整详情 |
query_metadata |
查询表单字段结构(元数据) |
写入工具(读写模式下可用)
| 工具 | 说明 |
|---|---|
save_bill |
保存/新增单据 |
submit_bill |
提交单据 |
audit_bill |
审核单据 |
unaudit_bill |
反审核单据 |
delete_bill |
删除单据 |
execute_operation |
执行自定义操作(禁用、反禁用等) |
push_bill |
下推单据(如销售订单→发货通知单) |
所有工具通过 form_id 参数支持任意表单(物料、客户、供应商、销售订单、采购订单等)。
只读模式
通过 --mode readonly 或 MCP_MODE=readonly 限制服务器只暴露 8 个查询工具,防止 AI 误操作写入数据。
"args": ["kingdee-k3cloud-mcp", "--mode", "readonly"]
或:
"env": {
"MCP_MODE": "readonly",
...
}
调试
使用 MCP Inspector 可视化调试工具:
uvx mcp dev src/kingdee_k3cloud_mcp/server.py
架构说明
AI 助手(Claude Desktop / Claude Code / Cursor / Cline / Openclaw 等)
│ MCP 协议
▼
kingdee-k3cloud-mcp(本项目)
│ Kingdee Web API SDK
▼
金蝶云星空 K3Cloud
本项目使用官方金蝶 Python SDK(kingdee-cdp-webapi-sdk)与 K3Cloud API 通信,并通过 FastMCP 将其封装为标准 MCP 工具。
为什么选择 MCP 而非直接调用?
让 AI 直接通过 Skill 构造 HTTP 请求访问 ERP,技术上可行,但会引入一系列安全隐患。MCP 的进程隔离模型从根本上解决了这些问题。
凭证不进入 LLM 上下文
MCP Server 以独立进程运行,凭证(KD_APP_SEC、服务器地址、账套 ID)通过环境变量注入,模型永远看不到这些信息。如果改用 Skill 直接调用,凭证必须出现在提示词或对话上下文中,一旦对话日志被导出、上下文被截图,或模型意外将其输出,机密就泄露了。
强制权限边界,而非依赖提示词约束
Skill 是"建议"——模型可能理解有误,也可能被精心构造的输入绕过。MCP Server 的 --mode readonly 则是物理限制:写入工具根本不存在于工具列表中,模型想用也用不了。这是"告诉实习生不要删数据"和"实习生根本没有 DELETE 权限"之间的本质区别。
网络隔离
MCP Server 部署在企业内网(或本机),可直接访问内部 ERP;LLM 运行在云端,从不直接接触内部网络。使用 stdio 传输时,所有 ERP 流量都在本机进程间流转,不经过任何外部网络。
完整的审计链路
每一次工具调用都经过 MCP Server,可在此统一记录操作类型、参数、时间戳和调用来源。直接调用方式下,AI 的每次请求对企业安全团队来说是不可见的黑盒。
最小权限原则
集成用户(KD_USERNAME)可在金蝶系统内被限制为特定模块、只读权限。MCP Server 继承并传递这些限制,LLM 无需感知权限边界,权限边界自然生效。
个人见解
将 LLM 视为不可信的外部调用方(而非可信的内部系统)是正确的零信任设计思路。MCP 层的存在,使 Skill 和 MCP 的职责分离清晰:Skill 负责"什么时候用、怎么用"(策略),MCP 负责"能做什么"(机制)。即使未来模型能力更强,或出现提示词注入攻击,最坏情况下的爆炸半径也被 MCP Server 的权限模型所限定,而不是依赖模型的"自觉"。
配套 Skill(支持 Skill 的 Agent)
kingdee-k3cloud-skill 是面向支持 Skill 机制的 AI Agent(Claude Code、openclaw、hermes 等)的配套 Skill,提供:
- 常用表单 ID 速查表(BD_MATERIAL、SAL_SaleOrder 等)
- 已验证字段名列表(避免字段名错误导致 500)
- 日报、客户查询、销售分析、库存分析、订单追踪等完整工作流
安装后 Agent 可自动掌握金蝶 ERP 的正确查询方式,无需反复试错。
开发
git clone https://github.com/adamzhang1987/kingdee-k3cloud-mcp.git
cd kingdee-k3cloud-mcp
uv sync --dev
make test # 运行测试(覆盖率报告)
make lint # ruff check + mypy
make format # ruff format + fix
make build # uv build + twine check
安装 pre-commit hooks(可选,与 CI 保持一致):
uv run pre-commit install
贡献者
Made with contrib.rocks.
许可证
Apache License 2.0 — 详见 LICENSE