FastMCP学习项目

一个包含两个Python MCP服务器的实践项目,用于学习FastMCP基础知识和构建费用跟踪应用。

  • by BUFONJOKER
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 BUFONJOKER/mcp-course

使用说明

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-course

2.安装依赖项📦

uv sync

如果你不使用 uv,创建虚拟环境并安装 fastmcp 手动。

▶️ 运行服务器

A) 简单MCP服务器(根)🎲

python main.py

B) 费用跟踪MCP服务器💸

python expense_tracker_mcp_server/main.py

C) 使用FastMCP CLI运行(可选)🛠️

uv run fastmcp run main.py
uv run fastmcp run expense_tracker_mcp_server/main.py

D) 在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.json JSON格式。

🗄️ 数据注释

  • 费用数据存储在 expense_tracker_mcp_server/expenses.db (自动创建)。
  • 这 expenses 表在服务器启动时初始化。

🧪 快速示例

  • add_two_numbers(10, 5) → 15
  • generate_random_number() → 中的任何整数 1..100
  • add_expense("2026-03-01", 250.0, "Food", "Lunch") → 成功消息

🎯 学习成果

通过使用此repo,您将练习:

  • MCP工具设计和注册
  • 使用持久性本地存储
  • 构建多模块Python MCP项目
  • 在一个服务器中公开工具和资源

🤝 贡献

欢迎为以下项目捐款:

  • 新工具
  • 更好的验证/错误处理
  • 改进的示例和文档

📜 许可证

这个知识库是用于学习和实践的。