Expense MCP Server 37e2f187

MCP数据服务

提供方 Saksham-hacked

数据服务 stdio · 本地进程 OAuth 授权 社区 / 第三方 Claude
查看接入方式

一个基于FastMCP和PostgreSQL构建的云就绪、多用户费用跟踪能力服务器,提供费用添加、列表、汇总和报告生成功能。

一句话选型结论

按资料字段整理

Expense MCP Server 37e2f187 属于数据服务类 MCP 服务器,stdio · 本地进程,OAuth 授权,可直接接入 Claude,有可直接执行的安装命令。接入前先确认权限范围;涉及写入、删除或付款的操作,建议先在测试环境验证。

分类数据服务 传输方式stdio · 本地进程 鉴权OAuth 授权 部署方式本地部署
GitHub 星标 0 仓库热度,无公开仓库时显示未标注
工具数 4 暴露给模型的工具数量
资源 / 提示词 0 / 0 资源与提示词模板数量
维护方 社区 / 第三方 核验等级 仅资料核对

工具与能力

数据服务
数量来自来源目录的标注,具体工具清单以官方文档为准
工具数量4暴露给模型可调用的工具个数
资源数量0可读取的资源条目
提示词数量0内置提示词模板数量

能力标签

支持客户端

适用场景

费用管理Python本地部署云服务多用户支持AI辅助PostgreSQL

安装与配置

stdio · 本地进程 OAuth 授权
客户端在本机拉起子进程,数据不出本机
pip install -r requirements.txt

这条命令只是入口,具体启动参数请按官方文档补齐,不要直接照搬到别的服务器。

  1. 1
    准备运行环境

    stdio 服务在本地起进程,需要先装好 Node.js 等运行时,再按安装命令拉取依赖。

  2. 2
    安装服务

    复制上面的安装命令执行;命令里带占位符的位置,换成自己的密钥或路径。

  3. 3
    写入客户端配置

    在客户端的 MCP 配置里填好启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4
    验证是否可用

    连接成功后客户端会列出约 4 个工具,随便调一个只读工具确认能返回结果。

典型使用场景

3 类
按分类与标签整理的常见用法,具体以官方文档为准
数据库查询

用自然语言查库、取数,不用手写 SQL。

数据同步与清洗

把多来源数据拉到一处做整理。

报表取数

按口径快速拉出统计结果。

选择建议

选之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 资料标注 4 个工具,职责相对集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已适配 Claude,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好运行时(如 Node.js),换机器要重新装一遍。
  • 使用前要准备好OAuth 授权对应的凭据,并按最小权限配置。
  • 版本更新与行为细节以官方仓库为准。

更适合

  • 需要在数据服务场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地或自有环境跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 不方便管理密钥或第三方授权的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
MCP 服务器工具数传输方式部署方式安装命令最后核验
Expense MCP Server 37e2f187当前 4 stdio · 本地进程 本地部署 有 2026-05-17
Memory 9d25f64e 9 未标注 未标注 无 2026-05-17
Getzep MCP 9 stdio · 本地进程 本地部署 有 2026-05-17
anything-llm 未标注 stdio · 本地进程 本地部署 有 2026-04-11
Prisma MCP Server 未标注 stdio · 本地进程 本地部署 有 2026-05-17
Astr Bot 未标注 stdio · 本地进程 本地部署 有 2026-05-17

服务器档案

数据服务
字段来自项目仓库与公开索引,中文说明由本站标注
提供方Saksham-hacked上游标注的维护方 Saksham-hacked
分类数据服务本站按上游分类展示
连接方式stdio · 本地进程客户端在本机拉起子进程,数据不出本机
鉴权方式OAuth 授权远程服务建议用最小权限凭据
维护方社区 / 第三方核验等级 仅资料核对
包名 / 运行时未标注 · 未标注本地安装时用到的包标识与运行时
部署类型本地部署上游给出的部署形态
最近核验2026-05-17上游最后核验时间

