mcpField
S
shikamaru

shikamaru

本地服务
github.com/JayOfemi金融数据113 周前更新

关于 shikamaru

shikamaru 是用于金融日期与利息计算的 TypeScript 库和 MCP 服务,面向需要确定性结果的 Agent。它涵盖日计数、节假日、营业日和付款计划,并以 QuantLib 进行验证。

主要功能

  1. 01支持七种日计数惯例
  2. 02计算简单应计利息
  3. 03内置五种节假日日历
  4. 04营业日调整与 T+N 结算
  5. 05生成含短长 stub 的付款计划
  6. 06提供结构化只读 MCP 工具

适用场景

  1. 01计算金融合约的日计数分数
  2. 02求取应计利息
  3. 03确定节假日调整后的结算日期
  4. 04生成定期付款日期表

MCP 相关

MCP 服务将日期、利息、日历和计划计算作为工具提供给 MCP 客户端。工具标记为只读,并返回结构化输出。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jayofemi-shikamaru": {
"command": "npx",
"args": [
"-y",
"@jayofemi/shikamaru"
]
}
}
}
启动命令npx -y @jayofemi/shikamaru

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@jayofemi/shikamaru1.1.1

工具

8

收录的工具列表 · 更新于 2 周前

参数类型必填说明
endany是
startstring是ISO 日历日期,YYYY-MM-DD(例如 2024-03-15)。补齐前导零,不含时间或时区。
frequencyinteger否仅适用于 ACT/ACT ICMA,且为必填项:每年的票息支付次数(1、2、3、4、6 或 12)。
conventionenum是日计数惯例,例如 ACT/ACT ISDA 或 30/360。30/360 | 30E/360 | 30E/360 ISDA | ACT/360 | ACT/365F | ACT/ACT ISDA | ACT/ACT ICMA
referenceEndany否
referenceStartstring否仅适用于 ACT/ACT ICMA:参考(名目票息)期间边界,ISO YYYY-MM-DD。referenceStart 和 referenceEnd 必须同时提供,或都不提供。
endIsTerminationboolean否仅适用于 30E/360 ISDA:如果结束日期是该金融工具的到期日,则为 true。

详细介绍

shikamaru

CI

提供可验证正确的计日、节假日日历、工作日和付款计划计算。这是一个小巧、依赖精简的 TypeScript 库和 MCP 服务,让 AI Agent 能准确获取日期或数字,而不是靠猜测。

为什么需要它

大模型在日期和金额计算上并不可靠:它们可能选错计日惯例、漏掉市场假日,也可能算错应计利息。shikamaru 以确定性方式完成计算,并通过公开的参考值验证结果。不要让模型猜测你的利息应计或结算日期。

功能

  • 根据七种市场惯例计算两个日期之间的计日分数:30/360、30E/360、30E/360 ISDA、ACT/360、ACT/365F、ACT/ACT ISDA、ACT/ACT ICMA(含参考期间和首尾不完整期间分解)。
  • 计算简单应计利息:名义金额 x 利率 x 计日分数。
  • 将节假日日历定义为代码规则,无需数据源:us-federal、nyse、sifma-us、target、uk。
  • 工作日计算:是否为工作日、下一个/上一个工作日、ISDA 调整惯例(顺延、经调整的顺延、提前、经调整的提前)、T+N 结算。
  • 付款计划:月度至年度频率,向前或向后滚动,短周期或长周期首尾不完整期间,月末规则,以及每期未调整和调整后的日期。
  • 所有功能均可通过库和 MCP 服务使用。
  • 每个 MCP 工具都标注为只读,并在纯文本结果之外返回结构化输出(符合输出架构的类型化 JSON),因此 Agent 客户端无需解析文本即可获取数值。
日历维护约定

日历由已发布的规则和一份简短的历史临时关闭日期表组成,内容截至当前版本。规则可生成任意未来日期的正确结果;临时关闭日期(如哀悼日或宣布增加的假日)会在公布后添加,并随补丁版本发布。定时 CI 任务每周都会将所有日历与最新的 QuantLib 进行重新核对,以便及时发现偏差,而非事后才察觉。

安装

npm install @jayofemi/shikamaru

库的用法

import {
	accruedInterest, addBusinessDays, adjustDate, dayCountFraction,
	generateSchedule, isBusinessDay,
} from "@jayofemi/shikamaru";

dayCountFraction("2003-11-01", "2004-05-01", "ACT/ACT ISDA"); // 0.4977...
accruedInterest({
	notional: 1_000_000,
	rate: 0.05,
	start: "2024-01-01",
	end: "2024-04-01",
	convention: "ACT/365F",
});

isBusinessDay("2024-06-19", "nyse"); // false (Juneteenth)
adjustDate("2024-03-29", "modified-following", "target"); // "2024-03-28" (Good Friday, stays in March)
addBusinessDays("2024-07-02", 2, "us-federal"); // "2024-07-05" (T+2 over July 4th)

generateSchedule({
	effective: "2024-01-15",
	termination: "2026-01-15",
	frequency: "semiannual",
	calendar: "target",
}); // four periods with unadjusted and adjusted dates

日期必须采用严格的 ISO 格式 YYYY-MM-DD。利率为年化小数(0.05 = 5%)。

MCP 服务 shikamaru MCP 服务

shikamaru MCP 服务

从源码启动(本地开发):

npm install
npm run build
node dist/cli.js

也可以直接启动已发布的软件包:

npx @jayofemi/shikamaru

通过 stdio 将任意 MCP 客户端(Claude Desktop、IDE 等)连接到该命令。

Claude Code 用户也可以将其安装为插件,自动注册 MCP 服务:

/plugin marketplace add JayOfemi/shikamaru
/plugin install shikamaru@shikamaru

验证 MCP 服务

测试套件会在内存中端到端测试该服务,涵盖工具列表、只读标注、针对每种输出架构的结构化输出,以及对每个工具的调用。如需交互式检查,请使用官方 MCP Inspector:

npm run build
npx @modelcontextprotocol/inspector node dist/cli.js

它会打开本地 UI,通过 stdio 连接,列出工具并允许你调用它们。快速验证:使用开始日期 2003-11-01、结束日期 2004-05-01 和惯例 ACT/ACT ISDA 调用 day_count_fraction,返回值约为 0.4977。

正确性

约定遵循 ISDA 2006 定义;日历遵循其发布来源(OPM、NYSE 规则、SIFMA 建议、ECB TARGET 规则、gov.uk 公告)。测试套件会检查已发布的参考向量(ISDA 示例、官方假日列表、OpenGamma 约定指南)、属性检查,以及与事实标准 QuantLib 的差异测试:计日分数、跨数十年的各日历完整假日列表、营业日调整和递进、逐日对比的计划表,以及包含短首尾期的 ACT/ACT ICMA 分数。

要(重新)生成 QuantLib 测试集(需要 Python + pip):

pip install QuantLib
npm run vectors

这会写入 test/vectors/quantlib.json 和 test/vectors/quantlib-calendar.json(两者都要提交)。随后,npm test 会将 shikamaru 与每个 QuantLib 值进行检查。CI 会在每次推送时以及每周定期任务(漂移监控)中,使用最新的 QuantLib 重新生成测试集,因此即使仓库没有变动,现实中的日历变更也会触发失败运行。这就是产品的证明。

开发

npm install
npm run build
npm test

许可证

MIT。版权所有 (c) 2026 Jay Ofemi。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。