一个用于访问Monarch Money数据的TypeScript库。
bun add monarchmoney
或
npm install monarchmoney
最简单的开始方式是直接使用浏览器会话中的令牌:
import MonarchMoney from 'monarchmoney';
// 你可以从登录到Monarch Money网页后的浏览器localStorage或Cookies中获取这个令牌
const token = process.env.MONARCH_TOKEN;
// 使用令牌创建客户端
const mm = new MonarchMoney(token);
// 现在你可以无需登录就使用API
const accounts = await mm.getAccounts();
如果你没有令牌,可以使用凭证登录:
import MonarchMoney, { RequireMFAError } from 'monarchmoney';
// 创建新的客户端
const mm = new MonarchMoney();
// 使用环境变量登录
const email = process.env.MONARCH_USER;
const password = process.env.MONARCH_PASSWORD;
if (!email || !password) {
throw new Error('必须设置MONARCH_USER和MONARCH_PASSWORD环境变量');
}
// 登录
try {
await mm.login({
email,
password
});
} catch (error) {
if (error instanceof RequireMFAError) {
// 获取用户输入的MFA代码
const mfaCode = process.env.MONARCH_MFA || prompt('请输入MFA代码:');
await mm.authenticateWithMFA({
email,
password,
mfaCode
});
} else {
throw error;
}
}
你可以保存会话以备后用:
// 登录后保存会话
mm.saveSession();
// 后续加载会话
const mm = new MonarchMoney();
mm.loadSession();
// 现在你可以无需再次登录就能访问数据
const accounts = await mm.getAccounts();
// 获取账户
const accounts = await mm.getAccounts();
console.log(accounts);
// 获取当前月份的交易记录
const today = new Date();
const firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1);
const lastDayOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0);
const transactions = await mm.getTransactions({
limit: 10,
filters: {
startDate: firstDayOfMonth.toISOString().split('T')[0],
endDate: lastDayOfMonth.toISOString().split('T')[0]
}
});
console.log(transactions);
// 获取预算
const budgets = await mm.getBudgets();
console.log(budgets);
// 获取账户持仓
const holdings = await mm.getAccountHoldings('account-id-here');
console.log(holdings);
要运行包含的示例,你有两个选项:
# 在登录到Monarch Money后从浏览器获取令牌
# 在Chrome中:开发者工具 > 应用 > 存储 > Local Storage > monarchmoney.com > 找到auth令牌
export MONARCH_TOKEN="your-token-from-browser"
# 运行示例
bun run example
# 将你的凭证设置为环境变量
export MONARCH_USER="your.email@example.com"
export MONARCH_PASSWORD="your-password"
# 可选:如果需要,设置MFA代码
export MONARCH_MFA="123456"
# 运行示例
bun run example
此SDK提供对Monarch Money数据的只读访问:
getAccounts() - 获取所有账户getAccountTypeOptions() - 获取所有账户类型和子类型getAccountHoldings(accountId) - 获取经纪账户中的证券getAccountHistory(accountId) - 获取每日账户历史getInstitutions() - 获取已连接的机构getBudgets(startDate, endDate) - 获取预算和实际金额getSubscriptionDetails() - 获取账户订阅状态getTransactionsSummary() - 获取交易摘要数据getTransactions(options) - 获取交易数据getTransactionCategories() - 获取交易类别getTransactionCategoryGroups() - 获取交易类别组getTransactionDetails(transactionId) - 获取交易详情getTransactionSplits(transactionId) - 获取交易拆分getTransactionTags() - 获取交易标签getCashflow(options) - 获取现金流数据getCashflowSummary(options) - 获取现金流摘要getRecurringTransactions(startDate, endDate) - 获取定期交易此SDK包括一个Model Context Protocol (MCP)服务器,允许AI代理与Monarch Money进行交互。MCP服务器提供了查询账户、交易、预算等功能的工具。
要启动MCP服务器:
# 通过环境变量设置认证
export MONARCH_TOKEN="your-token-from-browser"
# 启动MCP服务器
bun run mcp
MCP服务器将自动使用MONARCH_TOKEN环境变量进行认证,并提供以下工具:
check_authentication - 检查是否已经认证get_accounts - 获取所有账户get_account_holdings - 获取账户持仓get_account_history - 获取账户历史get_transactions - 获取带过滤器的交易get_transaction_categories - 获取交易类别get_budgets - 获取指定日期范围内的预算get_cashflow - 获取带过滤器的现金流数据要在Claude Desktop中使用此SDK,请在Claude Desktop配置文件(位于~/Library/Application Support/Claude/claude_desktop_config.json)中添加以下内容:
{
"mcpServers": {
"monarchMoney": {
"command": "b