MCP课程:快速MCP学习项目🚀
带两个Python MCP服务器的FastMCP实践库:
- 一个用于基本工具的简单启动器服务器
- 由SQLite支持的支出跟踪MCP服务器
✨ 项目亮点
🧩 FastMCP基础
学习如何:
- 使用以下命令创建MCP服务器
FastMCP - 使用注册工具
@mcp.tool - 使用以下方式公开资源
@mcp.resource - 在本地运行服务器以进行开发和测试
💸 真正的小项目
Expense Tracker服务器演示了:
- 使用SQLite的持久存储
- 日期范围过滤
- 分类费用汇总
- 通过MCP提供JSON资源
🧱 技术栈
- python
3.11+ fastmcp>=3.1.0- SQLite(内置Python)
uv(推荐)
📂 存储库结构
mcp-course/
├── main.py
├── test.py
├── pyproject.toml
├── README.md
└── expense_tracker_mcp_server/
├── __init__.py
├── main.py
└── categories.json⚙️ 安装指南
1.克隆存储库📥
git clone https://github.com/BUFONJOKER/mcp-course.git
cd mcp-course2.安装依赖项📦
uv sync如果你不使用 uv,创建虚拟环境并安装 fastmcp 手动。
▶️ 运行服务器
A) 简单MCP服务器(根)🎲
python main.pyB) 费用跟踪MCP服务器💸
python expense_tracker_mcp_server/main.pyC) 使用FastMCP CLI运行(可选)🛠️
uv run fastmcp run main.py
uv run fastmcp run expense_tracker_mcp_server/main.pyD) 在MCP检查器中运行(开发模式)🔎
uv run fastmcp dev inspector main.py
uv run fastmcp dev inspector expense_tracker_mcp_server/main.py🛠️ 可用MCP功能
1) 根服务器工具(main.py)
🎲 generate_random_number()
- 返回一个随机整数
1到100.
➕ add_two_numbers(first_number, second_number)
- 返回两个数字输入的总和。
2) 费用跟踪工具(expense_tracker_mcp_server/main.py)
➕ add_expense(date, amount, category, subcategory='')
- 添加新的支出记录。
📋 list_expenses(date_from='', date_to='')
- 列出所有费用。
- 如果提供了这两个日期,则返回该范围内的费用。
📊 summarize(start_date, end_date, category='')
- 返回按类别分组的总支出。
- 如果提供了类别,则仅汇总该类别。
📚 资源: expense://categories
- 从以下位置提供类别数据
categories.jsonJSON格式。
🗄️ 数据注释
- 费用数据存储在
expense_tracker_mcp_server/expenses.db(自动创建)。 - 这
expenses表在服务器启动时初始化。
🧪 快速示例
add_two_numbers(10, 5)→15generate_random_number()→ 中的任何整数1..100add_expense("2026-03-01", 250.0, "Food", "Lunch")→ 成功消息
🎯 学习成果
通过使用此repo,您将练习:
- MCP工具设计和注册
- 使用持久性本地存储
- 构建多模块Python MCP项目
- 在一个服务器中公开工具和资源
🤝 贡献
欢迎为以下项目捐款:
- 新工具
- 更好的验证/错误处理
- 改进的示例和文档
📜 许可证
这个知识库是用于学习和实践的。