详细介绍

10.9 KB
来自项目仓库与上游目录的原文,未做删改

Expense Management MCP Server

A cloud-ready, multi-user expense tracking capability built with FastMCP and PostgreSQL.


🎯 What This MCP Server Does

This is a Model Context Protocol (MCP) server that provides expense management capabilities. It exposes 4 tools that AI assistants (like Claude) can use to:

  • Add expenses with details (date, amount, category, merchant, notes)
  • List expenses within date ranges
  • Summarize spending by category
  • Generate monthly expense reports

Key Design Principle: This server is a capability boundary — it owns expense data and logic, nothing more.


🧩 Why MCP?

This project uses the Model Context Protocol to create a modular, tool-driven AI system:

  1. Separation of Concerns: This server only handles expenses — other capabilities (emails, tasks, calendar) are separate MCP servers
  2. AI-Powered Interfaces: Any AI assistant can use these tools without custom integrations
  3. Composability: Multiple MCP servers can work together via a backend orchestrator
  4. Cloud-Native: Designed to run on FastMCP Cloud with zero local dependencies

MCP is NOT:
- A chatbot framework
- A UI framework
- A monolithic backend
- An authentication system

MCP IS:
- A protocol for exposing capabilities to AI assistants
- A way to build composable, tool-based systems
- A boundary between capability logic and orchestration


🛠️ Exposed MCP Tools

1. add_expense

Add a new expense for a user.

Input:```json
{
"user_id": "user_123",
"date": "2025-01-15",
"amount": 45.50,
"category": "Food",
"merchant": "Starbucks",
"note": "Coffee meeting"
}


**Returns:** Created expense with generated UUID

---

### 2. `list_expenses`

List expenses within a date range.

**Input:**```json
{
  "user_id": "user_123",
  "start_date": "2025-01-01",
  "end_date": "2025-01-31"
}

Returns: Array of expenses ordered by date (oldest first)


3. summarize_expenses

Summarize spending by category.

Input:```json
{
"user_id": "user_123",
"start_date": "2025-01-01",
"end_date": "2025-01-31"
}


**Returns:**```json
[
  { "category": "Food", "total": 450.75 },
  { "category": "Transport", "total": 230.00 }
]

4. monthly_report

Generate a monthly expense report.

Input:```json
{
"user_id": "user_123",
"month": "2025-01"
}


**Returns:** Total spending, category breakdown, expense count, and natural language summary

---

## 🔒 Multi-User Isolation

This server is designed for **multi-user environments** with strict data isolation:

- Every query filters by `user_id`
- Users cannot access each other's data
- No user authentication logic (handled by backend orchestrator)
- `user_id` is injected and trusted from the calling system

**Database Pattern:**```sql
SELECT * FROM expenses
WHERE user_id = ? AND date BETWEEN ? AND ?

All queries enforce user_id filtering at the SQL level.


🏗️ Architecture: Modular Personal Manager System

