@lemonbeijing/lemonclaw-mcp-service 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -23
- package/dist/lemonclaw-mcp.cjs +33 -25
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,43 +1,49 @@
|
|
|
1
1
|
# LemonClaw MCP Service
|
|
2
2
|
|
|
3
|
-
面向柠檬云的本地 STDIO MCP 服务,支持 ACC 财务、SCM 进销存、ERP
|
|
3
|
+
面向柠檬云的本地 STDIO MCP 服务,支持 ACC 财务、SCM 进销存、ERP 业财和云发票。ACC、SCM、ERP Action 仅查询业务数据、生成报表或导出文件,不修改柠檬云业务数据;云发票正式开票和问题反馈只在用户明确确认并通过对应流程门禁后执行。
|
|
4
4
|
|
|
5
|
-
MCP
|
|
5
|
+
MCP 包内嵌 Runtime 管理组件并直接启动 Runtime Python。要求 Node.js 20 或更高版本;首次相关 Tool 调用时自动安装 Runtime,之后按策略检查更新。Runtime、认证、账套上下文、文档、下载和开票文件统一保存在 `~/.lemonclaw-cli` 目录中。
|
|
6
6
|
|
|
7
7
|
必须在 MCP 服务环境中配置 `LEMONCLAW_API_KEY`,该凭据不会作为 Tool 参数暴露。每次 Tool 执行前,MCP 会先解析或安装 Runtime,再通过 Runtime 认证模块同步发生变化的 API Key,最后调用目标业务操作;API Key 未变化时不会重复写入。
|
|
8
8
|
|
|
9
|
-
##
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
MCP Host 配置示例:
|
|
18
|
-
|
|
19
|
-
```json
|
|
20
|
-
{
|
|
21
|
-
"mcpServers": {
|
|
22
|
-
"lemonclaw": {
|
|
9
|
+
## MCP Host 配置
|
|
10
|
+
|
|
11
|
+
推荐通过已发布的 npm 包启动:
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"mcpServers": {
|
|
16
|
+
"lemonclaw": {
|
|
23
17
|
"type": "stdio",
|
|
24
|
-
"command": "
|
|
25
|
-
"args": [
|
|
18
|
+
"command": "npx",
|
|
19
|
+
"args": [
|
|
20
|
+
"--yes",
|
|
21
|
+
"--prefer-online",
|
|
22
|
+
"@lemonbeijing/lemonclaw-mcp-service@latest"
|
|
23
|
+
],
|
|
26
24
|
"env": {
|
|
27
25
|
"LEMONCLAW_API_KEY": "<在 MCP Host 中配置为密钥>"
|
|
28
26
|
}
|
|
29
27
|
}
|
|
30
28
|
}
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
MCP Host 重连或重启服务时,`npx` 会刷新 MCP 包;Runtime 更新与 MCP 包更新相互独立。
|
|
33
|
+
|
|
34
|
+
## 从源码运行
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
npm install
|
|
38
|
+
npm run build
|
|
39
|
+
node dist/lemonclaw-mcp.cjs
|
|
40
|
+
```
|
|
35
41
|
|
|
36
42
|
## Tool 分组
|
|
37
43
|
|
|
38
44
|
- 账套上下文:`lemon_account_current`、`lemon_account_list`、`lemon_account_switch`、`lemon_account_select`、`lemon_account_clear`
|
|
39
45
|
- ACC/SCM/ERP 业务:`lemon_action_search`、`lemon_action_show`、`lemon_action_read_doc`、`lemon_action_run`
|
|
40
|
-
-
|
|
46
|
+
- 云发票与独立开票:`lemon_invoice_read_doc`、`lemon_invoice_api`、`lemon_invoice_run_helper`
|
|
41
47
|
|
|
42
48
|
`stdout` 仅用于 MCP JSON-RPC。CLI 和 Runtime 输出会被捕获并作为 MCP Tool 内容返回;服务诊断只使用 `stderr`。
|
|
43
49
|
|
package/dist/lemonclaw-mcp.cjs
CHANGED
|
@@ -3279,7 +3279,7 @@ var require_package = __commonJS({
|
|
|
3279
3279
|
"package.json"(exports2, module2) {
|
|
3280
3280
|
module2.exports = {
|
|
3281
3281
|
name: "@lemonbeijing/lemonclaw-mcp-service",
|
|
3282
|
-
version: "0.1.
|
|
3282
|
+
version: "0.1.5",
|
|
3283
3283
|
description: "\u7528\u4E8E\u67E5\u8BE2\u548C\u64CD\u4F5C\u67E0\u6AAC\u4E91 Lemon Cloud \u4E1A\u52A1\u6570\u636E\u7684 MCP \u670D\u52A1\uFF0C\u8986\u76D6\u8D26\u5957\u3001\u8FDB\u9500\u5B58 SCM\u3001\u4E1A\u8D22 ERP\u3001\u8D22\u52A1 ACC \u548C\u72EC\u7ACB\u5F00\u7968\uFF1B\u652F\u6301\u5BA2\u6237\u3001\u4F9B\u5E94\u5546\u3001\u5546\u54C1\u3001\u4ED3\u5E93\u3001\u91C7\u8D2D\u3001\u9500\u552E\u3001\u5E93\u5B58\u3001\u6536\u4ED8\u6B3E\u3001\u5F80\u6765\u3001\u51ED\u8BC1\u3001\u8D26\u7C3F\u3001\u53D1\u7968\u53CA\u7ECF\u8425\u4E0E\u8D22\u52A1\u62A5\u8868\uFF0C\u5E76\u652F\u6301\u7ACB\u5373\u5F00\u7968\u3001\u6279\u91CF\u5F00\u7968\u548C\u95EE\u9898\u53CD\u9988\u3002",
|
|
3284
3284
|
license: "UNLICENSED",
|
|
3285
3285
|
type: "module",
|
|
@@ -5168,6 +5168,7 @@ var require_runtime_core = __commonJS({
|
|
|
5168
5168
|
});
|
|
5169
5169
|
module2.exports = {
|
|
5170
5170
|
UPDATER_COMPATIBILITY_VERSION,
|
|
5171
|
+
packageVersion: packageJson.version,
|
|
5171
5172
|
errors: require_errors(),
|
|
5172
5173
|
install: require_install(),
|
|
5173
5174
|
runtime: require_runtime()
|
|
@@ -5388,10 +5389,10 @@ async function runInvoiceApi(runtimeProvider, args) {
|
|
|
5388
5389
|
const script = import_node_path2.default.join(runtime.invoiceRoot, "assets", "lemon_acc_api.py");
|
|
5389
5390
|
await requireFile(script, "Installed Runtime invoice API script is missing.");
|
|
5390
5391
|
const operation = String(args.operation || "");
|
|
5392
|
+
if (["SkillInvoiceIssue", "FeedbackSubmit"].includes(operation) && args.user_confirmed !== true) {
|
|
5393
|
+
throw new Error(`${operation} requires explicit user confirmation.`);
|
|
5394
|
+
}
|
|
5391
5395
|
if (operation === "SkillInvoiceIssue") {
|
|
5392
|
-
if (args.user_confirmed !== true) {
|
|
5393
|
-
throw new Error("SkillInvoiceIssue requires explicit user confirmation.");
|
|
5394
|
-
}
|
|
5395
5396
|
for (const key of ["eiscid", "ai_tool", "model"]) {
|
|
5396
5397
|
requireValue(args, key, operation);
|
|
5397
5398
|
}
|
|
@@ -5402,6 +5403,11 @@ async function runInvoiceApi(runtimeProvider, args) {
|
|
|
5402
5403
|
throw new Error("SkillInvoiceIssue requires payload or payload_path.");
|
|
5403
5404
|
}
|
|
5404
5405
|
}
|
|
5406
|
+
if (operation === "FeedbackSubmit") {
|
|
5407
|
+
for (const key of ["feedback_text", "upload_file_path"]) {
|
|
5408
|
+
requireValue(args, key, operation);
|
|
5409
|
+
}
|
|
5410
|
+
}
|
|
5405
5411
|
return withPayloadPath(args, async (payloadPath) => {
|
|
5406
5412
|
const command = [script, "--action", operation];
|
|
5407
5413
|
appendApiArguments(command, args);
|
|
@@ -5432,6 +5438,9 @@ async function runInvoiceHelper(runtimeProvider, args) {
|
|
|
5432
5438
|
}
|
|
5433
5439
|
var invoiceHelperNames = Object.freeze(Object.keys(INVOICE_HELPERS));
|
|
5434
5440
|
|
|
5441
|
+
// src/server.js
|
|
5442
|
+
var import_runtime_core3 = __toESM(require_runtime_core(), 1);
|
|
5443
|
+
|
|
5435
5444
|
// src/runtime-manager.js
|
|
5436
5445
|
var import_runtime_core2 = __toESM(require_runtime_core(), 1);
|
|
5437
5446
|
|
|
@@ -5703,6 +5712,12 @@ var readOnlyAnnotations = {
|
|
|
5703
5712
|
idempotentHint: true,
|
|
5704
5713
|
openWorldHint: true
|
|
5705
5714
|
};
|
|
5715
|
+
var localMutationAnnotations = {
|
|
5716
|
+
readOnlyHint: false,
|
|
5717
|
+
destructiveHint: false,
|
|
5718
|
+
idempotentHint: false,
|
|
5719
|
+
openWorldHint: true
|
|
5720
|
+
};
|
|
5706
5721
|
function commandTimeout(seconds) {
|
|
5707
5722
|
return (Number(seconds || 120) + 15) * 1e3;
|
|
5708
5723
|
}
|
|
@@ -5730,9 +5745,9 @@ function createLemonClawServer(options = {}) {
|
|
|
5730
5745
|
const runCli = options.runCli || runtimeManager.runCli;
|
|
5731
5746
|
const resolveRuntime = options.resolveRuntime || runtimeManager.resolveEnvironment;
|
|
5732
5747
|
const server = new import_server.McpServer(
|
|
5733
|
-
{ name: "lemonclaw", version:
|
|
5748
|
+
{ name: "lemonclaw", version: import_runtime_core3.default.packageVersion },
|
|
5734
5749
|
{
|
|
5735
|
-
instructions: "LemonClaw \u7684 API Key \u4EC5\u7531 MCP \u670D\u52A1\u73AF\u5883\u53D8\u91CF\u63D0\u4F9B\uFF0C\u4E0D\u5F97\u5728\u5BF9\u8BDD\u6216 Tool \u53C2\u6570\u4E2D\u7D22\u53D6\u3001\u63A5\u6536\u3001\u5C55\u793A\u6216\u4F20\u9012\u3002\u5904\u7406 ACC\u3001SCM\u3001ERP \u4E1A\u52A1\u524D\uFF0C\u5148\u786E\u5B9A\u4EA7\u54C1\u5E76\u83B7\u53D6\u6216\u5207\u6362\u8D26\u5957\uFF1B\u968F\u540E\u4F9D\u6B21\u8C03\u7528 lemon_action_search\u3001lemon_action_show\u3001lemon_action_read_doc \u8BFB\u53D6 show \u8FD4\u56DE\u7684\u5168\u90E8\u5B9E\u9645\u6587\u6863\uFF0C\u6700\u540E\u624D\u53EF\u8C03\u7528 lemon_action_run\uFF0C\u4E25\u7981\u731C\u6D4B Action \u548C\u53C2\u6570\
|
|
5750
|
+
instructions: "LemonClaw \u7684 API Key \u4EC5\u7531 MCP \u670D\u52A1\u73AF\u5883\u53D8\u91CF\u63D0\u4F9B\uFF0C\u4E0D\u5F97\u5728\u5BF9\u8BDD\u6216 Tool \u53C2\u6570\u4E2D\u7D22\u53D6\u3001\u63A5\u6536\u3001\u5C55\u793A\u6216\u4F20\u9012\u3002\u7528\u6237\u660E\u786E\u63D0\u5230\u4E91\u53D1\u7968\u3001\u4E91\u53D1\u7968\u4EA7\u54C1\u3001\u72EC\u7ACB\u5F00\u7968\u3001\u7A0E\u7968\u5E73\u53F0\u3001\u7ACB\u5373\u5F00\u7968\u3001\u6279\u91CF\u5F00\u7968\u3001\u5F00\u7968\u9884\u89C8\u3001\u9500\u65B9\u4F01\u4E1A\u3001\u53EF\u5F00\u7968\u4F01\u4E1A\u6216\u4E91\u53D1\u7968\u4E0B\u7684\u4F01\u4E1A/\u8D26\u5957\u65F6\uFF0C\u5FC5\u987B\u8FDB\u5165\u4E91\u53D1\u7968\u4E0E\u72EC\u7ACB\u5F00\u7968\u6D41\u7A0B\uFF0C\u53EA\u4F7F\u7528 lemon_invoice_* Tools\uFF0C\u5E76\u5148\u8BFB\u53D6 Runtime \u5F00\u7968\u6587\u6863\uFF1B\u5176\u4E2D\u67E5\u8BE2\u4E91\u53D1\u7968\u4F01\u4E1A\u3001\u8D26\u5957\u3001\u9500\u65B9\u6216\u53EF\u5F00\u7968\u4E3B\u4F53\u56FA\u5B9A\u4F7F\u7528 lemon_invoice_api \u7684 CompanyFullList\uFF0C\u7981\u6B62\u8C03\u7528 lemon_account_list\u3002\u4EC5\u67E5\u8BE2\u8FDB\u9879\u53D1\u7968\u3001\u9500\u9879\u53D1\u7968\u3001\u53D1\u7968\u8BE6\u60C5\u3001\u5BFC\u51FA\u6216\u7EDF\u8BA1\u4E14\u672A\u660E\u786E\u4E91\u53D1\u7968\u4EA7\u54C1\u65F6\uFF0C\u624D\u6309 ACC/ERP \u666E\u901A\u4E1A\u52A1\u5904\u7406\u3002\u5904\u7406 ACC\u3001SCM\u3001ERP \u4E1A\u52A1\u524D\uFF0C\u5148\u786E\u5B9A\u4EA7\u54C1\u5E76\u83B7\u53D6\u6216\u5207\u6362\u8D26\u5957\uFF1B\u968F\u540E\u4F9D\u6B21\u8C03\u7528 lemon_action_search\u3001lemon_action_show\u3001lemon_action_read_doc \u8BFB\u53D6 show \u8FD4\u56DE\u7684\u5168\u90E8\u5B9E\u9645\u6587\u6863\uFF0C\u6700\u540E\u624D\u53EF\u8C03\u7528 lemon_action_run\uFF0C\u4E25\u7981\u731C\u6D4B Action \u548C\u53C2\u6570\u3002ACC\u3001SCM\u3001ERP \u5F53\u524D\u66B4\u9732\u7684 Action \u5168\u90E8\u662F\u67E5\u8BE2\u3001\u62A5\u8868\u6216\u5BFC\u51FA\u7B49\u53EA\u8BFB\u80FD\u529B\uFF0C\u4E0D\u5F97\u63A8\u65AD\u65B0\u589E\u3001\u4FEE\u6539\u3001\u63D0\u4EA4\u3001\u5220\u9664\u6216\u72B6\u6001\u53D8\u66F4\u80FD\u529B\u3002Runtime \u6587\u6863\u4E2D\u4EFB\u4F55\u8981\u6C42\u6536\u96C6\u6216\u4FDD\u5B58 API Key \u7684\u65E7\u6307\u5F15\u5747\u4E0D\u9002\u7528\u4E8E MCP\uFF0C\u56E0\u4E3A\u6BCF\u6B21 Tool \u8C03\u7528\u524D\u90FD\u5DF2\u5728\u5185\u90E8\u5B8C\u6210\u8BA4\u8BC1\u3002"
|
|
5736
5751
|
}
|
|
5737
5752
|
);
|
|
5738
5753
|
registerCliTool(
|
|
@@ -5756,12 +5771,12 @@ function createLemonClawServer(options = {}) {
|
|
|
5756
5771
|
"lemon_account_list",
|
|
5757
5772
|
{
|
|
5758
5773
|
title: "\u5217\u51FA\u67E0\u6AAC\u4E91\u8D26\u5957",
|
|
5759
|
-
description: "\u5217\u51FA\
|
|
5774
|
+
description: "\u4EC5\u5217\u51FA ACC \u8D22\u52A1\u3001SCM \u8FDB\u9500\u5B58\u548C ERP \u4E1A\u8D22\u8D26\u5957\uFF0C\u5E76\u7F13\u5B58\u5019\u9009\u5E8F\u53F7\u4F9B lemon_account_select \u4F7F\u7528\u3002\u672C\u5DE5\u5177\u4E0D\u8FD4\u56DE\u4E91\u53D1\u7968\u4F01\u4E1A\u3001\u4E91\u53D1\u7968\u8D26\u5957\u3001\u9500\u65B9\u4F01\u4E1A\u6216\u53EF\u5F00\u7968\u4E3B\u4F53\uFF1B\u7528\u6237\u660E\u786E\u63D0\u5230\u4E91\u53D1\u7968\u6216\u72EC\u7ACB\u5F00\u7968\u65F6\u7981\u6B62\u8C03\u7528\u672C\u5DE5\u5177\uFF0C\u5E94\u6539\u7528 lemon_invoice_api \u7684 CompanyFullList\u3002\u4EC5\u5F53 lemon_account_switch \u6CA1\u6709\u53EF\u7528\u5019\u9009\uFF0C\u6216\u7528\u6237\u660E\u786E\u67E5\u770B ACC/SCM/ERP \u8D26\u5957\u65F6\u8C03\u7528\u3002",
|
|
5760
5775
|
inputSchema: z.object({
|
|
5761
5776
|
dry_run: z.boolean().default(false).describe("\u662F\u5426\u4EC5\u68C0\u67E5\u6D41\u7A0B\u800C\u4E0D\u5B9E\u9645\u66F4\u65B0\u672C\u5730\u5019\u9009\u7F13\u5B58\u3002"),
|
|
5762
5777
|
timeout_seconds: timeoutSchema
|
|
5763
5778
|
}),
|
|
5764
|
-
annotations:
|
|
5779
|
+
annotations: localMutationAnnotations
|
|
5765
5780
|
},
|
|
5766
5781
|
(args) => {
|
|
5767
5782
|
const command = ["account", "list", "--timeout", String(args.timeout_seconds)];
|
|
@@ -5945,8 +5960,8 @@ function createLemonClawServer(options = {}) {
|
|
|
5945
5960
|
runCli,
|
|
5946
5961
|
"lemon_action_run",
|
|
5947
5962
|
{
|
|
5948
|
-
title: "\u67E5\u8BE2\
|
|
5949
|
-
description: "\u6267\u884C\u5DF2\u901A\u8FC7\u68C0\u7D22\u548C\u6587\u6863\u6838\u9A8C\u7684\u67E0\u6AAC\u4E91 ACC\u3001SCM \u6216 ERP \
|
|
5963
|
+
title: "\u67E5\u8BE2\u67E0\u6AAC\u4E91 ACC\u3001SCM \u6216 ERP \u4E1A\u52A1\u6570\u636E",
|
|
5964
|
+
description: "\u6267\u884C\u5DF2\u901A\u8FC7\u68C0\u7D22\u548C\u6587\u6863\u6838\u9A8C\u7684\u67E0\u6AAC\u4E91 ACC\u3001SCM \u6216 ERP \u53EA\u8BFB Action\u3002\u7528\u4E8E\u67E5\u8BE2\u5BA2\u6237\u3001\u4F9B\u5E94\u5546\u3001\u5546\u54C1\u3001\u4ED3\u5E93\u7B49\u57FA\u7840\u8D44\u6599\uFF0C\u4EE5\u53CA\u91C7\u8D2D\u8BA2\u5355\u3001\u9500\u552E\u8BA2\u5355\u3001\u5E93\u5B58\u3001\u6536\u4ED8\u6B3E\u3001\u5F80\u6765\u3001\u51ED\u8BC1\u3001\u8D26\u7C3F\u3001\u53D1\u7968\u548C\u7ECF\u8425\u6216\u8D22\u52A1\u62A5\u8868\uFF1BERP \u8FD8\u8986\u76D6\u9500\u552E\u62A5\u4EF7\u3001\u4EF7\u683C\u8D44\u6599\u3001\u8BA2\u5355\u6C47\u603B\u3001\u5E93\u5B58\u8D26\u9F84\u3001\u6682\u4F30\u8C03\u6574\u548C\u5E94\u6536\u5E94\u4ED8\u9884\u8B66\u3002\u5F53\u524D\u4E0D\u63D0\u4F9B\u65B0\u589E\u3001\u4FEE\u6539\u3001\u63D0\u4EA4\u3001\u5220\u9664\u6216\u72B6\u6001\u53D8\u66F4\u80FD\u529B\uFF1B\u90E8\u5206\u53EA\u8BFB\u67E5\u8BE2\u867D\u7136\u4F7F\u7528 HTTP POST\uFF0C\u4ECD\u4E0D\u5C5E\u4E8E\u4E1A\u52A1\u5199\u64CD\u4F5C\uFF0C\u5BFC\u51FA Action \u53EF\u80FD\u5728\u672C\u5730\u751F\u6210\u6587\u4EF6\u3002\u8C03\u7528\u524D\u5FC5\u987B\u5B8C\u6210 search\u3001show \u548C\u5168\u90E8\u6587\u6863\u8BFB\u53D6\uFF0C\u4E0D\u5F97\u731C\u6D4B\u53C2\u6570\uFF1B\u672C\u5DE5\u5177\u4E0D\u7528\u4E8E\u4E91\u53D1\u7968\u6216\u72EC\u7ACB\u5F00\u7968\u3002",
|
|
5950
5965
|
inputSchema: z.object({
|
|
5951
5966
|
product: productSchema,
|
|
5952
5967
|
action: z.string().min(1).describe("\u5DF2\u901A\u8FC7 search\u3001show \u548C\u6587\u6863\u6838\u9A8C\u7684\u7CBE\u786E Action \u540D\u79F0\u3002"),
|
|
@@ -5956,16 +5971,10 @@ function createLemonClawServer(options = {}) {
|
|
|
5956
5971
|
_outputMode: z.enum(["basic", "full"]).optional().describe("\u6587\u6863\u5141\u8BB8\u65F6\u9009\u62E9\u57FA\u7840\u7ED3\u679C basic \u6216\u5B8C\u6574\u7ED3\u679C full\u3002"),
|
|
5957
5972
|
_extraDisplayFields: z.array(z.string().min(1)).min(1).optional().describe("\u7528\u6237\u660E\u786E\u8981\u6C42\u989D\u5916\u5C55\u793A\u4E14 Action \u6587\u6863\u652F\u6301\u7684\u5B57\u6BB5\u540D\u79F0\u3002")
|
|
5958
5973
|
}).strict().describe("\u4E25\u683C\u6309\u7167 Action \u6587\u6863\u6784\u9020\u7684\u5D4C\u5957 query/body \u8BF7\u6C42\u5305\u3002"),
|
|
5959
|
-
|
|
5960
|
-
dry_run: z.boolean().default(false).describe("\u662F\u5426\u4EC5\u6821\u9A8C\u5E76\u9884\u6F14\uFF0C\u800C\u4E0D\u5B9E\u9645\u6267\u884C\u4E1A\u52A1\u8BF7\u6C42\u3002"),
|
|
5974
|
+
dry_run: z.boolean().default(false).describe("\u662F\u5426\u4EC5\u6821\u9A8C\u5E76\u9884\u6F14\u67E5\u8BE2\u8BF7\u6C42\uFF0C\u800C\u4E0D\u5B9E\u9645\u83B7\u53D6\u4E1A\u52A1\u6570\u636E\u3002"),
|
|
5961
5975
|
timeout_seconds: timeoutSchema
|
|
5962
5976
|
}),
|
|
5963
|
-
annotations:
|
|
5964
|
-
readOnlyHint: false,
|
|
5965
|
-
destructiveHint: true,
|
|
5966
|
-
idempotentHint: false,
|
|
5967
|
-
openWorldHint: true
|
|
5968
|
-
}
|
|
5977
|
+
annotations: localMutationAnnotations
|
|
5969
5978
|
},
|
|
5970
5979
|
(args) => {
|
|
5971
5980
|
const command = [
|
|
@@ -5977,7 +5986,6 @@ function createLemonClawServer(options = {}) {
|
|
|
5977
5986
|
"--timeout",
|
|
5978
5987
|
String(args.timeout_seconds)
|
|
5979
5988
|
];
|
|
5980
|
-
if (args.user_confirmed) command.push("--user-confirmed");
|
|
5981
5989
|
if (args.dry_run) command.push("--dry-run");
|
|
5982
5990
|
return {
|
|
5983
5991
|
command,
|
|
@@ -5989,10 +5997,10 @@ function createLemonClawServer(options = {}) {
|
|
|
5989
5997
|
server.registerTool(
|
|
5990
5998
|
"lemon_invoice_read_doc",
|
|
5991
5999
|
{
|
|
5992
|
-
title: "\u8BFB\u53D6\u67E0\u6AAC\u4E91\u72EC\u7ACB\u5F00\u7968\u6587\u6863",
|
|
5993
|
-
description: "\
|
|
6000
|
+
title: "\u8BFB\u53D6\u67E0\u6AAC\u4E91\u53D1\u7968\u4E0E\u72EC\u7ACB\u5F00\u7968\u6587\u6863",
|
|
6001
|
+
description: "\u4E91\u53D1\u7968\u4EA7\u54C1\u3001\u72EC\u7ACB\u5F00\u7968\u548C\u7A0E\u7968\u5E73\u53F0\uFF08\u542B\u5F00\u7968\u52A9\u624B/\u5F00\u7968\u52A9\u7406\uFF09\u7684\u603B\u6D41\u7A0B\u6587\u6863\u5165\u53E3\uFF1B\u672C\u5DE5\u5177\u6309\u76F8\u5BF9\u8DEF\u5F84\u8BFB\u53D6 Runtime \u5F00\u7968\u6587\u6863\uFF0C\u4E0D\u76F4\u63A5\u67E5\u8BE2\u4F01\u4E1A\u6216\u6267\u884C\u5F00\u7968\u3002\u53EA\u8981\u7528\u6237\u660E\u786E\u5904\u4E8E\u4E91\u53D1\u7968\u4EA7\u54C1\uFF0C\u6216\u63D0\u51FA\u67E5\u8BE2\u4E91\u53D1\u7968\u4F01\u4E1A/\u516C\u53F8/\u8D26\u53F7/\u8D26\u5957\u3001\u9500\u65B9/\u8D2D\u65B9/\u5BA2\u6237\u3001\u4F01\u4E1A\u8BE6\u60C5\u3001\u767B\u5F55\u72B6\u6001\u3001\u7A0E\u5C40/\u6570\u7535\u8BA4\u8BC1\u3001\u5269\u4F59\u989D\u5EA6\u3001\u7A0E\u7F16/\u5546\u54C1\u7F16\u7801\u3001\u7ACB\u5373/\u6279\u91CF\u5F00\u7968\u3001\u9884\u89C8/\u786E\u8BA4/\u63D0\u4EA4\u3001\u5BA2\u670D\u6216\u95EE\u9898\u53CD\u9988\uFF0C\u7B2C\u4E00\u6B65\u90FD\u5FC5\u987B\u7528\u672C\u5DE5\u5177\u8BFB\u53D6 SKILL.md\uFF0C\u518D\u6309\u6587\u6863\u4F7F\u7528 lemon_invoice_api \u6216 lemon_invoice_run_helper\uFF0C\u7981\u6B62\u8F6C\u5230 lemon_account_* \u6216 lemon_action_*\u3002\u4EC5\u67E5\u8BE2 ACC/ERP \u8D22\u52A1\u8D26\u5957\u5185\u7684\u8FDB\u9879/\u9500\u9879\u53D1\u7968\u3001\u8BE6\u60C5\u3001\u5BFC\u51FA\u6216\u7EDF\u8BA1\u65F6\u4E0D\u4F7F\u7528\u672C\u5DE5\u5177\u3002",
|
|
5994
6002
|
inputSchema: z.object({
|
|
5995
|
-
path: z.string().min(1).describe("\u5F00\u7968\u76EE\u5F55\u5185\u7684\u76F8\u5BF9\u6587\u6863\u8DEF\u5F84\
|
|
6003
|
+
path: z.string().min(1).describe("\u5F00\u7968\u76EE\u5F55\u5185\u7684\u76F8\u5BF9\u6587\u6863\u8DEF\u5F84\uFF1B\u9996\u6B21\u8FDB\u5165\u4E91\u53D1\u7968\u6D41\u7A0B\u56FA\u5B9A\u4F20 SKILL.md\uFF0C\u540E\u7EED\u53EA\u8BFB\u53D6\u8BE5\u6587\u6863\u6307\u5411\u7684\u8DEF\u5F84\u3002")
|
|
5996
6004
|
}),
|
|
5997
6005
|
annotations: readOnlyAnnotations
|
|
5998
6006
|
},
|
|
@@ -6009,7 +6017,7 @@ function createLemonClawServer(options = {}) {
|
|
|
6009
6017
|
"lemon_invoice_api",
|
|
6010
6018
|
{
|
|
6011
6019
|
title: "\u8C03\u7528\u67E0\u6AAC\u4E91\u72EC\u7ACB\u5F00\u7968\u63A5\u53E3",
|
|
6012
|
-
description: "\
|
|
6020
|
+
description: "\u8C03\u7528\u4E91\u53D1\u7968\u4EA7\u54C1\uFF08\u72EC\u7ACB\u5F00\u7968/\u7A0E\u7968\u5E73\u53F0\uFF09\u7684\u56FA\u5B9A\u4E1A\u52A1\u63A5\u53E3\u3002\u7528\u6237\u8BE2\u95EE\u4E91\u53D1\u7968\u4E0B\u6709\u54EA\u4E9B\u4F01\u4E1A\u3001\u8D26\u5957\u3001\u9500\u65B9\u6216\u53EF\u5F00\u7968\u4E3B\u4F53\u65F6\uFF0C\u8BFB\u53D6\u6587\u6863\u540E\u56FA\u5B9A\u4F7F\u7528 operation=CompanyFullList\uFF0C\u7981\u6B62\u8C03\u7528 lemon_account_list\u3002\u5176\u4ED6 operation \u7528\u4E8E\u516C\u53F8\u8BE6\u60C5\u3001\u8D2D\u65B9\u5BA2\u6237\u3001\u767B\u5F55\u72B6\u6001\u3001\u7A0E\u5C40\u8BA4\u8BC1\u3001\u5269\u4F59\u989D\u5EA6\u3001\u7A0E\u76EE\u89E3\u6790\u3001\u6B63\u5F0F\u5F00\u7968\u548C\u95EE\u9898\u53CD\u9988\u3002\u8C03\u7528\u524D\u5FC5\u987B\u8BFB\u53D6\u5BF9\u5E94\u6587\u6863\uFF1B\u6B63\u5F0F\u5F00\u7968\u548C\u53CD\u9988\u63D0\u4EA4\u90FD\u5FC5\u987B\u83B7\u5F97\u7528\u6237\u5BF9\u672C\u6B21\u64CD\u4F5C\u7684\u660E\u786E\u786E\u8BA4\uFF1B\u4E0D\u5F97\u4F20\u9012 API Key\u3001Token \u6216\u5176\u4ED6\u8BA4\u8BC1\u51ED\u636E\u3002",
|
|
6013
6021
|
inputSchema: z.object({
|
|
6014
6022
|
operation: z.enum([
|
|
6015
6023
|
"CompanyFullList",
|
|
@@ -6044,7 +6052,7 @@ function createLemonClawServer(options = {}) {
|
|
|
6044
6052
|
message_id: optionalText,
|
|
6045
6053
|
context: optionalText,
|
|
6046
6054
|
upload_file_path: optionalText,
|
|
6047
|
-
user_confirmed: z.boolean().default(false).describe("\u4EC5\u5728\u7528\u6237\u660E\u786E\u786E\u8BA4\u6B63\u5F0F\u5F00\u7968\u6216\
|
|
6055
|
+
user_confirmed: z.boolean().default(false).describe("\u4EC5\u5728\u7528\u6237\u660E\u786E\u786E\u8BA4\u672C\u6B21\u6B63\u5F0F\u5F00\u7968 SkillInvoiceIssue \u6216\u53CD\u9988\u63D0\u4EA4 FeedbackSubmit \u540E\u8BBE\u4E3A true\u3002"),
|
|
6048
6056
|
timeout_seconds: timeoutSchema
|
|
6049
6057
|
}),
|
|
6050
6058
|
annotations: {
|
|
@@ -6066,7 +6074,7 @@ function createLemonClawServer(options = {}) {
|
|
|
6066
6074
|
"lemon_invoice_run_helper",
|
|
6067
6075
|
{
|
|
6068
6076
|
title: "\u8FD0\u884C\u67E0\u6AAC\u4E91\u72EC\u7ACB\u5F00\u7968\u8F85\u52A9\u7A0B\u5E8F",
|
|
6069
|
-
description: "\u8FD0\u884C\
|
|
6077
|
+
description: "\u4EC5\u8FD0\u884C\u4E91\u53D1\u7968\u4EA7\u54C1\u6D41\u7A0B\u5185\u7F6E\u7684\u767D\u540D\u5355\u8F85\u52A9\u7A0B\u5E8F\uFF0C\u7528\u4E8E Excel/\u6570\u636E\u6587\u4EF6\u89E3\u6790\u3001JSON \u6821\u9A8C\u3001\u53D1\u7968\u9884\u89C8\u751F\u6210\u3001\u9884\u89C8\u670D\u52A1\u3001\u5BA2\u6237\u67E5\u8BE2\u548C\u5BA2\u670D\u4FE1\u606F\u8F93\u51FA\uFF1B\u5B83\u4E0D\u67E5\u8BE2\u8D26\u5957\u6216\u4E91\u53D1\u7968\u4F01\u4E1A\u3002\u67E5\u8BE2\u4E91\u53D1\u7968\u4F01\u4E1A\u3001\u8D26\u5957\u3001\u9500\u65B9\u6216\u53EF\u5F00\u7968\u4E3B\u4F53\u5FC5\u987B\u4F7F\u7528 lemon_invoice_api \u7684 CompanyFullList\u3002\u672C\u5DE5\u5177\u4E0D\u80FD\u6267\u884C\u4EFB\u610F\u7CFB\u7EDF\u547D\u4EE4\u3001\u4EFB\u610F Python \u811A\u672C\u6216\u767D\u540D\u5355\u5916\u7A0B\u5E8F\uFF1Boperation \u548C\u53C2\u6570\u5FC5\u987B\u6765\u81EA\u5DF2\u8BFB\u53D6\u7684\u5F00\u7968\u6587\u6863\u3002",
|
|
6070
6078
|
inputSchema: z.object({
|
|
6071
6079
|
operation: z.enum(invoiceHelperNames).describe("\u8981\u8FD0\u884C\u7684\u767D\u540D\u5355\u8F85\u52A9\u64CD\u4F5C\uFF0C\u5FC5\u987B\u6765\u81EA\u5DF2\u8BFB\u53D6\u7684\u5F00\u7968\u6D41\u7A0B\u6587\u6863\u3002"),
|
|
6072
6080
|
arguments: z.array(z.string()).max(30).default([]).describe("\u6309\u5BF9\u5E94\u6D41\u7A0B\u6587\u6863\u987A\u5E8F\u63D0\u4F9B\u7684\u8F85\u52A9\u7A0B\u5E8F\u53C2\u6570\uFF0C\u6700\u591A 30 \u9879\u3002"),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemonbeijing/lemonclaw-mcp-service",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "用于查询和操作柠檬云 Lemon Cloud 业务数据的 MCP 服务,覆盖账套、进销存 SCM、业财 ERP、财务 ACC 和独立开票;支持客户、供应商、商品、仓库、采购、销售、库存、收付款、往来、凭证、账簿、发票及经营与财务报表,并支持立即开票、批量开票和问题反馈。",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|