yimu-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YIMU_EMAIL | No | 账号邮箱(可选:未配 TOKEN 时启动自动登录;login_email 不传参时用这对凭据) | |
| YIMU_TOKEN | No | 登录令牌 JWT(登录后获得,优先级最高) | |
| YIMU_QR_DIR | No | 二维码保存目录,默认系统临时目录 | |
| YIMU_USER_ID | No | 用户 ID(部分接口需要,登录后自动获取) | |
| YIMU_BASE_URL | No | 服务地址,默认 https://yimubill.com/api | https://yimubill.com/api |
| YIMU_PASSWORD | No | 账号密码(可选:未配 TOKEN 时启动自动登录;login_email 不传参时用这对凭据) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| auth_statusA | 查看登录状态(本地配置,不发请求):是否持有 JWT、用户 ID、API 基址。 |
| login_qr_startA | 创建扫码登录会话(免鉴权)。返回 session_id、qr_payload(login:<session_id>)与二维码图片:
|
| login_qr_pollA | 等待/轮询扫码登录结果(免鉴权)。timeout 秒内每 3 秒查询一次,用户扫码后返回 status=success 与用户对象(JWT 仅保留在当前进程内部);timeout=0 只查一次。默认 120 秒。 |
| login_emailA | 邮箱密码登录(免鉴权)。密码按网页端加密方案(AES-128-ECB)加密后提交;仅返回登录状态与用户对象。不传 email/password 时使用环境变量 YIMU_EMAIL/YIMU_PASSWORD(未配置则报错)。请优先使用扫码登录(更安全)。 |
| get_meA | 查询当前用户信息(POST /user/getUserInfoById);响应顶层 token 会自动刷新 JWT。 |
| sync_pullA | 增量拉取业务数据(GET /updateTime/getUpdateDataPage/{userId}/{time})。默认返回摘要:syncTime、各实体计数、收支合计、最近10笔、分类Top10、资产列表——适合 AI 快速分析账目;需要完整明细时传 summary=false,各实体按业务字段精简返回(Bill 只含 billId/cost/日期/分类/备注等)。time 为上次同步时间戳(ms),缺省 0 表示全量。 |
| get_delete_historyB | 查询删除记录(GET /deleteHistory/getDeleteHistory/{userId}/{time}),time 缺省 0 全量。 |
| get_bill_countC | 查询账单总数(GET /bill/getBillCount/{userId})。 |
| get_book_billsA | 分页查询账本账单(GET /bill/getAccountBillPage/{userId}/{bookId}/{page})。返回 {syncTime, hasMoreData, billCount, totals:{income,expense}, bills:[精简账单]};账单只含 billId/cost/日期/分类/备注/账户等业务字段。page 从 0 起,按 hasMoreData 翻页。 |
| get_book_last_timeA | 查询账本最后同步时间戳(ms)(GET /bill/getAccountLastTime/{userId}/{bookId}),可作增量同步游标。 |
| get_share_accountsB | 查询共享账本列表(GET /accountBook/getShareAccount/{userId})。 |
| get_assetsA | 查询资产列表(GET /asset/getAsset/{userId}/{time}),time 为起始时间戳(ms),缺省 0 全量;每个资产只保留业务字段(名称/余额/类型/分组)。 |
| get_account_membersC | 查询账本成员(GET /accountBook/getAccountMember/{userId}/{bookId})。 |
| get_account_delete_historyC | 查询账本删除历史(GET /accountBook/getAccountDeleteHistory/{userId}/{ownerId}/{bookId}/{lastSyncTime})。 |
| get_currencyB | 查询币种数据(GET /currency/getCurrencyData/{userId})。 |
| get_category_infoC | 查询分类信息(图标/预设分类,GET /icon/getCategoryInfo/{userId})。 |
| sync_startA | 开始同步限流会话(免鉴权,POST /bookkeeping/rateLimit/sync/start)。批量写操作前先 start,全部完成后务必 sync_end 归还会话,避免触发限流。返回 {syncCount, sessionId}。 |
| sync_endA | 结束同步限流会话(免鉴权,POST /bookkeeping/rateLimit/sync/end?sessionId=)。 |
| save_billA | 新增或更新账单(POST /bill/addOrUpdateBill,upsert:带 billId 为更新,缺省为新增)。自动归一化:tags 数组→JSON 字符串、recordTime 缺省取 updateTime/当前时间、billId 超 int32 自动重生成。bill 字段: billId 主键;cost 金额(元);time 记账时间(ms);billType 记录方式(1快捷/2手动/3导入/4周期/5自动/6模板);parentCategoryId/childCategoryId 分类(收支由分类决定);remark 备注;assetId 账户;bookId 账本;tags 标签(数组或 JSON 字符串均可);recordTime 记录时间;reimbursement/reimbursementEnd 报销;notIntoTotal/notIntoBudget 不计收支/预算;currencyInfo 币种;userId/updateTime 自动填充 |
| save_billsA | 批量新增/更新账单(POST /bill/addOrUpdateBillList)。自动按 100 条分批、每批 updateTime 递增(与网页端一致)。bill 字段同 save_bill。 |
| delete_billC | 删除账单(POST /bill/deleteBill,按 billId 删除)。 |
| save_assetA | 新增或更新资产(POST /asset/addOrUpdateAsset,upsert:带主键为更新)。entity 字段:assetId 主键;assetName 名称;assetType 类型;assetNumber 余额;totalQuota 总额度;intoTotalAsset 计入总资产;hide 隐藏;bookId 账本;currency 币种;remark/simpleName/cardCode/positionWeight 可选;userId/updateTime 自动填充 |
| delete_assetA | 删除资产(POST /asset/deleteAsset)。entity 需携带主键字段(assetId)与 userId。 |
| save_account_bookB | 新增或更新账本(POST /accountBook/addOrUpdateAccountBook,upsert:带主键为更新)。entity 字段:accountBookId 主键;bookName 账本名;bookType 账本类型;shareUsers 共享用户;字段按服务端契约传递 |
| delete_account_bookA | 删除账本(POST /accountBook/deleteAccountBook)。entity 需携带主键字段(accountBookId)与 userId。 |
| save_tagA | 新增或更新标签(POST /tag/addOrUpdateTag,upsert:带主键为更新)。entity 字段:tag 字段无快照数据;至少携带 tagId/tagName 与 userId,其余按服务端契约传递 |
| delete_tagB | 删除标签(POST /tag/deleteTag)。entity 需携带主键字段(tagId)与 userId。 |
| save_transferA | 新增或更新转账(POST /transfer/addOrUpdateTransfer,upsert:带主键为更新)。entity 字段:transferId 主键;cost 金额;serviceCharge 手续费;time 时间;fromAssetId/toAssetId 转出/转入账户;toCost 到账金额;billId 关联账单;remark 备注 |
| delete_transferB | 删除转账(POST /transfer/deleteTransfer)。entity 需携带主键字段(transferId)与 userId。 |
| save_lendA | 新增或更新借贷(POST /lend/addOrUpdateLend,upsert:带主键为更新)。entity 字段:lendId 主键;type 类型(借出/借入);number 金额;interest 利息;outTime/inTime 借出/归还时间;assetId 关联账户;repaymentAssetId 还款账户;remark 备注 |
| delete_lendA | 删除借贷(POST /lend/deleteLend)。entity 需携带主键字段(lendId)与 userId。 |
| save_parent_categoryB | 新增或更新一级分类(POST /parentCategory/addOrUpdateParentCategory,upsert:带主键为更新)。entity 字段:categoryId 主键;categoryName 名称;iconUrl 图标;positionWeight 排序;hide 隐藏;categoryType 类型 |
| delete_parent_categoryA | 删除一级分类(POST /parentCategory/deleteParentCategory)。entity 需携带主键字段(categoryId)与 userId。 |
| save_child_categoryA | 新增或更新二级分类(POST /childCategory/addOrUpdateChildCategory,upsert:带主键为更新)。entity 字段:categoryId 主键;categoryName 名称;iconUrl 图标;parentCategoryId 所属一级分类;positionWeight 排序;hide 隐藏;categoryType 类型 |
| delete_child_categoryA | 删除二级分类(POST /childCategory/deleteChildCategory)。entity 需携带主键字段(categoryId)与 userId。 |
| save_reimbursementA | 新增或更新报销(POST /reimbursement/addOrUpdateReimbursement,upsert:带主键为更新)。entity 字段:reimbursement 无快照数据;携带 billId/remark/金额字段与 userId,按服务端契约传递 |
| delete_reimbursementA | 删除报销(POST /reimbursement/deleteReimbursement)。entity 需携带主键字段(reimbursementId)与 userId。 |
| save_refundA | 新增或更新退款(POST /refund/addOrUpdateRefund,upsert:带主键为更新)。entity 字段:refundId 主键;billId 关联账单;refundNum 退款金额;refundInfos 退款明细(JSON) |
| delete_refundB | 删除退款(POST /refund/deleteRefund)。entity 需携带主键字段(refundId)与 userId。 |
| save_bill_fileA | 新增或更新账单附件(POST /billFile/addOrUpdateBillFile,upsert:带主键为更新)。entity 字段:fileId 主键;billId 关联账单;remotePath 远程路径;fileName 文件名;fileSize 大小;transferId/lendId 可选 |
| delete_bill_fileA | 删除账单附件(POST /billFile/deleteBillFile)。entity 需携带主键字段(fileId)与 userId。 |
| save_bill_importB | 新增或更新账单导入记录(POST /billImport/addOrUpdateBillImport,upsert:带主键为更新)。entity 字段:billImport 导入记录;无快照数据,按服务端契约传递 |
| save_asset_historyA | 新增或更新资产变动记录(POST /assetHistory/addOrUpdateAssetHistory,upsert:带主键为更新)。entity 字段:assetHistoryId 主键;assetId 账户;time 时间;currentNum 变动后余额;changeNum 变动额;changeContent 变动说明 |
| delete_asset_historyA | 删除资产变动记录(POST /assetHistory/deleteAssetHistory)。entity 需携带主键字段(assetHistoryId)与 userId。 |
| parse_bill_textA | 解析记账原始文本(GET /bill/analysisBillInfoT/{userId}/{text}),返回结构化账单信息。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 45 tools
Most tools are clearly separated by entity-specific CRUD verbs (save_bill, delete_asset, save_transfer, etc.), so an agent can usually pick the right one. Some overlap remains around data retrieval and sync concepts (sync_pull vs get_book_bills vs sync_start/sync_end) and between general delete history and account-book delete history.
Tool names consistently use snake_case with a predictable verb_noun pattern: get_*, save_*, delete_*, login_*, sync_*, and a few auth/parse helpers. The convention is stable across all 45 tools with no style mixing.
45 tools is far above the typical well-scoped range and creates a large surface for an agent to navigate. The domain is broad, but the sheer number of entity-specific save/delete pairs makes the set heavy and easy to misuse.
Core bookkeeping lifecycles are covered through save/delete tools plus sync_pull and paginated bill queries, which can retrieve broader entity data. Dedicated read/list tools are missing for several entities (tags, transfers, lends, reimbursements, refunds, bill files), and delete coverage is not perfectly uniform, but these are workable gaps.