cabrit0
服务介绍
MCP 服务器
一个基于主题生成主内容计划(MCP)的服务器。该服务器从网络上聚合资源,并将它们组织成结构化的学习路径。
功能
- 为任何主题(不仅仅是技术主题)生成学习路径
- 使用网络搜索和抓取找到相关资源
- 将资源按逻辑顺序组织,节点数量可自定义
- 支持多种语言,重点支持葡萄牙语
- 针对 Render 免费层级的性能优化
- 缓存系统以加快响应速度
- 返回标准化的 JSON 结构供客户端应用程序使用
- 新功能:基于 TF-IDF 的资源相关性过滤,确保资源与请求的主题匹配
- 新功能:在学习树中战略性地分发测验,以实现平衡的学习体验
- 新功能:YouTube 集成,在学习路径中包含相关视频
- 新功能:类别系统,为不同类型的主题生成更具体的内容
- 新功能:带有实时进度反馈的异步任务系统,以改善用户体验并避免超时
- 新功能:增强的缓存系统,提高性能和响应速度
- 新功能:优化的网页抓取技术,更好地利用资源
- 新功能:自适应抓取系统,自动选择每个网站最有效的方法
- 新功能:Puppeteer 实例池,高效重用浏览器并减少内存使用
技术栈
- Python 3.9+
- FastAPI
- Pyppeteer 用于处理 JavaScript 密集型网页抓取
- Pyppeteer-stealth 用于在网页抓取过程中避免被检测
- Puppeteer 实例池,用于高效重用浏览器
- DuckDuckGo 搜索 API
- BeautifulSoup 用于 HTML 解析
- scikit-learn 用于基于 TF-IDF 的资源相关性过滤
- yt-dlp 用于 YouTube 视频搜索和元数据提取
- Redis(可选)用于分布式缓存
- msgpack 用于高效的数据序列化
- cachetools 用于高级的内存缓存
安装
-
克隆仓库:
git clone https://github.com/yourusername/mcp_server.git
cd mcp_server -
创建虚拟环境:
python -m venv venv
source venv/bin/activate # 在 Windows 上: venvScriptsactivate -
安装 Python 依赖项:
pip install -r requirements.txt
-
安装 Node.js 依赖项(针对优化的抓取系统):
npm install
-
安装 Chrome/Chromium 用于 Pyppeteer(如果尚未安装)
使用
本地运行
-
使用提供的批处理文件启动服务器(Windows):
run_local.bat
或者手动使用 uvicorn 启动:
uvicorn main:app --reload --host 0.0.0.0 --port 8000
-
访问
http://localhost:8000处的 API -
通过发送 GET 请求来生成 MCP:
GET /generate_mcp?topic=your_topic
-
查看 API 文档
http://localhost:8000/docs
生产环境 URL
生产服务器位于:
https://reunemacacada.onrender.com
本 README 中记录的所有端点在本地和生产环境中都可用。
测试缓存系统
-
发送第一个请求以生成 MCP(这将填充缓存):
GET /generate_mcp?topic=python&num_nodes=15&language=pt
-
使用相同的参数发送第二个请求(这应该会使用缓存):
GET /generate_mcp?topic=python&num_nodes=15&language=pt
第二个请求应该显著更快,因为结果将从缓存中检索。
文档
详细文档可以在 docs 文件夹中找到:
- API 参考 - 详细的 API 文档
- 端点参考 - 所有端点的完整参考
- Flutter 集成 - 与 Flutter 应用集成指南
- 异步任务系统 - 异步任务系统的文档- 性能改进 - 性能优化概述
- 缓存系统 - 缓存系统的文档
- 网页抓取优化 - 网页抓取优化的详细信息
API 端点
GET /health- 健康检查端点GET /generate_mcp?topic={topic}&max_resources={max_resources}&num_nodes={num_nodes}&min_width={min_width}&max_width={max_width}&min_height={min_height}&max_height={max_height}&language={language}&category={category}- 为指定主题同步生成MCPtopic(必需): 生成MCP的主题(至少3个字符)max_resources(可选): 要包含的最大资源数量(默认:15,最小值:5,最大值:30)num_nodes(可选): 学习路径中要包含的节点数(默认:15,最小值:10,最大值:30)min_width(可选): 树的第一层节点的最小宽度(默认:3,最小值:2,最大值:10)max_width(可选): 树在任何层级的最大宽度(默认:5,最小值:3,最大值:15)min_height(可选): 树的最小高度(深度)(默认:3,最小值:2,最大值:8)max_height(可选): 树的最大高度(深度)(默认:7,最小值:3,最大值:12)language(可选): 资源的语言(默认:"pt")category(可选): 主题类别(例如:"technology", "finance", "health")。如果未提供,则会自动检测。
POST /generate_mcp_async?topic={topic}&max_resources={max_resources}&num_nodes={num_nodes}&min_width={min_width}&max_width={max_width}&min_height={min_height}&max_height={max_height}&language={language}&category={category}- 开始异步生成MCPGET /status/{task_id}- 检查异步任务的状态GET /tasks- 列出所有任务POST /clear_cache?pattern={pattern}&clear_domain_cache={clear_domain_cache}- 根据模式清除缓存pattern(可选): 匹配缓存键的模式(默认:"*" 表示全部)clear_domain_cache(可选): 是否同时清除域方法缓存(默认:false)
GET /cache_stats- 获取关于缓存的统计信息,包括域方法缓存的信息
示例
基本用法(葡萄牙语)
GET /generate_mcp?topic=python
自定义节点数量
GET /generate_mcp?topic=machine+learning&num_nodes=20
英语语言
GET /generate_mcp?topic=javascript&language=en
手动指定类别
GET /generate_mcp?topic=python&category=technology
完全自定义
GET /generate_mcp?topic=história+do+brasil&max_resources=20&num_nodes=25&min_width=4&max_width=8&min_height=4&max_height=8&language=pt
控制树结构
GET /generate_mcp?topic=machine+learning&min_width=2&max_width=4&min_height=5&max_height=10
异步生成
POST /generate_mcp_async?topic=inteligência+artificial&category=technology
检查任务状态
GET /status/550e8400-e29b-41d4-a716-446655440000
清除缓存
POST /clear_cache
清除特定缓存
POST /clear_cache?pattern=mcp:*
性能改进
MCP 服务器包括以下几项性能优化:
- 缓存系统:结果被缓存以提高重复查询的响应时间
- 异步任务系统:长时间运行的操作通过异步处理
- 资源过滤:基于TF-IDF的过滤以选择最相关的资源
- 优化的网页抓取:高效的网页抓取技术以减少资源使用
- 自适应抓取系统:自动选择每个网站最有效的抓取方法
- Puppeteer 实例池:重用浏览器实例以减少内存使用和启动时间
- 域方法缓存:记住每个域最适合的抓取方法- 资源阻塞:在抓取过程中阻止不必要的资源(图片、样式表、字体)
性能提升
- 对于已经在缓存中的主题,响应时间减少60-80%
- 对于新主题,响应时间减少30-50%
- 在网页抓取过程中,内存使用量减少40-60%
- 同时请求的吞吐量增加3-5倍
部署
服务器可以部署到各种平台:
使用 Docker
docker build -t mcp-server .
docker run -p 8080:8080 mcp-server
部署到 Render、Fly.io 或其他平台
请遵循特定平台的说明来部署 Docker 容器或 Python 应用程序。
许可证
专有软件 - 保留所有权利
本软件是专有的和机密的。未经授权复制、分发、修改、公开展示或公开表演本软件是严格禁止的。本软件仅限于付费订阅模式下使用。
© 2024 ReuneMacacada. 保留所有权利。
最近提交:v1.1.2 - 修复了与 DuckDuckGo 速率限制和 Puppeteer 相关的问题