This MCP server is one capability module in a larger Personal Manager system:```
┌─────────────────────────────────────────────┐
│ Backend Orchestrator │
│ (Authentication, Routing, Workflows) │
└──────────────┬──────────────────────────────┘
│
┌───────┴───────┬──────────┬──────────┐
│ │ │ │
┌───▼───┐ ┌────▼───┐ ┌───▼───┐ ┌───▼───┐
│Expense│ │ Email │ │ Task │ │ PKOS │
│ MCP │ │ MCP │ │ MCP │ │ MCP │
└───────┘ └────────┘ └───────┘ └───────┘


### Design Principles

1. **Each capability is a separate MCP server**
   - Expense tracking = this server
   - Email management = separate MCP server
   - Task management = separate MCP server
   - Personal knowledge (PKOS) = separate MCP server

2. **MCP servers are isolated**
   - Each owns its database schema
   - Each exposes explicit tools
   - No cross-server dependencies

3. **Backend orchestrator handles:**
   - User authentication
   - MCP server routing
   - Multi-step workflows
   - User session management

4. **AI assistants call tools via orchestrator**
   - User: "How much did I spend on food last month?"
   - Orchestrator: Authenticates user → Calls expense MCP `monthly_report`
   - MCP: Returns data for that user only

---

## 🚀 Adding New Capabilities

When adding new features to the Personal Manager system:

✅ **DO:** Create a new MCP server
- New capability = new MCP server project
- Follow the same structure (main.py, tools.py, models.py, db.py)
- Expose tools for that capability only

❌ **DON'T:** Modify this expense server
- Don't add email/task/calendar logic here
- Don't create cross-capability dependencies
- Don't merge MCP servers

**Example: Adding Task Management**
1. Create `task-mcp-server/` (separate project)
2. Expose tools: `add_task`, `list_tasks`, `complete_task`
3. Use separate database schema for tasks
4. Deploy as separate FastMCP Cloud instance
5. Backend orchestrator routes task-related queries to task MCP

---

## 🗄️ Database Schema

PostgreSQL schema with multi-user isolation:```sql
CREATE TABLE expenses (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id TEXT NOT NULL,
    date DATE NOT NULL,
    amount NUMERIC(10,2) NOT NULL CHECK (amount > 0),
    category TEXT NOT NULL,
    merchant TEXT,
    note TEXT,
    created_at TIMESTAMPTZ DEFAULT now()
);

CREATE INDEX idx_expenses_user_date ON expenses(user_id, date);

Why PostgreSQL?
- Cloud-hosted (Supabase, Neon, Railway, etc.)
- ACID compliance for financial data
- Strong typing with NUMERIC for currency
- Efficient indexing for date-range queries


🚀 Deployment

Prerequisites

  1. PostgreSQL database (cloud-hosted recommended):
    - Supabase (free tier available)
    - Neon (serverless Postgres)
    - Railway

  2. Database setup:bash psql $DATABASE_URL < schema.sql

  3. Environment variable:bash export DATABASE_URL="postgresql://user:password@host:port/database"

Deploy to FastMCP Cloud```bash

Install dependencies

pip install -r requirements.txt

Deploy to FastMCP Cloud

fastmcp deploy


FastMCP Cloud handles:
- HTTP transport automatically
- Server lifecycle management
- Auto-scaling
- Logging and monitoring

**No local server needed** — this is designed for cloud deployment.

---

## 🧪 Local Testing (Optional)

For development testing only:```bash
# Set environment variable
export DATABASE_URL="postgresql://localhost/expenses_dev"

# Create test database
createdb expenses_dev
psql expenses_dev < schema.sql

# Run server (for testing tools)
python main.py

Note: Production deployment should use FastMCP Cloud, not local testing.


🔐 Security Model

What This Server Does

  • ✅ Validates user_id is present and non-empty
  • ✅ Validates input formats (dates, amounts)
  • ✅ Enforces data isolation via SQL WHERE clauses
  • ✅ Handles database errors gracefully
  • ✅ Uses parameterized queries (SQL injection protection)

