文档检索服务器

一个基于FastAPI的多进程通信服务器,提供NVIDIA产品文档的自动化抓取、存储和检索功能。

  • by TPFLegionaire
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 tpflegionaire/nvidia-docs-mcp-server

使用说明

NVIDIA文档MCP服务器

基于FastAPI的多进程通信服务器,具有NVIDIA文档代理功能。

特性

  • 文件摄入:自动抓取NVIDIA产品文档(GPU、收发器、布线、网卡、软件)
  • RESTful API:使用全文搜索功能搜索和检索文档
  • 缓存:基于Redis的缓存可提高性能
  • 计划更新:使用APScheduler每日自动更新文档
  • MongoDB存储:具有文本搜索索引的可扩展文档存储

技术栈

  • 后端:使用FastAPI的Python 3.9+
  • 数据库:带文本搜索索引的MongoDB
  • 缓存:带10分钟TTL的Redis
  • 调度器:APScheduler用于每日摄入
  • Web剪贴:BeautifulSoup4用于内容提取
  • 测试:支持异步的pytest

快速开始

先决条件

  • Python 3.9+
  • MongoDB(本地或云端)
  • Redis(本地或云端)
  • Docker和Docker Compose(可选)

安装

  1. 克隆存储库

    git clone <repository-url>
    cd nvidia-docs-mcp-server
    
  2. 安装依赖项

    pip install -r requirements.txt
    
  3. 设置环境变量

    cp .env.example .env
    # Edit .env with your MongoDB and Redis URLs
    
  4. 运行应用程序

    uvicorn src.main:app --reload
    

Docker设置

  1. 从Docker Compose开始

    docker-compose up -d
    
  2. 访问应用程序

    • APIhttp://localhost:8000
    • API文件:http://localhost:8000/docs

API终点

文档搜索

GET /api/docs?product_type=GPU&search=performance&page=1&limit=10

参数:

  • product_type:按产品类型筛选(GPU、TRANSCEIVER、布线、NETWORK_CARD、软件)
  • search:全文搜索查询
  • page:分页页码
  • limit:每页项目数(最多100个)

按ID获取文档

GET /api/docs/{document_id}

获取统计信息

GET /api/docs/stats

触发摄入

POST /api/docs/ingest

配置

环境变量

  • MONGODB_URL:MongoDB连接字符串(默认值: mongodb://localhost:27017)
  • REDIS_URL:Redis连接字符串(默认值: redis://localhost:6379)
  • HOST:服务器主机(默认值: 0.0.0.0)
  • PORT:服务器端口(默认值: 8000)

计划程序配置

默认情况下,调度程序每天凌晨2:00 UTC运行。要修改计划,请编辑 src/cron/schedule.py:

trigger = CronTrigger(hour=2, minute=0)  # Change to desired schedule

测试

运行测试套件:

pytest -v

测试覆盖范围包括:

  • 文档摄取和抓取
  • API端点和控制器
  • Redis缓存功能
  • MongoDB操作
  • 调度器功能

发展

项目结构

src/
├── main.py              # FastAPI application
├── database.py          # MongoDB and Redis connections
├── models/
│   └── document.py      # Pydantic models
├── ingestion/
│   └── docs_ingest.py   # Documentation scraping
├── cron/
│   └── schedule.py      # Scheduled tasks
├── controllers/
│   └── docs_controller.py # API controllers
└── routes/
    └── docs.py          # API routes

__tests__/               # Test files

添加新产品类型

  1. 将产品类型添加到 NVIDIAProduct 枚举在 src/ingestion/docs_ingest.py
  2. 将基本URL添加到 NVIDIAUrls.BASE_URLS
  3. 更新中的API验证 src/routes/docs.py

部署

Docker生产

docker build -t nvidia-docs-mcp-server .
docker run -p 8000:8000 \
  -e MONGODB_URL="mongodb://mongodb:27017" \
  -e REDIS_URL="redis://redis:6379" \
  nvidia-docs-mcp-server

Kubernetes

请参阅 docker-compose.yml 用于参考部署配置。

监控

  • 健康检查: GET /health
  • 度量:与Prometheus风格的度量集成
  • 日志记录:结构化JSON日志记录

许可证

该项目根据MIT许可证获得许可。