MCP服务器-FastMCP和FastAPI MCP
一个全面的项目展示 模型上下文协议(MCP) 服务器实现使用 FastMCP 和 FastAPI MCP此存储库展示了不同的传输协议(STDIO、HTTP)和构建启用MCP的工具的实际用例。
📋 目录
- 场景1:计算器(STDIO) - 场景2:计算器(HTTP/FastAPI) - 场景3:FreeCodeCamp Feed(STDIO) - 部署:FreeCodeCamp Feed(HTTP)
🎯 概述
该项目可作为构建MCP服务器的学习资源和参考实现。它表明:
- FastMCP:具有STDIO和HTTP传输的轻量级MCP服务器框架
- FastAPI MCP:MCP与基于HTTP的工具的FastAPI集成
- 多种场景:从基本算术到RSS提要搜索的真实世界示例
✨ 特性
🧮 计算器MCP服务器
- STDIO传输 (场景1):直接流程沟通
- HTTP传输 (场景2):RESTful API与FastAPI集成
- 操作:加、减、乘、除
📰 FreeCodeCamp Feed搜索器
- STDIO传输 (场景3):开发版本
- HTTP传输 (部署):生产就绪服务器
- 按标题/描述搜索FreeCodeCamp新闻文章
- 按标题搜索FreeCodeCamp YouTube视频
- 基于RSS的提要解析,结果可配置
📁 项目结构
mcp-servers/
├── .vscode/
│ ├── mcp.json # VS Code MCP server configurations
│ └── settings.json # VS Code workspace settings
├── Scenario1/
│ └── calculator.py # Calculator MCP (STDIO)
├── Scenario2/
│ └── calculator_api.py # Calculator MCP (HTTP/FastAPI)
├── Scenario3/
│ └── feed_mcp.py # FreeCodeCamp Feed MCP (STDIO)
├── deployment/
│ ├── feed.py # Production FreeCodeCamp Feed MCP (HTTP)
│ └── requirements_deploy.txt
├── tests/ # Test files
├── .env # Environment variables (not tracked)
├── .gitignore
├── pyproject.toml # Poetry dependencies
├── poetry.lock
└── README.md🔧 先决条件
- python:3.13或更高
- 诗歌:用于依赖关系管理
- Git:用于版本控制
📦 安装
1.克隆存储库
git clone https://github.com/Vishal150494/mcp-server-FastMCP-FastAPI-MCP.git
cd mcp-servers2.安装依赖项
使用诗歌(推荐):
poetry install或者使用pip:
pip install -r deployment/requirements_deploy.txt3.设置环境变量
创建一个 .env 项目根目录中的文件:
RSS_URL=https://www.freecodecamp.org/news/rss/
YOUTUBE_DEFAULT_URL=https://www.youtube.com/feeds/videos.xml?channel_id=
YOUTUBE_CHANNEL_ID=UC8butISFwT-Wl7EV0hUK0BQ⚙️ 配置
VS代码MCP配置
该项目包括 .vscode/mcp.json 与VS Code无缝集成:
{
"servers": {
"Calculator-STDIO": {
"command": "path/to/.venv/Scripts/python.exe",
"args": ["Scenario1/calculator.py"]
},
"Calculator-HTTP": {
"command": "path/to/.venv/Scripts/python.exe",
"args": ["-m", "uvicorn", "Scenario2.calculator_api:app",
"--host", "localhost", "--port", "8080"]
},
"FreeCodeCamp-Feed-STDIO": {
"command": "path/to/.venv/Scripts/python.exe",
"args": ["Scenario3/feed_mcp.py"]
}
}
}🚀 用法
场景1:计算器(STDIO)
使用STDIO传输运行计算器MCP服务器:
python Scenario1/calculator.py可用工具:
multiply(x: float, y: float)-将两个数字相乘add(x: float, y: float)-加两个数字subtract(x: float, y: float)-减去两个数字divide(x: float, y: float)-除以两个数字
场景2:计算器(HTTP/FastAPI)
将计算器作为HTTP API运行:
python -m uvicorn Scenario2.calculator_api:app --host localhost --port 8080API终点:
POST /multiply?x=123&y=456-退货:{"Result": 56088.0}POST /add?x=10&y=20-退货:{"Result": 30.0}POST /subtract?x=50&y=20-退货:{"Result": 30.0}POST /divide?x=100&y=5-退货:{"Result": 20.0}
交互式文档:
- Swagger用户界面:
http://localhost:8080/docs - 重新记录:
http://localhost:8080/redoc
场景3:FreeCodeCamp Feed(STDIO)
使用STDIO运行FreeCodeCamp提要搜索器:
python Scenario3/feed_mcp.py可用工具:
fcc_news_search(query: str, max_results: int = 5)-搜索FCC新闻文章fcc_youtube_search(query: str, max_results: int = 5)-搜索FCC YouTube视频
部署:FreeCodeCamp Feed(HTTP)
运行生产就绪的HTTP版本:
python deployment/feed.py服务器在上运行 http://localhost:8003
示例用法:
# Search for Python-related articles
curl -X POST "http://localhost:8003/fcc_news_search?query=python&max_results=3"
# Search for JavaScript videos
curl -X POST "http://localhost:8003/fcc_youtube_search?query=javascript&max_results=5"🔌 VS代码集成
此项目配置为与VS Code的MCP支持无缝集成:
- 在VS Code中打开项目
- 这
.vscode/mcp.json配置将被自动检测 - MCP服务器将在VS Code MCP面板中可用
- 直接从IDE启动/停止服务器
🛠️ 发展
运行测试
poetry run pytest tests/代码质量
该项目使用:
- 键入提示 为了更好的代码清晰度
- 文档字符串 适用于所有公共职能
- 错误处理 用于稳健运行
添加新的MCP服务器
- 创建新的场景文件夹(例如。,
Scenario4/) - 使用FastMCP或FastAPI MCP实现您的MCP服务器
- 将配置添加到
.vscode/mcp.json - 用使用说明更新此README
📚 依赖项
核心依赖关系
fastmcp(^2.13.1)-FastMCP框架fastapi(^0.123.0)-FastAPI web框架fastapi-mcp(^0.4.0)-FastAPI MCP集成uvicorn(^0.38.0)-ASGI服务器feedparser(^6.0.12)-RSS源解析python-dotenv(^1.2.1)-环境变量管理
🤝 贡献
欢迎投稿!请随时提交拉取请求。
- 复刻仓库
- 创建功能分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'feat: add some amazing feature') - 推到分支(
git push origin feature/AmazingFeature) - 打开拉取请求
📄 许可证
这个项目是开源的,可以在MIT许可证下使用。
👤 作者
维沙尔·赫格德
- github: @维沙尔150494
- 电子邮件:vchegde.hegde@gmail.com
🙏 致谢
- 模型上下文协议(MCP) -协议规范
- FastMCP -FastMCP框架
- 快速API -现代web框架
- FreeCodeCamp -教育内容来源
______________________________________________________________________
快乐编码! 🚀
