午餐钱MCP服务器
模型上下文协议(MCP)服务器 午餐费 API v2,采用最小响应大小设计,以防止上下文窗口膨胀。
特性
- 优化响应:简洁、格式化的输出,以最大限度地减少令牌使用
- 简单认证:对API令牌使用环境变量
- 类型安全:使用现代Python类型提示构建
- 易于扩展:一次添加一个端点
当前支持的端点
add_numbers-算术运算辅助工具get_current_user-获取已验证用户的信息(GET /me)get_transaction-按ID获取特定交易的详细信息(GET /transactions/{id})get_transactions-列出日期范围内的交易记录(GET /transactions)
安装
安装后,可以将午餐钱mcp mini添加到任何mcp客户端 紫外线.
使用以下命令调用服务器:
LUNCHMONEY_API_TOKEN=your-api-token-here uvx lunchmoney-mcp-mini使用克劳德桌面
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"lunchmoney-mini": {
"command": "uvx",
"args": [
"lunchmoney-mcp-mini",
],
"env": {
"LUNCHMONEY_API_TOKEN": "your-api-token-here"
}
}
}
}配置
获取您的API代币
设置环境变量
export LUNCHMONEY_API_TOKEN="your-api-token-here"或者创建一个 .env 文件(未提交到git):
LUNCHMONEY_API_TOKEN=your-api-token-here用法
独立测试
# Make sure LUNCHMONEY_API_TOKEN is set
uv run lunchmoney_mcp_mini/main.py可用工具
add_numbers
辅助工具,用于执行具有精确小数处理的算术运算,以避免浮点精度问题。
参数:
numbers(必填):要加在一起的数字列表。可以包含负值进行减法。
退货:
sum:总和四舍五入到小数点后两位input_count:提供的数值数量
输出示例:
{
"sum": 123.45,
"input_count": 3
}get_current_user
获取经过身份验证的Lunch Money用户的详细信息。
退货:
name:用户的全名email:用户的电子邮件地址user_id:唯一用户标识符account_id:唯一帐户标识符budget_name:预算名称primary_currency:主要货币代码(例如“美元”)api_key_label:正在使用的API密钥的标签
输出示例:
{
"name": "John Doe",
"email": "john@example.com",
"user_id": 12345,
"account_id": 67890,
"budget_name": "Family budget",
"primary_currency": "usd",
"api_key_label": "Development key"
}get_transaction
通过ID获取特定交易的完整详细信息。
参数:
transaction_id(必填):要检索的交易的ID
退货: 完整的交易对象,包括所有可用字段,包括:
- 核心数据:id、日期、金额、币种、收款人、original_name
- 类别/帐户:类别_id、手动account_id、plaid_account_id、循环_id
- 元数据:plaid_metata、custom_Metadata、文件(如果有的话)
- 分组/拆分:is_split_rent、split_parent_id、is_group_parent、group_parent_id,儿童
- 时间戳:created_at、updated_at
- 状态:状态、is_pending、源、external_id、tag_ids、注释
输出示例:
{
"id": 2112150655,
"date": "2024-07-28",
"amount": -45.50,
"currency": "USD",
"payee": "Whole Foods",
"original_name": "WHOLE FOODS #1234",
"category_id": 82,
"status": "reviewed",
"is_pending": false,
"created_at": "2024-07-28T12:34:56.789Z",
"updated_at": "2024-07-28T12:34:56.789Z"
}get_transactions
列出指定日期范围内的交易。
参数:
start_date(必填):开始日期,格式为YYYY-MM-DDend_date(可选):结束日期,格式为YYYY-MM-DD。默认为start_date月份的最后一天category_id(可选):按类别ID筛选tag_id(可选):按标签ID筛选status(可选):按状态筛选(“已审核”、“未审核”、”delete_pending“)is_pending(可选):按挂起状态筛选manual_account_id(可选):按手动帐户ID筛选plaid_account_id(可选):按格子帐户ID筛选recurring_id(可选):按重复项目ID筛选include_pending(可选):包括待处理交易limit(可选):最大交易次数(1-2000,默认100)offset(可选):分页偏移include_aggregates(可选):如果为True,则计算整个日期范围内每个类别的总计(尊重所有筛选器)
退货:
transactions:事务对象数组has_more:布尔值,指示是否有更多事务可用aggregates(可选):类别总计和计数include_aggregates=True
交易字段:
id:交易IDdate:交易日期(YYYY-MM-DD)amount:交易金额(数字字符串)payee:收款人姓名category_id:类别IDstatus:交易状态is_pending:待定状态
聚合字段(当 include_aggregates=True):
by_category:数组排序方式total_amount下降,每个都有:
- category_id:类别ID(未分类为空) - category_name:类别名称 - count:此类别中的交易数量 - total_amount:交易金额之和(数字字符串)
total_count:交易总数total_amount:所有交易金额的总和(数字字符串)
示例输出(不含聚合):
{
"transactions": [
{
"id": 2112150655,
"date": "2024-07-28",
"amount": "1250.8400",
"payee": "Paycheck",
"category_id": 88,
"status": "reviewed",
"is_pending": false
}
],
"has_more": false
}示例输出(带聚合):
{
"transactions": [...],
"has_more": false,
"aggregates": {
"by_category": [
{"category_id": 88, "category_name": "Rent", "count": 2, "total_amount": "2500.00"},
{"category_id": 82, "category_name": "Groceries", "count": 5, "total_amount": "245.50"},
{"category_id": null, "category_name": "Uncategorized", "count": 3, "total_amount": "45.00"}
],
"total_count": 10,
"total_amount": "2790.50"
}
}设计理念
此MCP服务器旨在返回 最小、集中的响应 以避免填满上下文窗口。每个工具:
- 仅返回基本信息
- 使用简洁的格式
- 避免冗长的JSON转储
- 提供人类可读的输出
技术细节
此服务器使用:
- FastMCP:用于构建MCP服务器的高级Python框架
- 请求openapi:根据OpenAPI规范自动生成API客户端
- OpenAPI 3.0规范:确保类型安全和准确的API调用
FastMCP和requests openapi的组合意味着:
- 更少的样板代码
- 自动请求/响应验证
- 易于从规范中添加新端点
- 类型安全API调用
资源
许可证
麻省理工学院
