chaimi-keep-mcp 3.3.3-beta.5 → 3.3.3-beta.6
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 +5 -1
- package/SKILL.md +4 -4
- package/bin/cli.js +4 -4
- package/package.json +2 -2
- package/references/authentication.md +10 -10
- package/references/troubleshooting.md +6 -6
- package/server.js +9 -13
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
# 1. 安装 MCPorter(WorkBuddy/OpenClaw 等 OpenClaw 架构的 Agent 必需)
|
|
24
24
|
npm install -g mcporter
|
|
25
25
|
|
|
26
|
-
# 2.
|
|
26
|
+
# 2. 安装柴米AI记账 MCP
|
|
27
27
|
npm install -g chaimi-keep-mcp
|
|
28
28
|
|
|
29
29
|
# 3. 启动(自动配置 mcporter)
|
|
@@ -89,6 +89,10 @@ export MCP_PROMPT_URL="你的Prompt服务地址"
|
|
|
89
89
|
|
|
90
90
|
## Changelog
|
|
91
91
|
|
|
92
|
+
### v3.3.3-beta.6 (2026-04-29)
|
|
93
|
+
- **优化** 品牌统一 - 所有"柴米记账"改为"柴米AI记账"
|
|
94
|
+
- **优化** 工具描述 - 重写三个记账工具描述,包含完整调用示例和格式要求
|
|
95
|
+
|
|
92
96
|
### v3.3.3-beta.4 (2026-04-29)
|
|
93
97
|
- **优化** 收入记账时间解析统一 - save_income 同样使用 time_description,修复 AI 计算时间戳错误
|
|
94
98
|
|
package/SKILL.md
CHANGED
|
@@ -9,7 +9,7 @@ updated: "2026-04-27"
|
|
|
9
9
|
|
|
10
10
|
# 柴米AI记账 Skill
|
|
11
11
|
|
|
12
|
-
> ✨
|
|
12
|
+
> ✨ 柴米AI记账超级美学版 - 让记账变成享受
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -67,7 +67,7 @@ updated: "2026-04-27"
|
|
|
67
67
|
## 三、文档引用关系
|
|
68
68
|
|
|
69
69
|
```
|
|
70
|
-
|
|
70
|
+
用户使用柴米AI记账
|
|
71
71
|
↓
|
|
72
72
|
chaimi-keep-mcp ⭐ 本Skill
|
|
73
73
|
├── 记账成功 → 使用回复模板(见七、回复规范)
|
|
@@ -249,7 +249,7 @@ references/
|
|
|
249
249
|
|
|
250
250
|
## 八、记忆口诀
|
|
251
251
|
|
|
252
|
-
>
|
|
252
|
+
> **柴米AI记账超美学,五层结构要牢记。**
|
|
253
253
|
> **成功标识在顶部,金额分隔最醒目。**
|
|
254
254
|
> **商品分类商家时,底部祝福加品牌。**
|
|
255
255
|
> **场景路由先匹配,工具速查再执行。**
|
|
@@ -263,7 +263,7 @@ references/
|
|
|
263
263
|
|
|
264
264
|
| 错误 | 现象 | 解决方案 | 参考文档 |
|
|
265
265
|
|:-----|:-----|:---------|:---------|
|
|
266
|
-
| **授权失败** | "未找到有效授权" | 执行 `mcporter auth
|
|
266
|
+
| **授权失败** | "未找到有效授权" | 执行 `mcporter auth 柴米AI记账` 重新授权 | troubleshooting.md |
|
|
267
267
|
| **分类不明** | "无法识别分类" | 明确说分类:"午餐35元餐饮" | api-reference.md |
|
|
268
268
|
| **网络超时** | "请求超时" | 检查网络,稍后重试 | troubleshooting.md |
|
|
269
269
|
|
package/bin/cli.js
CHANGED
|
@@ -161,8 +161,8 @@ function installToAgent(agent) {
|
|
|
161
161
|
config.mcpServers = {};
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
//
|
|
165
|
-
if (config.mcpServers['
|
|
164
|
+
// 检查是否已存在柴米AI记账配置
|
|
165
|
+
if (config.mcpServers['柴米AI记账']) {
|
|
166
166
|
return {
|
|
167
167
|
success: true,
|
|
168
168
|
action: 'skipped',
|
|
@@ -171,8 +171,8 @@ function installToAgent(agent) {
|
|
|
171
171
|
};
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
//
|
|
175
|
-
config.mcpServers['
|
|
174
|
+
// 添加柴米AI记账配置
|
|
175
|
+
config.mcpServers['柴米AI记账'] = JSON.parse(JSON.stringify(DEFAULT_CHAIMI_CONFIG));
|
|
176
176
|
|
|
177
177
|
// 写入配置
|
|
178
178
|
writeJSON(agent.configPath, config);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chaimi-keep-mcp",
|
|
3
|
-
"version": "3.3.3-beta.
|
|
3
|
+
"version": "3.3.3-beta.6",
|
|
4
4
|
"description": "柴米AI记账 MCP Server - 支持 Claude、Cursor、OpenClaw、WorkBuddy 等 AI 工具直接记账",
|
|
5
5
|
"main": "server.js",
|
|
6
6
|
"bin": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"AI记账",
|
|
41
41
|
"model-context-protocol"
|
|
42
42
|
],
|
|
43
|
-
"author": "
|
|
43
|
+
"author": "柴米AI记账团队,songyangx@gmail.com",
|
|
44
44
|
"license": "MIT",
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
@@ -58,7 +58,7 @@ updated: "2026-04-25"
|
|
|
58
58
|
|
|
59
59
|
1. **启动授权流程**
|
|
60
60
|
```bash
|
|
61
|
-
mcporter auth
|
|
61
|
+
mcporter auth 柴米AI记账
|
|
62
62
|
```
|
|
63
63
|
或
|
|
64
64
|
```bash
|
|
@@ -68,14 +68,14 @@ updated: "2026-04-25"
|
|
|
68
68
|
2. **查看验证码**
|
|
69
69
|
终端会显示:
|
|
70
70
|
```
|
|
71
|
-
🔐
|
|
71
|
+
🔐 柴米AI记账授权
|
|
72
72
|
═══════════════════════════
|
|
73
73
|
📱 验证码:GGCY-AC84
|
|
74
74
|
⏰ 有效期:5分钟
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
3. **小程序确认**
|
|
78
|
-
- 打开"
|
|
78
|
+
- 打开"柴米AI记账"小程序
|
|
79
79
|
- 点击"我的" → "AI 助手绑定"
|
|
80
80
|
- 输入验证码
|
|
81
81
|
- 点击确认
|
|
@@ -90,15 +90,15 @@ updated: "2026-04-25"
|
|
|
90
90
|
|
|
91
91
|
```bash
|
|
92
92
|
# 重新授权
|
|
93
|
-
mcporter auth
|
|
93
|
+
mcporter auth 柴米AI记账
|
|
94
94
|
|
|
95
95
|
# 强制清除缓存后重新授权
|
|
96
|
-
mcporter auth
|
|
96
|
+
mcporter auth 柴米AI记账 --reset
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
**然后:**
|
|
100
100
|
1. 查看终端显示的验证码
|
|
101
|
-
2. 打开"
|
|
101
|
+
2. 打开"柴米AI记账"小程序
|
|
102
102
|
3. 进入"我的" → "AI 助手绑定"
|
|
103
103
|
4. 输入验证码完成授权
|
|
104
104
|
|
|
@@ -124,7 +124,7 @@ mcporter auth 柴米记账 --reset
|
|
|
124
124
|
```
|
|
125
125
|
或
|
|
126
126
|
```bash
|
|
127
|
-
mcporter auth
|
|
127
|
+
mcporter auth 柴米AI记账
|
|
128
128
|
```
|
|
129
129
|
2. 查看终端显示的验证码
|
|
130
130
|
3. 在小程序"我的"→"AI 助手绑定"中输入验证码
|
|
@@ -160,7 +160,7 @@ del %USERPROFILE%\.mcporter\oauth-token.json
|
|
|
160
160
|
cat ~/.mcporter/oauth-token.json
|
|
161
161
|
|
|
162
162
|
# 或尝试调用工具测试
|
|
163
|
-
mcporter call
|
|
163
|
+
mcporter call 柴米AI记账.get_skill
|
|
164
164
|
```
|
|
165
165
|
|
|
166
166
|
**Token 文件位置:**
|
|
@@ -172,7 +172,7 @@ mcporter call 柴米记账.get_skill
|
|
|
172
172
|
|
|
173
173
|
Token 过期后需要重新授权:
|
|
174
174
|
```bash
|
|
175
|
-
mcporter auth
|
|
175
|
+
mcporter auth 柴米AI记账
|
|
176
176
|
```
|
|
177
177
|
|
|
178
178
|
---
|
|
@@ -192,7 +192,7 @@ mcporter auth 柴米记账
|
|
|
192
192
|
|
|
193
193
|
```bash
|
|
194
194
|
# 强制清除缓存后重新授权
|
|
195
|
-
mcporter auth
|
|
195
|
+
mcporter auth 柴米AI记账 --reset
|
|
196
196
|
```
|
|
197
197
|
|
|
198
198
|
**场景:**
|
|
@@ -38,7 +38,7 @@ updated: "2026-04-25"
|
|
|
38
38
|
- 授权被撤销
|
|
39
39
|
|
|
40
40
|
**解决方案:**
|
|
41
|
-
1. 执行 `mcporter auth
|
|
41
|
+
1. 执行 `mcporter auth 柴米AI记账`
|
|
42
42
|
2. 查看终端显示的验证码
|
|
43
43
|
3. 在小程序"我的"→"AI 助手绑定"中输入验证码
|
|
44
44
|
4. 重新尝试记账
|
|
@@ -58,10 +58,10 @@ updated: "2026-04-25"
|
|
|
58
58
|
**解决方案:**
|
|
59
59
|
```bash
|
|
60
60
|
# 重新授权
|
|
61
|
-
mcporter auth
|
|
61
|
+
mcporter auth 柴米AI记账
|
|
62
62
|
|
|
63
63
|
# 或强制清除缓存后重新授权
|
|
64
|
-
mcporter auth
|
|
64
|
+
mcporter auth 柴米AI记账 --reset
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
### 1.3 验证码错误
|
|
@@ -76,7 +76,7 @@ mcporter auth 柴米记账 --reset
|
|
|
76
76
|
- 验证码超过5分钟有效期
|
|
77
77
|
|
|
78
78
|
**解决方案:**
|
|
79
|
-
1. 重新执行 `mcporter auth
|
|
79
|
+
1. 重新执行 `mcporter auth 柴米AI记账` 生成新验证码
|
|
80
80
|
2. 在5分钟内在小程序"我的"→"AI 助手绑定"中输入
|
|
81
81
|
3. 注意区分大小写
|
|
82
82
|
|
|
@@ -218,7 +218,7 @@ mcporter auth 柴米记账 --reset
|
|
|
218
218
|
|
|
219
219
|
**解决方案:**
|
|
220
220
|
1. 等待几分钟后重试
|
|
221
|
-
2.
|
|
221
|
+
2. 检查柴米AI记账官方公告
|
|
222
222
|
3. 提交反馈:调用 `submit_feedback`
|
|
223
223
|
|
|
224
224
|
---
|
|
@@ -269,7 +269,7 @@ cat /mcp-server-local/references/response-templates.md
|
|
|
269
269
|
chaimi-keep-mcp --version
|
|
270
270
|
|
|
271
271
|
# 重新授权
|
|
272
|
-
mcporter auth
|
|
272
|
+
mcporter auth 柴米AI记账
|
|
273
273
|
|
|
274
274
|
# 测试记账连接
|
|
275
275
|
curl -X POST https://cloud1-2gfe5jhjef06b85d-1412172089.ap-shanghai.app.tcloudbase.com/mcpHub-mcp \
|
package/server.js
CHANGED
|
@@ -243,7 +243,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
243
243
|
tools: [
|
|
244
244
|
{
|
|
245
245
|
name: 'get_skill',
|
|
246
|
-
description: '
|
|
246
|
+
description: '【记账前必须调用】获取柴米AI记账最新 Skill 定义。每次记账前必须先调用此工具,获取当前版本的完整 Skill 文档,然后严格按照 Skill 定义执行。如果不调用此工具直接记账,操作将被拒绝',
|
|
247
247
|
inputSchema: {
|
|
248
248
|
type: 'object',
|
|
249
249
|
properties: {
|
|
@@ -253,7 +253,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
253
253
|
},
|
|
254
254
|
{
|
|
255
255
|
name: 'save_expense',
|
|
256
|
-
description: '
|
|
256
|
+
description: '【文本记账-支出】用户提及支出/消费时用此工具。前置:必须先调用get_skill获取规范,再调用get_text_parse_prompt获取Token和解析模板。用法:mcporter call 柴米AI记账.save_expense _requestToken="RT..." name="午餐" amount=35 category="餐饮" rawInput="午餐35元"。注意:上传图片请用save_receipt',
|
|
257
257
|
inputSchema: {
|
|
258
258
|
type: 'object',
|
|
259
259
|
properties: {
|
|
@@ -275,7 +275,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
275
275
|
},
|
|
276
276
|
{
|
|
277
277
|
name: 'save_receipt',
|
|
278
|
-
description: '
|
|
278
|
+
description: '【图片记账-小票】用户上传小票/发票/收据图片时用此工具。前置:必须先调用get_skill获取规范,再调用get_parse_prompt获取Token和解析模板。用法:mcporter call 柴米AI记账.save_receipt _requestToken="RT..." store="超市" totalAmount=156.5 items="[...]"。注意:文字描述请用save_expense/save_income',
|
|
279
279
|
inputSchema: {
|
|
280
280
|
type: 'object',
|
|
281
281
|
properties: {
|
|
@@ -403,7 +403,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
403
403
|
},
|
|
404
404
|
{
|
|
405
405
|
name: 'save_income',
|
|
406
|
-
description: '
|
|
406
|
+
description: '【文本记账-收入】用户提及收入关键词(工资、红包、转账、退款等)时用此工具。前置:必须先调用get_skill获取规范,再调用get_text_parse_prompt获取Token和解析模板。用法:mcporter call 柴米AI记账.save_income _requestToken="RT..." name="红包" amount=100 category="礼金" rawInput="收红包100元"',
|
|
407
407
|
inputSchema: {
|
|
408
408
|
type: 'object',
|
|
409
409
|
properties: {
|
|
@@ -779,10 +779,6 @@ function recordSkillRead() {
|
|
|
779
779
|
// 工具调用处理
|
|
780
780
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
781
781
|
const { name, arguments: args } = request.params;
|
|
782
|
-
|
|
783
|
-
// 【调试】记录实际接收到的参数
|
|
784
|
-
console.log(`[CallTool] ${name} 接收参数:`, JSON.stringify(args, null, 2));
|
|
785
|
-
|
|
786
782
|
const startTime = Date.now();
|
|
787
783
|
const traceId = generateTraceId();
|
|
788
784
|
const osInfo = getOSInfo();
|
|
@@ -981,7 +977,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
981
977
|
success: false,
|
|
982
978
|
error: `必填字段缺失:${missingFields.join(', ')}`,
|
|
983
979
|
code: 400,
|
|
984
|
-
hint: '解决方法:1.查看 SKILL.md 中"六.5 如何查看工具参数" 2.运行 mcporter list
|
|
980
|
+
hint: '解决方法:1.查看 SKILL.md 中"六.5 如何查看工具参数" 2.运行 mcporter list 柴米AI记账 --schema 查看完整参数结构',
|
|
985
981
|
debug: {
|
|
986
982
|
missing: missingFields,
|
|
987
983
|
received: Object.keys(processedArgs),
|
|
@@ -1105,7 +1101,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1105
1101
|
success: false,
|
|
1106
1102
|
error: `必填字段缺失:${missingFields.join(', ')}`,
|
|
1107
1103
|
code: 400,
|
|
1108
|
-
hint: '解决方法:1.查看 SKILL.md 中"六.5 如何查看工具参数" 2.运行 mcporter list
|
|
1104
|
+
hint: '解决方法:1.查看 SKILL.md 中"六.5 如何查看工具参数" 2.运行 mcporter list 柴米AI记账 --schema 查看完整参数结构',
|
|
1109
1105
|
debug: {
|
|
1110
1106
|
missing: missingFields,
|
|
1111
1107
|
received: Object.keys(processedArgs),
|
|
@@ -1173,7 +1169,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1173
1169
|
error: `商品数据不完整:${invalidItems.join('; ')}。每个商品必须包含:name, amount, price, quantity, category`,
|
|
1174
1170
|
code: 400
|
|
1175
1171
|
};
|
|
1176
|
-
userMessage = `❌ 保存失败\n\n错误:商品数据格式不完整\n\n${invalidItems.join('\n')}\n\n💡 解决方案:\n1.
|
|
1172
|
+
userMessage = `❌ 保存失败\n\n错误:商品数据格式不完整\n\n${invalidItems.join('\n')}\n\n💡 解决方案:\n1. 请更新您的柴米AI记账 MCP Skill\n2. 确保每个商品包含完整的5个字段:name, amount, price, quantity, category\n3. category 是记账的基本信息,不能为空`;
|
|
1177
1173
|
break;
|
|
1178
1174
|
}
|
|
1179
1175
|
|
|
@@ -1500,7 +1496,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1500
1496
|
success: false,
|
|
1501
1497
|
error: `必填字段缺失:${missingFields.join(', ')}`,
|
|
1502
1498
|
code: 400,
|
|
1503
|
-
hint: '解决方法:1.查看 SKILL.md 中"六.5 如何查看工具参数" 2.运行 mcporter list
|
|
1499
|
+
hint: '解决方法:1.查看 SKILL.md 中"六.5 如何查看工具参数" 2.运行 mcporter list 柴米AI记账 --schema 查看完整参数结构',
|
|
1504
1500
|
debug: {
|
|
1505
1501
|
missing: missingFields,
|
|
1506
1502
|
received: Object.keys(processedArgs),
|
|
@@ -1707,7 +1703,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1707
1703
|
content: [
|
|
1708
1704
|
{
|
|
1709
1705
|
type: 'text',
|
|
1710
|
-
text: `⚠️ 【注意】Server 只返回原始数据,不返回格式化消息。\n请使用 _templateLocation 指定的模板自行渲染回复。\n\n---\n📦
|
|
1706
|
+
text: `⚠️ 【注意】Server 只返回原始数据,不返回格式化消息。\n请使用 _templateLocation 指定的模板自行渲染回复。\n\n---\n📦 柴米AI记账 MCP v${MCP_VERSION}\n\n## 完整数据\n\`\`\`json\n${safeStringify(responseData)}\n\`\`\``,
|
|
1711
1707
|
},
|
|
1712
1708
|
],
|
|
1713
1709
|
};
|