mcpField
R
ratebook

ratebook

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

关于 ratebook

ratebook 是面向美国电价的开源计算引擎和 MCP 服务,供应用、设备与 Agent 查询费率并估算账单。它还可比较方案并识别适合充电的时段,目前仍处于预发布阶段。

主要功能

  1. 01查询电价方案
  2. 02估算电费账单
  3. 03比较电价方案
  4. 04计算最佳充电时段
  5. 05从公用事业 PDF 提取费率结构

适用场景

  1. 01估算家庭用电账单
  2. 02比较不同电价计划
  3. 03安排电动汽车充电时段

MCP 相关

MCP 服务向客户端提供 lookup_tariff、estimate_bill、compare_plans 和 best_charge_window 工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"cbetz-ratebook": {
"command": "uvx",
"args": [
"ratebook-mcp"
]
}
}
}
启动命令uvx ratebook-mcp

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

安装包
pypiratebook-mcp0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Ratebook

面向电气化家庭的开放电价引擎——一个以开放许可发布的美国电价数据库、一个开源电价计算引擎和一个 MCP 服务,让任何应用、设备或 Agent 都能回答“这一度电要花多少钱?我应该什么时候充电?”

License: Apache-2.0 Data: CC0-1.0 Python 3.12+ CI

Ratebook 演示——估算月度电费,并查看电动汽车在非高峰时段充电便宜约 23%,由引擎实时计算

↑ 在浏览器中运行的真实引擎。亲自试试:demo/demo.html。

状态:预发布。 当前可用功能:确定性电价引擎(Python 版本及逐字节一致的 TypeScript 移植版),已与 NREL 的 PySAM 进行交叉验证,并证明在提供账单组成项后可以复现真实账单总额;可从公用事业公司的 PDF 中提取电价结构的 LLM 流程;MCP 服务;以及 Home Assistant 集成。仍在进行中的工作:扩大公用事业公司覆盖范围、实现数据新鲜度自动化,以及建立可复现的公开准确度评分卡。请参阅 docs/ROADMAP.md。

快速开始

引擎没有 I/O,也不需要下载数据——只需几行代码即可计算电价:

git clone https://github.com/cbetz/ratebook && cd ratebook
uv sync
uv run python quickstart.py   # or paste the snippet below into `uv run python`
from datetime import date
from decimal import Decimal
from ratebook import (
    Tariff, TariffIdentity, Sector, EnergyRateStructure, EnergyPeriod, EnergyTier,
    Schedule, FixedCharge, FixedChargeUnit, Usage, BillingWindow, estimate_bill,
)

# A flat residential tariff: $0.10276/kWh + $11.30/month (PECO Rate R distribution).
no_tou = tuple(tuple(0 for _ in range(24)) for _ in range(12))  # 12 months × 24 hours, one period
tariff = Tariff(
    energy=EnergyRateStructure(periods=(EnergyPeriod(tiers=(EnergyTier(rate=Decimal("0.10276")),)),)),
    schedule=Schedule(weekday=no_tou, weekend=no_tou),
    identity=TariffIdentity(plan_code="R", plan_name="Example flat residential", sector=Sector.RESIDENTIAL),
    fixed_charges=(FixedCharge(Decimal("11.30"), FixedChargeUnit.PER_MONTH),),
)

bill = estimate_bill(tariff, Usage.aggregate(1244), BillingWindow(date(2026, 4, 28), 30))
print(f"ok={bill.ok}  total=${bill.total}")   # ok=True  total=$139.13344  →  1244 kWh × $0.10276 + $11.30

真实电价方案可通过 JSON 往返转换:Tariff.from_json(...)。若要使用语料库数据,请加载 URDB 种子集(uv run ratebook-data urdb),或运行 MCP 服务(uv run ratebook-mcp),然后让 Agent 调用 lookup_tariff / estimate_bill / compare_plans / best_charge_window。

开发

Python 3.12+,uv 工作区,包含以下软件包: packages/ratebook(电价引擎)、packages/ratebook-data(数据工厂)、 packages/ratebook-mcp(MCP 服务)、packages/ratebook-ts(TypeScript 引擎移植版—— 使用 pnpm + vitest,并通过共享 JSON 测试向量与 Python 引擎保持一致),以及 packages/ratebook-homeassistant(Home Assistant 自定义集成:电价 + 最低成本充电时段传感器)。

uv sync                            # install all workspace packages + dev tools
uv run pytest                      # Python tests
uv run ruff check .                # lint
uv run ratebook-data urdb          # download URDB bulk CSV → data/raw/, load into data/ratebook.duckdb
uv run ratebook-mcp                # run the MCP server (stdio)

pnpm -C packages/ratebook-ts install && pnpm -C packages/ratebook-ts test   # TS engine + vectors

PySAM 交叉验证会在 CI 中针对已提交的电价方案 fixture 运行(uv sync --group validation 会安装作为基准的实现)。MCP 工具测试还需要构建好的语料库,并在本地运行(uv run ratebook-data urdb);否则会跳过。两个引擎必须始终保持一致:它们都必须逐字节复现 packages/ratebook/tests/vectors/v0_bills.json。使用 uv run python packages/ratebook/tests/generate_vectors.py 重新生成。

请参阅 CONTRIBUTING.md——最有价值的贡献是修正电价方案(提供来源 PDF,报告错误或过时的电价)。

许可证

代码采用 Apache-2.0 许可证。发布的数据集依据 CC0-1.0 献予公有领域。种子语料库源自 U.S. Utility Rate Database(CC0)。

评论

支持 Markdown

第一次接触 MCP?

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

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