学习路径生成服务

MCP Server是一个基于主题生成主内容计划(MCP)的服务,通过聚合网络资源并组织成结构化学习路径,适用于教育和自学场景。

  • by cabrit0
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 cabrit0/mcp_server_reunemacacada

使用说明

MCP服务器

基于主题生成主内容计划(MCP)的服务器。服务器聚合来自网络的资源,并将其组织成结构化的学习路径。

特性

  • 为任何主题(而不仅仅是技术主题)生成学习路径
  • 使用网络搜索和抓取查找相关资源
  • 将资源组织成具有可定制节点数量的逻辑序列
  • 支持多种语言,重点是葡萄牙语
  • Render免费层的性能优化
  • 缓存系统,响应速度更快
  • 返回一个标准化的JSON结构,供客户端应用程序使用
  • 新:基于TF-IDF的资源相关性过滤,以确保资源与请求的主题匹配
  • 新:跨学习树的策略性测验分布,以获得平衡的学习体验
  • 新:整合YouTube,将相关视频纳入学习路径
  • 新:分类系统,为不同类型的主题生成更具体的内容
  • 新:具有实时进度反馈的异步任务系统,可改善用户体验并避免超时
  • 新:增强的缓存系统可提高性能和更快的响应时间
  • 新:优化网络抓取技术,提高资源利用率
  • 新:自适应抓取系统,自动为每个网站选择最有效的方法
  • 新:Puppeteer实例池可实现高效的浏览器重用和减少内存使用

技术栈

  • Python 3.9+
  • 快速 API
  • Pyppeteer用于JavaScript繁重的网络抓取
  • Pyppeteer隐形技术,避免在网页抓取过程中被检测到
  • Puppeter实例池,实现高效浏览器重用
  • DuckDuckGo搜索API
  • 用于HTML解析的BeautifulSoup
  • 基于TF-IDF的资源相关性过滤的scikit-learn
  • yt-dlp用于YouTube视频搜索和元数据提取
  • Redis(可选)用于分布式缓存
  • msgpack用于高效的数据序列化
  • 用于高级内存缓存的cachetools

安装

  1. 克隆存储库:

    git clone https://github.com/yourusername/mcp_server.git
    cd mcp_server
    
  2. 创建虚拟环境:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. 安装Python依赖项:

    pip install -r requirements.txt
    
  4. 安装Node.js依赖项(用于优化的抓取系统):

    npm install
    
  5. 安装用于Pyppeteer的Chrome/Chromium(如果尚未安装)

用法

本地运行

  1. 使用提供的批处理文件启动服务器(Windows):

    run_local.bat
    

    或者手动使用uvicorn:

    uvicorn main:app --reload --host 0.0.0.0 --port 8000
    
  2. 访问API http://localhost:8000

  3. 通过向以下对象发出GET请求来生成MCP:

    GET /generate_mcp?topic=your_topic
    
  4. 查看API文档,网址: http://localhost:8000/docs

生产URL

生产服务器位于:

https://reunemacacada.onrender.com

本README中记录的所有端点都可以在本地和生产URL上找到。

测试缓存系统

  1. 首次请求生成MCP(这将填充缓存):

    GET /generate_mcp?topic=python&num_nodes=15&language=pt
    
  2. 使用相同的参数发出第二个请求(这应该使用缓存):

    GET /generate_mcp?topic=python&num_nodes=15&language=pt
    

    第二个请求应该快得多,因为结果将从缓存中检索。

文档

详细文档可在 docs 文件夹:

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} -同步为指定主题生成MCP
    • topic (必填):生成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 (可选):主题的类别(例如,“技术”、“金融”、“健康”)。如果没有提供,它将被自动检测到。
  • 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} -开始异步生成MCP
  • GET /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的筛选,以选择最相关的资源
  • 优化Web抓取:高效的网络抓取技术,减少资源使用
  • 自适应刮擦系统:自动为每个网站选择最有效的抓取方法
  • 木偶实例池:重用浏览器实例以减少内存使用和启动时间
  • 域方法缓存:记住哪种抓取方法最适合每个域
  • 资源阻塞:在抓取过程中阻止不必要的资源(图像、样式表、字体)

性能提升

  • 响应时间减少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 的问题