Skip to main content
Glama
powercess

yimu-mcp

by powercess

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
YIMU_EMAILNo账号邮箱(可选:未配 TOKEN 时启动自动登录;login_email 不传参时用这对凭据)
YIMU_TOKENNo登录令牌 JWT(登录后获得,优先级最高)
YIMU_QR_DIRNo二维码保存目录,默认系统临时目录
YIMU_USER_IDNo用户 ID(部分接口需要,登录后自动获取)
YIMU_BASE_URLNo服务地址,默认 https://yimubill.com/apihttps://yimubill.com/api
YIMU_PASSWORDNo账号密码(可选:未配 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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
auth_statusA

查看登录状态(本地配置,不发请求):是否持有 JWT、用户 ID、API 基址。

login_qr_startA

创建扫码登录会话(免鉴权)。返回 session_id、qr_payload(login:)与二维码图片:

  1. 结果附带的 image 内容块可直接在支持图片的 harness 界面展示;

  2. text 中内嵌 UTF-8 终端二维码(等宽字体直显,无需打开图片);

  3. 图片同时保存到二维码目录(--qr-dir / YIMU_QR_DIR,默认系统临时目录 yimu-mcp/),text 中给出完整路径;

  4. 服务端同时把 ANSI 彩色二维码打印到 stderr(服务运行在终端里时控制台直接可见)。 二维码 2 分钟有效,用一木记账 App【首页】-【更多】-【扫一扫】扫描后调用 login_qr_poll 等待登录结果。

login_qr_pollA

等待/轮询扫码登录结果(免鉴权)。timeout 秒内每 3 秒查询一次,用户扫码后返回 status=success 与用户对象(JWT 已自动保存);timeout=0 只查一次。默认 120 秒。

login_qr_recognizeA

从 PNG 图片识别二维码内容(免鉴权,测试/自动登录链路校验用):传入图片路径,返回二维码文本与 session_id。可用于验证 login_qr_start 生成的二维码文件内容是否为 login:。

login_emailA

邮箱密码登录(免鉴权)。密码按网页端加密方案(AES-128-ECB)加密后提交;返回用户对象与 JWT。不传 email/password 时使用环境变量 YIMU_EMAIL/YIMU_PASSWORD(未配置则报错)。请优先使用扫码登录(更安全)。

get_meA

查询当前用户信息(POST /user/getUserInfoById);响应顶层 token 会自动刷新 JWT。

sync_pullA

增量拉取全部业务数据(GET /updateTime/getUpdateDataPage/{userId}/{time})。返回 {syncTime, Bill:[...], Asset:[...], ParentCategory:[...], ...} 等实体列表;time 为上次同步时间戳(ms),缺省 0 表示全量(数据量大,注意输出上限)。新同步建议先调 get_book_last_time / get_me 取游标。

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})。返回 {Bill:[...], syncTime, hasMoreData};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}),返回结构化账单信息。

get_stsB

获取对象存储临时凭证(GET /app/getSts/{userId},返回原始响应体)。

get_sts_no_verifyA

获取对象存储临时凭证(免鉴权变体,GET /app/getStsNoVerify/,返回原始响应体)。

api_requestA

通用 API 请求(逃生通道,覆盖全部接口)。path 支持 {userId}/{bookId}/{time} 等占位符由 params 填充;自动携带 token 头并解包 {code,msg,result} 信封。可用路径见 README 接口清单;例如:{method:POST, path:/bill/addOrUpdateBill, body:{...}}、{method:GET, path:/bill/getBillCount/{userId}, params:{userId:123}}。

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 49 tools

Disambiguation4/5

Most tools are clearly separated by resource-specific nouns such as bill, asset, tag, transfer, lend, category, and refund, so save_bill vs save_asset are unambiguous. The main confusions are the near-duplicate get_sts/get_sts_no_verify pair, auth_status vs get_me, and the generic api_request catch-all.

Naming Consistency5/5

The set follows a consistent verb_noun snake_case pattern: get_*, save_*, delete_*, login_*, and sync_*. Exceptions like auth_status and api_request still read predictably and do not break the overall convention.

Tool Count2/5

With 49 tools, the surface is heavy: every entity exposes save/delete pairs, plus sync, auth, STS, and a raw api_request fallback. Even though the bookkeeping domain is broad, this many tools exceeds the range where an agent can efficiently select among them without high cognitive overhead.

Completeness5/5

The set covers the full lifecycle of core bookkeeping entities, authentication, incremental sync, deletion history, batch operations, and a raw API escape hatch. Per-entity read gaps are covered by sync_pull, so workflows do not hit dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues