chaimi-bookkeeping-mcp 3.1.1 → 3.1.2
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 +53 -12
- package/bin/cli.js +5 -1
- package/package.json +1 -1
- package/server.js +20 -1
- package/SKILL.md +0 -134
package/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 柴米AI记账 MCP Server
|
|
2
2
|
|
|
3
|
-
通过 OpenClaw、WorkBuddy 等
|
|
3
|
+
通过 OpenClaw、WorkBuddy 等 AI 工具直接记账,支持 MCP 协议的 Claude、Cursor 等。
|
|
4
4
|
|
|
5
5
|
## 系统要求
|
|
6
6
|
|
|
7
7
|
- Node.js >= 18.0.0
|
|
8
8
|
- macOS / Windows / Linux
|
|
9
|
-
- 微信(已安装"
|
|
9
|
+
- 微信(已安装"柴米AI记账"小程序)
|
|
10
10
|
|
|
11
11
|
## 快速安装
|
|
12
12
|
|
|
@@ -43,26 +43,23 @@ MCP Server 会显示:
|
|
|
43
43
|
|
|
44
44
|
```
|
|
45
45
|
╔════════════════════════════════════════════════════════╗
|
|
46
|
-
║
|
|
46
|
+
║ 柴米AI记账 MCP Server - 首次使用需要授权 ║
|
|
47
47
|
╠════════════════════════════════════════════════════════╣
|
|
48
48
|
║ ║
|
|
49
|
-
║
|
|
49
|
+
║ 验证码:ABCD-EFGH ║
|
|
50
50
|
║ ║
|
|
51
|
-
║
|
|
51
|
+
║ 请在"柴米AI记账"小程序中完成授权: ║
|
|
52
52
|
║ ║
|
|
53
|
-
║
|
|
54
|
-
║ ║
|
|
55
|
-
║ 1. 打开"柴米记账"小程序 ║
|
|
53
|
+
║ 1. 打开"柴米AI记账"小程序 ║
|
|
56
54
|
║ 2. 点击"我的" → "🤖 Agent 授权" ║
|
|
57
|
-
║ 3.
|
|
55
|
+
║ 3. 输入验证码:ABCD-EFGH ║
|
|
58
56
|
║ ║
|
|
59
57
|
╚════════════════════════════════════════════════════════╝
|
|
60
58
|
```
|
|
61
59
|
|
|
62
60
|
### 3. 小程序授权
|
|
63
61
|
|
|
64
|
-
|
|
65
|
-
- **手机端用户**:打开小程序 → 我的 → Agent 授权 → 输入验证码
|
|
62
|
+
打开"柴米AI记账"小程序 → 点击"我的" → "🤖 Agent 授权" → 输入上述验证码
|
|
66
63
|
|
|
67
64
|
### 4. 完成
|
|
68
65
|
|
|
@@ -141,6 +138,50 @@ AI 会自动调用 `save_income` 工具记录收入。
|
|
|
141
138
|
|
|
142
139
|
## 更新日志
|
|
143
140
|
|
|
141
|
+
### v3.1.2 (2026-04-11)
|
|
142
|
+
- **修复** 启动界面版本号显示问题
|
|
143
|
+
- **修复** 首次安装验证码显示问题
|
|
144
|
+
- **优化** 内部测试流程
|
|
145
|
+
|
|
146
|
+
### v3.1.0 (2026-04-11)
|
|
147
|
+
- **移除** Python 版本 (`server.py`),统一使用 Node.js 版本
|
|
148
|
+
- **安全** 删除包含敏感 token 的 `config.yaml`,新增 `config.example.yaml` 模板
|
|
149
|
+
- **安全** 更新 `.gitignore` 和 `.npmignore`,排除敏感文件
|
|
150
|
+
- **优化** 项目结构,清理不必要的文件
|
|
151
|
+
|
|
152
|
+
### v3.0.3 (2026-04-10)
|
|
153
|
+
- **新增** `get_parse_prompt` 工具,首次实现将云函数 Prompt 模板完整返回给 Agent
|
|
154
|
+
- **优化** `mcpHub`:新增 `receiptNo` 自动生成逻辑(强制生成唯一 ID)
|
|
155
|
+
- **优化** `mcpHub`:优化 `actualAmount` 计算 fallback 逻辑
|
|
156
|
+
- **优化** `mcpPrompt`:升级 Prompt 版本到 2.0.2,强化支付金额字段提取
|
|
157
|
+
- **优化** `mcpPrompt`:优化 `date` 字段描述,要求 ISO 8601 完整时间格式
|
|
158
|
+
|
|
159
|
+
### v3.0.0 (2026-04-09)
|
|
160
|
+
- **新增** `submit_feedback` 工具,支持用户提交反馈
|
|
161
|
+
- **新增** 反馈双通道:数据库保存 + 小程序客服消息推送
|
|
162
|
+
- **优化** 小票记账功能,完善字段提取逻辑
|
|
163
|
+
|
|
164
|
+
### v2.3.4 (2026-04-08)
|
|
165
|
+
- **简化** `save_expense` 工具,只保留 `name` 和 `amount` 为必填参数
|
|
166
|
+
- **优化** 其他参数使用默认值,简化 Agent 调用
|
|
167
|
+
|
|
168
|
+
### v2.3.3 (2026-04-08)
|
|
169
|
+
- **修正** 版本号统一为 v2.3.3(包含 v2.3.2 的所有修复)
|
|
170
|
+
|
|
171
|
+
### v2.3.2 (2026-04-08)
|
|
172
|
+
- **修复** `server.js` 中 `CURRENT_VERSION` 未定义错误,统一使用 `MCP_VERSION`
|
|
173
|
+
- **修复** 所有工具的 `userMessage` 添加默认值,防止显示 `undefined`
|
|
174
|
+
|
|
175
|
+
### v2.3.1 (2026-04-08)
|
|
176
|
+
- **修复** `bin/cli.js` 版本号显示问题,改为动态读取 package.json
|
|
177
|
+
- **优化** OAuth 授权流程,轮询间隔缩短为 2 秒
|
|
178
|
+
|
|
179
|
+
### v2.3.0 (2026-04-08)
|
|
180
|
+
- **修复** `save_receipt` 的 `items` 参数解析 bug,支持 JSON 字符串自动转换
|
|
181
|
+
- **优化** `source` 字段规范:`save_expense`→`mcp_txt_expense`、`save_income`→`mcp_txt_income`、`save_receipt`→`mcp_receipt`
|
|
182
|
+
- **新增** `mcp_version` 字段追踪,便于版本监控
|
|
183
|
+
- **注释** `quick_book` 工具(暂时下线,待优化后重新开放)
|
|
184
|
+
|
|
144
185
|
### v2.2.0 (2026-04-05)
|
|
145
186
|
- **新增收入记账功能** (`save_income`)
|
|
146
187
|
- 支持工资、奖金、红包、投资收益等收入类型
|
package/bin/cli.js
CHANGED
|
@@ -10,6 +10,10 @@ const fs = require('fs');
|
|
|
10
10
|
const os = require('os');
|
|
11
11
|
const { spawn } = require('child_process');
|
|
12
12
|
|
|
13
|
+
// 读取 package.json 获取版本号
|
|
14
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8'));
|
|
15
|
+
const CURRENT_VERSION = packageJson.version;
|
|
16
|
+
|
|
13
17
|
// 获取 server.js 的绝对路径
|
|
14
18
|
const serverPath = path.join(__dirname, '..', 'server.js');
|
|
15
19
|
|
|
@@ -183,7 +187,7 @@ function configureAllAgents() {
|
|
|
183
187
|
function showWelcome() {
|
|
184
188
|
console.log('╔════════════════════════════════════════════════════════╗');
|
|
185
189
|
console.log('║ ║');
|
|
186
|
-
console.log(
|
|
190
|
+
console.log(`║ 柴米记账 MCP Server v${CURRENT_VERSION} ║`);
|
|
187
191
|
console.log('║ ║');
|
|
188
192
|
console.log('║ 支持: OpenClaw | WorkBuddy | Claude | Cursor ║');
|
|
189
193
|
console.log('║ ║');
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -50,9 +50,28 @@ function initOAuthManager() {
|
|
|
50
50
|
oauthManager = new OAuthManager({
|
|
51
51
|
mcpOAuthUrl: MCP_OAUTH_URL,
|
|
52
52
|
tokenStorage: tokenStorage,
|
|
53
|
+
// ⚠️ 重要:此回调在用户首次使用时显示验证码,切勿删除或清空!
|
|
54
|
+
// 如果删除,用户将无法看到授权验证码,导致无法使用 MCP Server
|
|
55
|
+
// 参见 FUNCTION_REGISTRY.md 中的 "验证码显示" 功能
|
|
53
56
|
onQrCode: (qrData) => {
|
|
57
|
+
// 输出授权信息到控制台(用户可见)
|
|
58
|
+
console.log('\n' + '='.repeat(60));
|
|
59
|
+
console.log(' 柴米AI记账 MCP Server - 首次使用需要授权');
|
|
60
|
+
console.log('='.repeat(60));
|
|
61
|
+
console.log('');
|
|
62
|
+
console.log(` 验证码:${qrData.userCode}`);
|
|
63
|
+
console.log('');
|
|
64
|
+
console.log(' 请在"柴米AI记账"小程序中完成授权:');
|
|
65
|
+
console.log('');
|
|
66
|
+
console.log(' 1. 打开"柴米AI记账"小程序');
|
|
67
|
+
console.log(' 2. 点击"我的" → "🤖 Agent 授权"');
|
|
68
|
+
console.log(` 3. 输入验证码:${qrData.userCode}`);
|
|
69
|
+
console.log('');
|
|
70
|
+
console.log('='.repeat(60) + '\n');
|
|
54
71
|
},
|
|
72
|
+
// ⚠️ 重要:此回调在授权成功后通知用户,切勿删除!
|
|
55
73
|
onTokenReady: (token) => {
|
|
74
|
+
console.log('✅ 授权成功!Token 已保存。');
|
|
56
75
|
}
|
|
57
76
|
});
|
|
58
77
|
|
|
@@ -112,7 +131,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
112
131
|
receiptNo: { type: 'string', description: '小票编号' },
|
|
113
132
|
items: {
|
|
114
133
|
type: 'array',
|
|
115
|
-
description: '
|
|
134
|
+
description: '商品列表,支持两种格式:1) 直接数组:[{"name":"苹果","amount":5.5}] 2) JSON字符串:"[{\"name\":\"苹果\",\"amount\":5.5}]"(部分Agent如Claude Code可能传递JSON字符串)',
|
|
116
135
|
items: {
|
|
117
136
|
type: 'object',
|
|
118
137
|
properties: {
|
package/SKILL.md
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
# 柴米记账 Skill
|
|
2
|
-
|
|
3
|
-
## 简介
|
|
4
|
-
|
|
5
|
-
柴米记账是一款智能记账工具,支持通过自然语言快速记录消费。本 Skill 让 WorkBuddy 能够自动识别记账意图,调用 MCP 工具完成记账。
|
|
6
|
-
|
|
7
|
-
## 安装
|
|
8
|
-
|
|
9
|
-
本 Skill 文件随 MCP Server 一起提供,位于 `mcp-server-local/SKILL.md`。
|
|
10
|
-
|
|
11
|
-
将本 Skill 复制到 WorkBuddy 的 skills 目录:
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
# 全局安装(推荐)
|
|
15
|
-
mkdir -p ~/.workbuddy/skills/柴米记账/
|
|
16
|
-
cp /path/to/caihuo_record_list/mcp-server-local/SKILL.md ~/.workbuddy/skills/柴米记账/
|
|
17
|
-
|
|
18
|
-
# 或项目级安装
|
|
19
|
-
mkdir -p ./.workbuddy/skills/柴米记账/
|
|
20
|
-
cp /path/to/caihuo_record_list/mcp-server-local/SKILL.md ./.workbuddy/skills/柴米记账/
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## 触发条件
|
|
24
|
-
|
|
25
|
-
当用户输入包含以下关键词时,自动触发本 Skill:
|
|
26
|
-
|
|
27
|
-
- 记账、花了、买了、消费、支出、付款
|
|
28
|
-
- 吃饭、购物、交通、娱乐、医疗、教育
|
|
29
|
-
- 元、块、钱、¥、$
|
|
30
|
-
- 超市、餐厅、商场、医院、学校
|
|
31
|
-
|
|
32
|
-
## 操作规范
|
|
33
|
-
|
|
34
|
-
### 1. 单商品记账
|
|
35
|
-
|
|
36
|
-
**用户示例:**
|
|
37
|
-
- "中午吃了碗面,25元"
|
|
38
|
-
- "买了杯咖啡35"
|
|
39
|
-
- "打车花了50块"
|
|
40
|
-
|
|
41
|
-
**调用工具:** `chaihuo.save_expense`
|
|
42
|
-
|
|
43
|
-
**参数提取:**
|
|
44
|
-
| 参数 | 提取规则 | 示例 |
|
|
45
|
-
|------|---------|------|
|
|
46
|
-
| name | 商品/服务名称 | "牛肉面"、"咖啡"、"打车" |
|
|
47
|
-
| amount | 金额数字 | 25、35、50 |
|
|
48
|
-
| category | 智能分类(见下表) | "餐饮"、"交通" |
|
|
49
|
-
| store | 商家名称(如有) | "星巴克"、"滴滴" |
|
|
50
|
-
|
|
51
|
-
**智能分类规则:**
|
|
52
|
-
| 关键词 | 分类 |
|
|
53
|
-
|--------|------|
|
|
54
|
-
| 吃、饭、面、咖啡、奶茶、餐厅 | 餐饮 |
|
|
55
|
-
| 打车、滴滴、地铁、公交、加油 | 交通 |
|
|
56
|
-
| 超市、买菜、水果、零食 | 食品 |
|
|
57
|
-
| 衣服、鞋、包、化妆品、购物 | 购物 |
|
|
58
|
-
| 电影、游戏、KTV、娱乐 | 娱乐 |
|
|
59
|
-
| 药、医院、看病、体检 | 医疗 |
|
|
60
|
-
| 书、课程、学费、培训 | 教育 |
|
|
61
|
-
| 其他 | 其他 |
|
|
62
|
-
|
|
63
|
-
### 2. 小票记账
|
|
64
|
-
|
|
65
|
-
**用户示例:**
|
|
66
|
-
- "在沃尔玛买了牛奶30,面包15,鸡蛋20"
|
|
67
|
-
- "晚餐:小炒肉45,米饭5,可乐8"
|
|
68
|
-
|
|
69
|
-
**调用工具:** `chaihuo.save_receipt`
|
|
70
|
-
|
|
71
|
-
**参数提取:**
|
|
72
|
-
| 参数 | 提取规则 |
|
|
73
|
-
|------|---------|
|
|
74
|
-
| store | 商家名称(第一句提到) |
|
|
75
|
-
| items | 商品列表,每个包含 name 和 amount |
|
|
76
|
-
| totalAmount | 自动计算总和 |
|
|
77
|
-
|
|
78
|
-
**商品解析示例:**
|
|
79
|
-
用户:"在沃尔玛买了牛奶30,面包15"
|
|
80
|
-
→ items: [
|
|
81
|
-
{ name: "牛奶", amount: 30 },
|
|
82
|
-
{ name: "面包", amount: 15 }
|
|
83
|
-
]
|
|
84
|
-
→ totalAmount: 45
|
|
85
|
-
|
|
86
|
-
## 回复格式
|
|
87
|
-
|
|
88
|
-
**成功时,只输出:**
|
|
89
|
-
```
|
|
90
|
-
✅ [商品名] ¥[金额] 已录入柴米记账
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
**示例:**
|
|
94
|
-
- ✅ 牛肉面 ¥25 已录入柴米记账
|
|
95
|
-
- ✅ 咖啡 ¥35 已录入柴米记账
|
|
96
|
-
- ✅ 小票(3件商品)¥58 已录入柴米记账
|
|
97
|
-
|
|
98
|
-
**失败时,输出:**
|
|
99
|
-
```
|
|
100
|
-
❌ 记账失败:[错误原因]
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## 注意事项
|
|
104
|
-
|
|
105
|
-
1. **不要暴露技术细节**:不显示 MCP 工具名、参数、JSON 等
|
|
106
|
-
2. **自动分类**:根据关键词智能判断分类,不确定时用"其他"
|
|
107
|
-
3. **金额识别**:支持"元"、"块"、"¥"等格式
|
|
108
|
-
4. **多商品**:一句话多个商品时,优先使用小票记账
|
|
109
|
-
|
|
110
|
-
## 配置要求
|
|
111
|
-
|
|
112
|
-
需要提前配置柴米记账 MCP Server:
|
|
113
|
-
|
|
114
|
-
```json
|
|
115
|
-
{
|
|
116
|
-
"mcpServers": {
|
|
117
|
-
"chaihuo": {
|
|
118
|
-
"command": "node",
|
|
119
|
-
"args": ["/path/to/caihuo_record_list/mcp-server-local/server.js"],
|
|
120
|
-
"env": {
|
|
121
|
-
"MCP_HUB_URL": "https://xxx.ap-shanghai.app.tcloudbase.com/mcpHub-mcp",
|
|
122
|
-
"MCP_TOKEN": "your-token",
|
|
123
|
-
"MCP_OPENID": "your-openid"
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Token 获取方式:微信小程序「柴米记账」→ 我的 → 桌面端记账 → 生成 Token
|
|
131
|
-
|
|
132
|
-
## 版本
|
|
133
|
-
|
|
134
|
-
- v1.0.0 - 支持单商品记账和小票记账
|