What This Server Does NOT Do

  • ❌ User authentication (handled by backend)
  • ❌ Authorization checks (trusts backend's user_id)
  • ❌ Session management
  • ❌ Rate limiting (handled by FastMCP Cloud)
  • ❌ API key validation

Security Assumption: The user_id parameter is injected and validated by a trusted backend orchestrator before reaching this MCP server.


📊 Data Flow Example

User Query: "How much did I spend on groceries last month?"

  1. User Interface (web/mobile app)
    - User authenticated via OAuth/JWT
    - Request sent to backend orchestrator

  2. Backend Orchestrator
    - Validates user session → extracts user_id
    - Determines which MCP server to call (expense MCP)
    - Calls summarize_expenses tool with injected user_id

  3. Expense MCP Server (this server)
    - Receives: {"user_id": "user_123", "start_date": "2024-12-01", "end_date": "2024-12-31"}
    - Queries: SELECT category, SUM(amount) FROM expenses WHERE user_id = 'user_123' AND ...
    - Returns: [{"category": "Groceries", "total": 450.75}]

  4. Backend Orchestrator
    - Formats response for user
    - Returns to user interface

  5. User Interface
    - Displays: "You spent $450.75 on groceries last month"


🧩 Extension Points

This server is designed for extension without modification:

Adding New Expense Categories

  • No code changes needed
  • Categories are free-form text fields
  • TODO: Add optional category validation/standardization

Adding Recurring Expenses

  • Option A: New MCP tool in this server
  • Option B: Separate "Recurring Expenses" MCP server
  • Recommended: Option B (follows single-responsibility principle)

Adding Receipt Storage

  • Don't add to this server
  • Create separate "Document Storage" MCP server
  • Expense MCP references document IDs

Adding Budget Tracking

  • Don't add to this server
  • Create separate "Budget Management" MCP server
  • Budget MCP can call expense MCP tools if needed

General Rule: If a feature isn't directly about recording/querying expenses, it belongs in a separate MCP server.


🤝 Contributing

When contributing:

  1. Follow the specification in docs/phase-1-spec.md
  2. Don't add features not in the spec (create new MCP servers instead)
  3. Maintain data isolation — all queries must filter by user_id
  4. No UI code — this is a tool server only
  5. No auth code — user_id is injected externally

📚 Related Documentation

  • FastMCP Documentation
  • Model Context Protocol Specification
  • Anthropic MCP Guide

🎓 Learning Resources

New to MCP?
- What is MCP?
- Building Your First MCP Server

Architecture Patterns:
- Why modular MCP servers > monolithic APIs
- How MCP enables AI-first application architecture
- Building composable capability systems


📝 License

MIT License - see LICENSE file for details


✨ Summary

This MCP server demonstrates:

✅ Single Responsibility — Expenses only
✅ Multi-User Safe — Strict data isolation
✅ Cloud-Ready — FastMCP Cloud deployment
✅ Tool-Driven — AI assistants call explicit tools
✅ Composable — Part of larger modular system
✅ Production-Grade — Error handling, validation, PostgreSQL

Next Steps:
1. Deploy to FastMCP Cloud
2. Connect backend orchestrator
3. Build additional capability MCP servers (email, tasks, etc.)
4. Create user interface that calls orchestrator


Questions? Check FastMCP docs or open an issue.

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
Expense MCP Server 37e2f187 怎么安装?

在客户端按下面的安装命令接入:pip install -r requirements.txt。装完在客户端配置里引用同一个包或端点。

Expense MCP Server 37e2f187 怎么在 Claude 里配置?

它的传输方式是stdio · 本地进程,在客户端的 MCP 配置里填好启动命令和参数,保存后完全退出客户端再打开,配置才会生效。

Expense MCP Server 37e2f187 收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Expense MCP Server 37e2f187 需要 API Key 吗?

资料标注需要OAuth 授权认证,使用前准备好对应凭据,并按最小权限配置。

Expense MCP Server 37e2f187 支持哪些客户端?

资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

Expense MCP Server 37e2f187 能提供哪些能力?

资料显示约 4 个工具;能力标签包括 PostgreSQL、Claude、云服务。具体工具清单以官方文档为准。

Expense MCP Server 37e2f187 需要什么运行环境?

属于本地进程,需要在本机装好运行环境。

Expense MCP Server 37e2f187 是本地还是远程?

它是本地进程(stdio),由客户端在本机拉起。传输方式为stdio · 本地进程。

热门专题

按标签挑服务器
全部专题 →

服务器信息以作者仓库与官方文档为准;分类、传输方式与鉴权方式的中文说明为中文整理,最近核验 2026-05-17。