Skip to main content
Glama

Accounting MCP Server

by smile7up
README.md5.41 kB
# 记账 MCP 工具演示项目 基于 Model Context Protocol (MCP) 的个人记账管理工具,为 AI 助手提供财务管理功能。 ## 项目概述 这是一个学习和演示 MCP 协议开发的项目,通过构建实用的记账工具来深入理解: - MCP Tools 和 Resources 的设计模式 - JSON-RPC 协议在 AI 工具开发中的应用 - TDD 驱动的高质量代码开发流程 - AI 助手与外部工具的标准化集成方式 ## 功能特性 ### MCP Tools(AI 可调用的工具) - `add_transaction` - 添加收支记录 - `get_balance` - 查询账户余额 - `list_transactions` - 查询交易记录(支持筛选) - `get_monthly_summary` - 获取月度财务汇总 ### MCP Resources(AI 可访问的数据) - `transactions://all` - 所有交易记录 - `categories://list` - 支出分类列表 - `summary://current` - 账户汇总信息 ## 快速开始 ### 环境要求 - Python 3.11+ - conda(推荐)或 uv/pip ### 安装依赖 **方案 1: 使用 conda + uv(推荐,最快)** ```bash # 激活您的 conda 环境 conda activate myenv # 使用 uv 快速安装依赖 uv pip install -r requirements.txt uv pip install -r requirements-dev.txt ``` **方案 2: 纯 conda** ```bash # 激活环境 conda activate myenv # 安装 Python 依赖 pip install -r requirements.txt pip install -r requirements-dev.txt ``` **方案 3: 纯虚拟环境** ```bash # 创建虚拟环境 python -m venv venv source venv/bin/activate # macOS/Linux # 安装依赖 pip install -r requirements.txt pip install -r requirements-dev.txt ``` ### 运行服务器 ```bash # 直接运行 MCP 服务器 python -m accounting_mcp.server # 或者运行交互式测试客户端 python test_client.py ``` ### 测试示例 ```bash # 添加一笔支出 echo '{"jsonrpc":"2.0","method":"add_transaction","params":{"amount":-50,"category":"food","description":"午餐"},"id":1}' | python -m accounting_mcp.server # 查询余额 echo '{"jsonrpc":"2.0","method":"get_balance","params":{},"id":2}' | python -m accounting_mcp.server ``` ## 项目结构 ``` accounting-mcp-demo/ ├── accounting_mcp/ # 核心代码 │ ├── __init__.py # 包初始化 │ ├── server.py # MCP 服务器主程序 │ ├── models.py # 数据模型定义 │ ├── storage.py # JSON 文件存储 │ └── tools.py # MCP 工具实现 ├── tests/ # 测试代码 │ ├── test_models.py # 模型测试 │ ├── test_storage.py # 存储测试 │ ├── test_tools.py # 工具测试 │ └── test_server.py # 服务器测试 ├── data/ # 数据文件 │ ├── transactions.json # 交易记录 │ ├── account.json # 账户信息 │ └── categories.json # 分类定义 ├── docs/ # 文档 ├── PRD.md # 产品需求文档 ├── TDD_PLAN.md # TDD 开发计划 ├── requirements.txt # 项目依赖 ├── requirements-dev.txt # 开发依赖 └── test_client.py # 交互测试客户端 ``` ## 开发指南 ### TDD 开发流程 本项目采用测试驱动开发(TDD),遵循"红-绿-重构"循环: 1. **红阶段**: 先写失败的测试用例 2. **绿阶段**: 编写最小实现使测试通过 3. **重构阶段**: 优化代码质量和结构 ### 运行测试 ```bash # 运行所有测试 pytest # 运行特定测试文件 pytest tests/test_models.py # 生成覆盖率报告 pytest --cov=accounting_mcp --cov-report=html # 类型检查 mypy accounting_mcp/ ``` ### 代码质量检查 ```bash # 格式化代码 black accounting_mcp/ tests/ # 风格检查 flake8 accounting_mcp/ tests/ # 运行所有质量检查 pre-commit run --all-files ``` ## MCP 集成 ### Claude Desktop 配置 在 Claude Desktop 的配置文件中添加: ```json { "mcpServers": { "accounting": { "command": "python", "args": ["/path/to/accounting-mcp-demo/accounting_mcp/server.py"], "env": {} } } } ``` ### 使用示例 配置完成后,可以通过自然语言与 AI 助手交互: ``` 用户: "帮我记录一笔35元的午餐费用" Claude: 已为您添加35元的餐饮支出,当前余额为1,965元。 用户: "我这个月在食物上花了多少钱?" Claude: 根据记录,您本月在餐饮分类上总计支出285元。 ``` ## 技术架构 ### MCP 协议实现 - **传输层**: stdio(标准输入输出) - **协议层**: JSON-RPC 2.0 - **应用层**: 工具注册和资源管理 ### 数据存储 - 轻量级 JSON 文件存储 - 支持事务性操作 - 自动备份和恢复 ### 错误处理 - 完善的输入验证 - 优雅的错误恢复 - 详细的错误日志 ## 扩展和定制 ### 添加新的工具 1. 在 `tools.py` 中定义新的工具函数 2. 在 `server.py` 中注册工具 3. 编写对应的测试用例 ### 自定义分类 修改 `data/categories.json` 文件,添加自定义的支出分类。 ### 数据导入导出 未来版本将支持 CSV 格式的数据导入导出功能。 ## 许可证 本项目仅用于学习和演示目的,基于 MIT 许可证开源。 ## 贡献 欢迎提交 Issues 和 Pull Requests 来改进项目。 --- *构建于 MCP 1.0 协议之上,遵循最佳实践和 TDD 开发原则。*

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/smile7up/accounting-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server