Token导航 LogoToken导航TokenDH.com
Super MCP Server logo
搜索检索stdio官方级别未说明来源级核验

Super MCP Server

MCP Server

一个AI驱动的研究智能系统,能够处理PDF研究论文、进行高级网络搜索,并生成完美的PowerPoint演示文稿,具备语义搜索和研究分析能力。

工具数

10

提示词数

0

GitHub Stars

0

资源数

0
搜索Python学术研究

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Ved0715

提供方

Ved0715

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python run.py

详细介绍

🚀 完美研究MCP服务器

一个全面的人工智能研究智能系统,可以处理PDF研究论文,执行高级网络搜索,并生成具有语义搜索和研究分析功能的完美PowerPoint演示文稿。现在有了独立的HTTP服务器和无缝的FastAPI集成!

![Python 3.8+](https://www.python.org/downloads/) ![MCP Protocol](https://modelcontextprotocol.io/) ![FastAPI](https://fastapi.tiangolo.com/) ![License: MIT](https://opensource.org/licenses/MIT) ![OpenAI](https://openai.com/) ![Pinecone](https://pinecone.io/)

🎯 项目概述

Perfect Research MCP Server是一款尖端的研究助理,它结合了多种人工智能技术,彻底改变了学术和专业研究工作流程。基于模型上下文协议(MCP),它提供 10个强大的工具 无缝集成PDF处理、语义搜索、研究智能和自动演示生成。

🆕 新增:独立HTTP服务器和FastAPI集成 -该系统现在作为一个独立的HTTP服务器运行,可以轻松集成到任何FastAPI应用程序中,为所有研究功能提供干净的API端点。

🌟 是什么让这个特别?

  • 🧠 人工智能研究:自动分析方法、质量、贡献和限制
  • 🔍 高级语义搜索:基于矢量的内容检索,准确率超过95%
  • 🎨 完美演示:人工智能生成的幻灯片,包含3个专业主题
  • 📊 统计分析:自动检测p值、相关性和显著性检验
  • 🌐 多源搜索:谷歌网络、学者、新闻与人工智能增强的集成
  • 💰 成本优化:比高级配置便宜85%,同时保持质量
  • 🔌 FastAPI就绪:与现有FastAPI应用程序无缝集成
  • 🚀 独立服务器:与HTTP REST API终结点独立运行
  • 📡 微服务架构:对可扩展性的关注点进行清晰的分离

✨ 主要特征和功能

🔍 高级搜索和智能

  • 多源搜索:通过SerpAPI搜索谷歌网络、学者、新闻和图片
  • AI增强结果:自动主题提取、研究差距识别
  • 语义论文搜索:已处理论文中基于矢量的内容检索
  • 引文分析:全面的参考跟踪和密度分析
  • 定位目标:针对特定地理区域量身定制的搜索结果

📄 智能PDF处理

  • 双重提取:LlamaParse(高级)+pypdf(回退)以获得最大精度
  • 研究情报:方法评估、贡献识别
  • 质量评分:自动化纸张质量和严谨性评估(0-1.0分)
  • 断面检测:巧妙提取摘要、方法、结果、结论
  • 多模式支持:处理文本、表格和基本图像内容

🧠 人工智能驱动的研究分析

  • 方法论分析:研究设计评估和严谨性评分
  • 统计内容:自动检测p值、效应大小、显著性检验
  • 贡献评估:新颖性评分和突破性识别
  • 极限检测:确定和评价研究制约因素
  • 未来研究:人工智能为下一步行动提出建议
  • 质量指标:完整性、结构和学术标准评估

🎨 完美演示文稿生成

  • 3专业主题:学术专业,现代研究,行政廉洁
  • 受众定位:学术、商业、综合、高管演讲
  • 内容智能:相关幻灯片内容的语义搜索集成
  • 可定制幻灯片:5-25张幻灯片,带有用户定义的焦点区域
  • 引文整合:自动学术参考格式化
  • 视觉增强:研究合适的图形和专业布局

🔧 先进的基础设施

  • 矢量存储器:松果体集成用于语义搜索和长期记忆
  • 成本优化:使用gpt-4o-mini和text-embedding-3-large可节省85%的成本
  • 多纸张支持:同时比较和分析多篇研究论文
  • 导出选项:Markdown、JSON、学术报告
  • 永久存储:数据保留在松果中以备将来使用(演示后不会删除)

🚀 快速入门指南

先决条件

  • Python 3.8+ (建议3.9或更高)
  • API密钥:OpenAI、SerpAPI、松果体(必填)
  • 可选的:用于增强PDF处理的LlamaParse API密钥
  • 记忆:建议使用4GB+RAM处理大型论文
  • 存储:500MB+可用磁盘空间

🔧 安装和设置

方法1:自动设置(推荐)

# 1. Clone the repository
git clone https://github.com/Ved0715/mcp-server-reserch-assistent.git
cd mcp-server-reserch-assistent

# 2. Run automated setup (creates virtual environment, installs dependencies)
python run.py

# 3. Follow the prompts to configure environment

方法2:手动设置

# 1. Clone repository
git clone https://github.com/Ved0715/mcp-server-reserch-assistent.git
cd mcp-server-reserch-assistent

# 2. Create virtual environment
python -m venv perfect_env
source perfect_env/bin/activate  # On Windows: perfect_env\Scripts\activate

# 3. Install dependencies
pip install -r requirements.txt

# 4. Download required NLTK data
python -c "import nltk; nltk.download('punkt')"

🔑 环境配置

  1. 复制环境模板:
   cp .env.template .env
  1. 编辑 .env 使用API密钥文件:
   # === REQUIRED API KEYS ===
   OPENAI_API_KEY=your_openai_api_key_here
   SERPAPI_KEY=your_serpapi_key_here
   PINECONE_API_KEY=your_pinecone_api_key_here
   PINECONE_INDEX_NAME=research-papers
   PINECONE_ENVIRONMENT=us-east-1-aws

   # === OPTIONAL (Enhanced Features) ===
   LLAMA_PARSE_API_KEY=your_llamaparse_key_here
   UNSPLASH_ACCESS_KEY=your_unsplash_key_here

   # === AI MODEL CONFIGURATION ===
   LLM_MODEL=gpt-4o-mini
   EMBEDDING_MODEL=text-embedding-3-large
   EMBEDDING_DIMENSIONS=3072

   # === PROCESSING SETTINGS ===
   CHUNK_SIZE=1000
   CHUNK_OVERLAP=200
   PPT_MAX_SLIDES=25

🎮 运行应用程序

选项1:独立HTTP服务器(推荐)

# Start the HTTP MCP server
python start_mcp_server.py --host localhost --port 3001

# Server will be available at: http://localhost:3001
# Health check: curl http://localhost:3001/health

选项2:Web界面(Streamlit)

# Activate virtual environment (if not already activated)
source perfect_env/bin/activate  # Windows: perfect_env\Scripts\activate

# Launch web interface
streamlit run perfect_app.py --server.port 8502

访问地址:: http://localhost:8502

选项3:MCP服务器(命令行/stdio)

# Start traditional MCP server
python perfect_mcp_server.py

选项4:快速启动

# Use the launcher for guided setup
python run.py
# Choose option 1 for web interface, option 2 for MCP server, or option 3 for HTTP server

🛠️ 完整的工具参考

MCP服务器提供 10种高级工具 可通过模型上下文协议访问:

1. 🔍 高级网络搜索

工具: advanced_search_web

{
  "tool": "advanced_search_web",
  "arguments": {
    "query": "machine learning in healthcare 2024",
    "search_type": "scholar",           // Options: "web", "scholar", "news", "images"
    "num_results": 10,
    "location": "United States",
    "time_period": "year",             // Options: "all", "year", "month", "week", "day"
    "enhance_results": true            // AI enhancement with themes/gaps analysis
  }
}

2. 📄 工艺研究论文

工具: process_research_paper

{
  "tool": "process_research_paper",
  "arguments": {
    "file_content": "base64_encoded_pdf_content",
    "file_name": "research_paper.pdf",
    "paper_id": "paper_001",
    "enable_research_analysis": true,
    "enable_vector_storage": true,
    "analysis_depth": "comprehensive"    // Options: "basic", "standard", "comprehensive"
  }
}

3. 🎯 创建完美的演示文稿

工具: create_perfect_presentation

{
  "tool": "create_perfect_presentation",
  "arguments": {
    "paper_id": "paper_001",
    "user_prompt": "Focus on methodology and statistical results for academic conference presentation",
    "title": "Research Findings Presentation",
    "author": "Your Name",
    "theme": "academic_professional",     // Options: "academic_professional", "research_modern", "executive_clean"
    "slide_count": 12,
    "audience_type": "academic",          // Options: "academic", "business", "general", "executive"
    "include_search_results": false,
    "search_query": "related research context"
  }
}

4.🧠 研究情报分析

工具: research_intelligence_analysis

{
  "tool": "research_intelligence_analysis",
  "arguments": {
    "paper_id": "paper_001",
    "analysis_types": ["methodology", "contributions", "quality", "citations", "statistical", "limitations"],
    "provide_recommendations": true
  }
}

5. 🔍 语义论文搜索

工具: semantic_paper_search

{
  "tool": "semantic_paper_search",
  "arguments": {
    "query": "statistical significance and p-values methodology",
    "paper_id": "paper_001",              // Optional: search specific paper
    "search_type": "results",             // Options: "general", "methodology", "results", "discussion", "conclusion"
    "max_results": 10,
    "similarity_threshold": 0.7
  }
}

6.⚖️ 比较研究论文

工具: compare_research_papers

{
  "tool": "compare_research_papers",
  "arguments": {
    "paper_ids": ["paper_001", "paper_002", "paper_003"],
    "comparison_aspects": ["methodology", "findings", "contributions", "limitations", "citations", "quality"],
    "generate_summary": true
  }
}

7. 💡 生成研究见解

工具: generate_research_insights

{
  "tool": "generate_research_insights",
  "arguments": {
    "paper_id": "paper_001",
    "focus_area": "future_research",      // Options: "methodology_improvement", "future_research", "practical_applications", "theoretical_implications"
    "insight_depth": "detailed",          // Options: "overview", "detailed", "comprehensive"
    "include_citations": true
  }
}

8. 📤 出口研究总结

工具: export_research_summary

{
  "tool": "export_research_summary",
  "arguments": {
    "paper_id": "paper_001",
    "export_format": "markdown",          // Options: "markdown", "json", "academic_report"
    "include_analysis": true,
    "include_presentation_ready": false
  }
}

9. 📚 列出已处理的论文

工具: list_processed_papers

{
  "tool": "list_processed_papers",
  "arguments": {
    "include_stats": true,
    "sort_by": "quality_score"           // Options: "name", "date", "quality_score"
  }
}

10. 🏥 系统状态

工具: system_status

{
  "tool": "system_status",
  "arguments": {
    "include_config": false,
    "run_health_check": true
  }
}

📁 项目结构

mcp-server-reserch-assistent/
├── 🧠 Core Components
│   ├── perfect_mcp_server.py          # Main MCP server (10 tools)
│   ├── enhanced_pdf_processor.py      # Advanced PDF processing (LlamaParse + pypdf)
│   ├── vector_storage.py              # Pinecone integration & semantic search
│   ├── research_intelligence.py       # AI research analysis engine
│   ├── perfect_ppt_generator.py       # PowerPoint generation (3 themes)
│   └── search_client.py               # SerpAPI search client
├── 🚀 HTTP Server & Integration (NEW)
│   ├── start_mcp_server.py            # Standalone HTTP server launcher
│   ├── mcp_services/                  # HTTP server components
│   │   ├── transports/
│   │   │   └── http_transport.py      # HTTP transport layer
│   │   └── core/
│   │       └── server_wrapper.py     # MCP server wrapper
│   └── api_integration/               # FastAPI integration
│       ├── mcp_client.py              # HTTP client for FastAPI
│       └── fastapi_routes.py          # Ready-to-use FastAPI routes
├── 🎨 User Interfaces
│   ├── perfect_app.py                 # Streamlit web interface (4 tabs)
│   └── run.py                         # Setup validation & launcher
├── ⚙️ Configuration
│   ├── config.py                      # Advanced configuration (50+ settings)
│   ├── requirements.txt               # Dependencies (40+ packages)
│   ├── .env.template                  # Environment template
│   └── .gitignore                     # Git ignore rules
├── 📁 Generated Content (Created at Runtime)
│   ├── presentations/                 # Generated PowerPoint files
│   ├── cache/                         # Document processing cache
│   ├── logs/                          # System logs
│   ├── exports/                       # Exported summaries
│   └── temp/                          # Temporary processing files
└── 📚 Documentation
    ├── README.md                      # This comprehensive guide
    ├── INTEGRATION_GUIDE.md           # Detailed FastAPI integration guide
    └── .env.template                  # Environment setup template

🔄 完整的工作流示例

示例1:学术研究分析

# 1. Start web interface
streamlit run perfect_app.py --server.port 8502

# 2. Upload research paper (Tab 1: Upload & Process)
# 3. Review analysis results with quality scoring
# 4. Query specific sections (Tab 2: Query & Q&A)
# 5. Generate conference presentation (Tab 3: Generate PPT)

示例2:多论文文献综述

// 1. Process multiple papers
{"tool": "process_research_paper", "arguments": {"file_content": "...", "paper_id": "paper_001"}}
{"tool": "process_research_paper", "arguments": {"file_content": "...", "paper_id": "paper_002"}}

// 2. Compare methodologies
{"tool": "compare_research_papers", "arguments": {"paper_ids": ["paper_001", "paper_002"], "comparison_aspects": ["methodology", "findings"]}}

// 3. Export comprehensive summary
{"tool": "export_research_summary", "arguments": {"paper_id": "paper_001", "export_format": "academic_report"}}

示例3:商业智能工作流

// 1. Search for industry research
{"tool": "advanced_search_web", "arguments": {"query": "AI in healthcare market trends 2024", "search_type": "web", "enhance_results": true}}

// 2. Process relevant papers
{"tool": "process_research_paper", "arguments": {"file_content": "...", "paper_id": "market_analysis"}}

// 3. Create executive presentation
{"tool": "create_perfect_presentation", "arguments": {"paper_id": "market_analysis", "theme": "executive_clean", "audience_type": "business"}}

⚙️ 配置与优化

成本优化(推荐)

默认配置使用成本优化的模型,同时保持高质量:

# config.py - Key cost-optimized settings
LLM_MODEL = "gpt-4o-mini"                    # 85% cheaper than GPT-4
EMBEDDING_MODEL = "text-embedding-3-large"   # High quality, reasonable cost
CHUNK_SIZE = 1000                            # Optimal for accuracy/cost balance
CHUNK_OVERLAP = 200                          # Good context preservation
PPT_MAX_SLIDES = 25                          # Reasonable presentation length

高级配置选项

# Research Intelligence Settings
ENABLE_RESEARCH_INTELLIGENCE = True          # AI analysis engine
ENABLE_STATISTICAL_EXTRACTION = True         # P-value and correlation detection
ENABLE_CITATION_ANALYSIS = True              # Reference pattern analysis
ENABLE_METHODOLOGY_ANALYSIS = True           # Research design assessment

# Vector Storage Settings
VECTOR_SIMILARITY_THRESHOLD = 0.7            # Relevance threshold for semantic search
MAX_RETRIEVAL_RESULTS = 20                   # Search result limit
ENABLE_VECTOR_STORAGE = True                 # Pinecone integration

# Presentation Settings
ENABLE_ACADEMIC_FORMATTING = True            # Scholar-appropriate styling
ENABLE_AUTO_CITATIONS = True                 # Automatic reference integration
ENABLE_VISUAL_ENHANCEMENTS = True            # Professional graphics and layouts

🎯 用例和应用

🎓 学术研究

  • 会议报告:为学术会议生成带有适当引用的幻灯片
  • 文献综述:系统分析和比较多篇研究论文
  • 论文答辩:根据论文章节创建全面的演示文稿
  • 拨款建议:提取供资申请的关键方法和调查结果
  • 同行评审:评估论文质量并提供结构化反馈

💼 商业智能

  • 市场调研:将学术论文转化为商业见解
  • 竞品分析:分析行业研究和趋势
  • 高管简报会:从技术论文中创建以业务为重点的演示文稿
  • 战略规划:为决策过程提取见解
  • 投资研究:分析研究论文以寻找投资机会

🔬 研究与开发

  • 产品开发:提取研究见解以促进创新
  • 技术文档:创建全面的研究摘要
  • 专利研究:分析现有技术和研究景观
  • 临床研究:处理医疗保健应用的医学研究论文
  • 政策制定将研究转化为政策建议

📚 教育与培训

  • 课程材料:根据研究论文创建教育演示文稿
  • 学生培养:通过实例教授研究方法
  • 专业发展:根据最新研究创建培训材料
  • 研讨会演示:为教育研讨会生成内容

💰 成本分析和估算

API使用成本(优化配置)

根据研究论文:

  • PDF处理(LlamaParse):~0.02-0.05美元
  • 研究分析(GPT-4o-mini):~0.03-0.05美元
  • 矢量嵌入(文本嵌入-3大):~0.01-0.02美元
  • 每篇论文总计: ~$0.06-0.12

每次演示:

  • 内容生成(GPT-4o-mini):~0.05-0.08美元
  • 语义搜索(松果):~0.001-0.002美元
  • 额外处理:~0.02-0.03美元
  • 每份演示文稿总计: ~$0.07-0.11

按搜索查询:

  • SerpAPI搜索:约0.005美元(每月100次免费搜索)
  • 人工智能增强:~0.01-0.02美元
  • 每次搜索总计: ~$0.015-0.025

月度成本估算

灯光使用 (10篇论文,5场演讲,50次搜索):

  • 处理费用:约1.20美元
  • 演示文稿:约0.55美元
  • 搜索:约1.25美元
  • 松果储存:~0.50美元
  • 总计:约3.5美元/月

中等使用率 (25篇论文,15场演讲,150次搜索):

  • 处理费用:约3.00美元
  • 演示文稿:约1.65美元
  • 搜索:约3.75美元
  • 松果储存:约1.25美元
  • 总计:约9.65美元/月

大量使用 (50篇论文,30场演讲,300次搜索):

  • 处理费用:约6.00美元
  • 演示文稿:约3.30美元
  • 搜索:约7.50美元
  • 松果储存:~2.50美元
  • 总计:约19.30美元/月
💡 成本节约:此配置为 便宜85% 相较于使用高端型号(GPT-4,大尺寸文本嵌入-3),同时保持卓越的质量。

🔧 FastAPI集成指南

Perfect Research MCP Server现在通过独立的HTTP服务器架构与FastAPI应用程序无缝集成。这允许您在不修改核心代码库的情况下,为任何现有的FastAPI应用程序添加强大的研究功能。

🏗️ 架构概述

Your Frontend/Client
        ↓
Your FastAPI Server (Port 8000)
        ↓ HTTP calls
MCP Server (Port 3001)
        ↓
Research Processing Components

优点:

  • 清洁分离:您现有的API保持不变
  • 可扩展的:运行多个MCP服务器实例
  • 可维护性:独立更新服务
  • 生产就绪:微服务架构

🚀 快速FastAPI集成(3步)

步骤1:启动MCP服务器

# Navigate to MCP server directory
cd /path/to/mcp-server-reserch-assistent

# Start the standalone HTTP server
python start_mcp_server.py --host localhost --port 3001

步骤2:将集成添加到您的FastAPI应用程序

将这3行添加到现有的FastAPI应用程序中:

# your_existing_fastapi_app.py
from fastapi import FastAPI
import sys
from pathlib import Path

# Add MCP integration path
mcp_dir = Path("/path/to/mcp-server-reserch-assistent")
sys.path.insert(0, str(mcp_dir))

# Import MCP routes
from api_integration.fastapi_routes import router as mcp_router, cleanup_mcp_client

# Your existing FastAPI app
app = FastAPI()

# Your existing routes
@app.get("/")
def read_root():
    return {"message": "Your existing API"}

# Add MCP routes (ONE LINE!)
app.include_router(mcp_router)

# Add cleanup on shutdown (ONE LINE!)
@app.on_event("shutdown")
async def shutdown_event():
    await cleanup_mcp_client()

步骤3:测试集成

# Start your FastAPI server
uvicorn your_app:app --host localhost --port 8000

# Test health check
curl http://localhost:8000/api/v1/mcp/health

# Test web search
curl -X POST http://localhost:8000/api/v1/mcp/search/web \
  -H "Content-Type: application/json" \
  -d '{"query": "AI research", "search_type": "scholar", "num_results": 5}'

📡 可用的API端点

集成后,您的FastAPI服务器将具有以下新端点:

🔍 健康与状态

GET /api/v1/mcp/health          # Check MCP server health
GET /api/v1/mcp/tools           # List available tools  
GET /api/v1/mcp/status          # System status

📄 纸张处理

POST /api/v1/mcp/papers/upload          # Upload and process PDFs
GET /api/v1/mcp/papers/{paper_id}       # Get paper information

🔍 搜索

POST /api/v1/mcp/search/web             # Web search (Google, Scholar, News)
POST /api/v1/mcp/search/semantic        # AI search within papers

🎨 演示

POST /api/v1/mcp/presentations/generate                    # Generate PowerPoint presentations
GET /api/v1/mcp/presentations/{filename}/download         # Download presentations

🧠 分析

POST /api/v1/mcp/analysis/research      # Research intelligence analysis
POST /api/v1/mcp/insights/generate      # Generate research insights

🧪 API测试示例

上传并处理研究论文

curl -X POST http://localhost:8000/api/v1/mcp/papers/upload \
  -F "file=@research_paper.pdf" \
  -F "paper_id=my_paper_001" \
  -F "enable_research_analysis=true" \
  -F "enable_vector_storage=true" \
  -F "analysis_depth=comprehensive"

搜索谷歌学者

curl -X POST http://localhost:8000/api/v1/mcp/search/web \
  -H "Content-Type: application/json" \
  -d '{
    "query": "machine learning healthcare applications",
    "search_type": "scholar",
    "num_results": 10,
    "enhance_results": true
  }'

生成研究演示文稿

curl -X POST http://localhost:8000/api/v1/mcp/presentations/generate \
  -H "Content-Type: application/json" \
  -d '{
    "paper_id": "my_paper_001",
    "user_prompt": "Focus on methodology and results for medical professionals",
    "title": "Research Findings Presentation",
    "theme": "academic_professional",
    "slide_count": 15,
    "audience_type": "academic"
  }'

论文中的语义搜索

curl -X POST http://localhost:8000/api/v1/mcp/search/semantic \
  -H "Content-Type: application/json" \
  -d '{
    "query": "What were the statistical results and p-values?",
    "paper_id": "my_paper_001",
    "max_results": 5,
    "similarity_threshold": 0.7
  }'

🔧 高级配置

环境变量

创建一个 .env MCP服务器目录中的文件:

# OpenAI Configuration
OPENAI_API_KEY=your_openai_api_key_here

# SerpAPI Configuration (for web search)
SERPAPI_API_KEY=your_serpapi_key_here

# Pinecone Configuration (for vector storage)
PINECONE_API_KEY=your_pinecone_api_key_here
PINECONE_ENVIRONMENT=your_pinecone_environment

# LlamaParse Configuration (for advanced PDF parsing)
LLAMA_CLOUD_API_KEY=your_llama_cloud_api_key_here

# MCP Server Configuration
MCP_SERVER_HOST=localhost
MCP_SERVER_PORT=3001

自定义MCP服务器配置

# Custom host and port
python start_mcp_server.py --host 0.0.0.0 --port 3002

# Enable debug logging
python start_mcp_server.py --debug

# Help
python start_mcp_server.py --help

💡 集成最佳实践

  1. 错误处理:在发出请求之前,始终检查MCP服务器的运行状况
  2. 超时:为长时间运行的操作(PDF处理、PPT生成)设置适当的超时
  3. 速率限制:对FastAPI端点实施速率限制
  4. 缓存:缓存频繁访问的数据以减少MCP服务器负载
  5. 监控:为MCP服务器设置健康检查和警报
  6. 安全:使用适当的身份验证和输入验证
  7. 日志记录:记录所有交互以进行调试和监控

这种集成方法提供了一种干净、可扩展的解决方案,通过强大的研究能力增强了您现有的FastAPI应用程序,同时保持了关注点的分离和生产准备。

替代方案:直接集成(传统方法)

如果您希望将MCP组件直接集成到您的FastAPI应用程序中(不建议用于生产),可以使用以下方法:

创建 research_service.py:

from fastapi import FastAPI, UploadFile, File, HTTPException, BackgroundTasks
from pydantic import BaseModel
from typing import List, Optional, Dict, Any
import base64
import asyncio
import uuid
from datetime import datetime

# Import MCP components
from perfect_mcp_server import PerfectMCPServer
from config import AdvancedConfig

app = FastAPI(title="Research Intelligence API", version="1.0.0")

# Initialize MCP server
mcp_server = PerfectMCPServer()

# Pydantic models
class PaperProcessRequest(BaseModel):
    file_name: str
    paper_id: str
    enable_research_analysis: bool = True
    enable_vector_storage: bool = True
    analysis_depth: str = "comprehensive"

class PresentationRequest(BaseModel):
    paper_id: str
    user_prompt: str
    title: Optional[str] = None
    author: str = "AI Research Assistant"
    theme: str = "academic_professional"
    slide_count: int = 12
    audience_type: str = "academic"
    include_search_results: bool = False
    search_query: Optional[str] = None

class SearchRequest(BaseModel):
    query: str
    search_type: str = "web"
    num_results: int = 10
    location: str = "United States"
    time_period: str = "all"
    enhance_results: bool = True

class SemanticSearchRequest(BaseModel):
    query: str
    paper_id: Optional[str] = None
    search_type: str = "general"
    max_results: int = 10
    similarity_threshold: float = 0.7

# API Endpoints

@app.post("/api/research/process-paper")
async def process_research_paper(
    file: UploadFile = File(...),
    request: PaperProcessRequest = None
):
    """Process a research paper PDF with advanced analysis"""
    try:
        # Read file content
        content = await file.read()
        file_base64 = base64.b64encode(content).decode('utf-8')
        
        # Generate paper ID if not provided
        paper_id = request.paper_id if request else str(uuid.uuid4())
        
        # Process using MCP server
        result = await mcp_server._handle_process_paper(
            file_content=file_base64,
            file_name=file.filename,
            paper_id=paper_id,
            enable_research_analysis=request.enable_research_analysis if request else True,
            enable_vector_storage=request.enable_vector_storage if request else True,
            analysis_depth=request.analysis_depth if request else "comprehensive"
        )
        
        return {
            "success": True,
            "paper_id": paper_id,
            "file_name": file.filename,
            "result": result[0].text if result else "Processing completed"
        }
        
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Processing failed: {str(e)}")

@app.post("/api/research/create-presentation")
async def create_presentation(request: PresentationRequest):
    """Create a perfect research presentation"""
    try:
        result = await mcp_server._handle_create_presentation(
            paper_id=request.paper_id,
            user_prompt=request.user_prompt,
            title=request.title,
            author=request.author,
            theme=request.theme,
            slide_count=request.slide_count,
            audience_type=request.audience_type,
            include_search_results=request.include_search_results,
            search_query=request.search_query
        )
        
        return {
            "success": True,
            "result": result[0].text if result else "Presentation created"
        }
        
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Presentation creation failed: {str(e)}")

@app.post("/api/research/search")
async def advanced_search(request: SearchRequest):
    """Perform advanced web search with AI enhancement"""
    try:
        result = await mcp_server._handle_advanced_search(
            query=request.query,
            search_type=request.search_type,
            num_results=request.num_results,
            location=request.location,
            time_period=request.time_period,
            enhance_results=request.enhance_results
        )
        
        return {
            "success": True,
            "result": result[0].text if result else "Search completed"
        }
        
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Search failed: {str(e)}")

@app.post("/api/research/semantic-search")
async def semantic_search(request: SemanticSearchRequest):
    """Perform semantic search within processed papers"""
    try:
        result = await mcp_server._handle_semantic_search(
            query=request.query,
            paper_id=request.paper_id,
            search_type=request.search_type,
            max_results=request.max_results,
            similarity_threshold=request.similarity_threshold
        )
        
        return {
            "success": True,
            "result": result[0].text if result else "Search completed"
        }
        
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Semantic search failed: {str(e)}")

@app.get("/api/research/papers")
async def list_papers(include_stats: bool = True, sort_by: str = "date"):
    """List all processed research papers"""
    try:
        result = await mcp_server._handle_list_papers(
            include_stats=include_stats,
            sort_by=sort_by
        )
        
        return {
            "success": True,
            "result": result[0].text if result else "No papers found"
        }
        
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Failed to list papers: {str(e)}")

@app.get("/api/research/status")
async def system_status(include_config: bool = False):
    """Get comprehensive system status"""
    try:
        result = await mcp_server._handle_system_status(
            include_config=include_config,
            run_health_check=True
        )
        
        return {
            "success": True,
            "result": result[0].text if result else "System status retrieved"
        }
        
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Status check failed: {str(e)}")

@app.post("/api/research/analysis/{paper_id}")
async def research_analysis(
    paper_id: str,
    analysis_types: List[str] = ["methodology", "contributions", "quality"],
    provide_recommendations: bool = True
):
    """Perform comprehensive research intelligence analysis"""
    try:
        result = await mcp_server._handle_research_analysis(
            paper_id=paper_id,
            analysis_types=analysis_types,
            provide_recommendations=provide_recommendations
        )
        
        return {
            "success": True,
            "paper_id": paper_id,
            "result": result[0].text if result else "Analysis completed"
        }
        
    except Exception as e:
        raise HTTPException(status_code=500, detail=f"Analysis failed: {str(e)}")

# Health check endpoint
@app.get("/health")
async def health_check():
    return {"status": "healthy", "timestamp": datetime.now().isoformat()}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

步骤4:FastAPI的环境设置

# Copy environment configuration
cp .env.template your_fastapi_project/.env
# Edit .env with your API keys (same as above)

步骤5:运行FastAPI服务器

# Navigate to your FastAPI project
cd your_fastapi_project

# Install dependencies
pip install -r mcp_requirements.txt

# Run FastAPI server
uvicorn research_service:app --host 0.0.0.0 --port 8000 --reload

🌐 前端集成示例

React集成

// research-api.js
const API_BASE = 'http://localhost:8000/api/research';

export const ResearchAPI = {
  // Process research paper
  async processPaper(file, paperData) {
    const formData = new FormData();
    formData.append('file', file);
    
    const response = await fetch(`${API_BASE}/process-paper`, {
      method: 'POST',
      body: formData,
      headers: {
        'Content-Type': 'application/json',
        ...paperData && { 'X-Paper-Data': JSON.stringify(paperData) }
      }
    });
    
    return response.json();
  },

  // Create presentation
  async createPresentation(presentationData) {
    const response = await fetch(`${API_BASE}/create-presentation`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(presentationData)
    });
    
    return response.json();
  },

  // Advanced search
  async search(searchData) {
    const response = await fetch(`${API_BASE}/search`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(searchData)
    });
    
    return response.json();
  },

  // Semantic search
  async semanticSearch(searchData) {
    const response = await fetch(`${API_BASE}/semantic-search`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(searchData)
    });
    
    return response.json();
  }
};

React组件示例

// ResearchDashboard.jsx
import React, { useState } from 'react';
import { ResearchAPI } from './research-api';

export const ResearchDashboard = () => {
  const [papers, setPapers] = useState([]);
  const [loading, setLoading] = useState(false);

  const handlePaperUpload = async (file) => {
    setLoading(true);
    try {
      const result = await ResearchAPI.processPaper(file, {
        paper_id: `paper_${Date.now()}`,
        enable_research_analysis: true,
        analysis_depth: 'comprehensive'
      });
      
      if (result.success) {
        setPapers(prev => [...prev, result]);
        alert('Paper processed successfully!');
      }
    } catch (error) {
      console.error('Upload failed:', error);
    } finally {
      setLoading(false);
    }
  };

  const handleCreatePresentation = async (paperId, prompt) => {
    setLoading(true);
    try {
      const result = await ResearchAPI.createPresentation({
        paper_id: paperId,
        user_prompt: prompt,
        theme: 'academic_professional',
        slide_count: 12,
        audience_type: 'academic'
      });
      
      if (result.success) {
        alert('Presentation created successfully!');
      }
    } catch (error) {
      console.error('Presentation creation failed:', error);
    } finally {
      setLoading(false);
    }
  };

  return (
    

      
Research Intelligence Dashboard

      
      {/* File Upload */}
      

         handlePaperUpload(e.target.files[0])}
          disabled={loading}
        />
        {loading && 
Processing...
}
      

      {/* Papers List */}
      

        {papers.map((paper, idx) => (
          

            
{paper.file_name}

            
Paper ID: {paper.paper_id}

             handleCreatePresentation(
                paper.paper_id, 
                "Create a comprehensive presentation focusing on methodology and key findings"
              )}
            >
              Create Presentation
            
          

        ))}
      

    

  );
};

🔄 高级集成模式

后台任务处理

# For long-running tasks
from fastapi import BackgroundTasks

@app.post("/api/research/process-paper-async")
async def process_paper_async(
    background_tasks: BackgroundTasks,
    file: UploadFile = File(...),
    request: PaperProcessRequest = None
):
    """Process paper asynchronously"""
    task_id = str(uuid.uuid4())
    
    # Add to background tasks
    background_tasks.add_task(
        process_paper_background,
        task_id,
        file,
        request
    )
    
    return {"task_id": task_id, "status": "processing"}

async def process_paper_background(task_id: str, file: UploadFile, request: PaperProcessRequest):
    """Background task for paper processing"""
    # Implementation here
    pass

WebSocket集成

from fastapi import WebSocket

@app.websocket("/ws/research/{client_id}")
async def websocket_endpoint(websocket: WebSocket, client_id: str):
    await websocket.accept()
    
    try:
        while True:
            data = await websocket.receive_json()
            
            if data['type'] == 'process_paper':
                # Process and send updates
                await websocket.send_json({
                    "type": "progress",
                    "message": "Processing PDF...",
                    "progress": 25
                })
                
                # Continue processing...
                
    except Exception as e:
        await websocket.send_json({
            "type": "error",
            "message": str(e)
        })

📊 FastAPI性能提示

  1. 启用异步处理:使用 async def 对于所有端点
  2. 实现缓存:缓存频繁的搜索和分析
  3. 使用后台任务:用于长时间运行的操作
  4. 添加速率限制:防止API滥用
  5. 监测性能:跟踪响应时间和错误
  6. 数据库集成:将处理后的论文存储在PostgreSQL/MongoDB中
  7. 文件存储:将云存储用于PDF和演示文稿

🎯 快速入门摘要

🚀 对于独立HTTP服务器:

# 1. Start MCP server
python start_mcp_server.py --host localhost --port 3001

# 2. Test endpoints
curl http://localhost:3001/health
curl -X POST http://localhost:3001/mcp/call -H "Content-Type: application/json" -d '{"tool": "advanced_search_web", "arguments": {"query": "AI research"}}'

🔌 对于FastAPI集成:

# 1. Add to your FastAPI app
from api_integration.fastapi_routes import router as mcp_router, cleanup_mcp_client

app.include_router(mcp_router)

@app.on_event("shutdown")
async def shutdown_event():
    await cleanup_mcp_client()

# 2. Your API now has 11 new research endpoints!

📊 可用端点摘要:

  • 11条FastAPI路线 完整的研究工作流程
  • 4个直接MCP工具 用于高级操作
  • 3种部署选项 (HTTP服务器、Streamlit、stdio)
  • 完整的微服务架构 准备生产

🚨 故障排除指南

常见问题及解决方案

1. PDF处理失败

# Issue: LlamaParse API key missing
⚠️ LLAMA_PARSE_API_KEY not set - using fallback PDF parsing

# Solution: Add LlamaParse API key to .env (optional but recommended)
LLAMA_PARSE_API_KEY=your_llamaparse_api_key_here

2. 松果连接错误

# Issue: Vector dimension mismatch
❌ Vector dimension 1536 does not match the dimension of the index 3072

# Solution: Ensure embedding model matches index dimensions
# In .env file:
EMBEDDING_MODEL=text-embedding-3-large
EMBEDDING_DIMENSIONS=3072

3. OpenAI API错误

# Issue: Rate limiting or quota exceeded
❌ Rate limit exceeded for requests

# Solutions:
# 1. Reduce batch sizes in config.py
# 2. Add delays between requests
# 3. Upgrade OpenAI plan
# 4. Use gpt-4o-mini for cost optimization

4. 搜索API限制

# Issue: SerpAPI quota exceeded
❌ SerpAPI monthly limit reached

# Solutions:
# 1. SerpAPI offers 100 free searches/month
# 2. Upgrade to paid plan for more searches
# 3. Implement search result caching

5. 内存问题

# Issue: Large PDF processing fails
❌ Memory error processing large documents

# Solutions:
# 1. Reduce CHUNK_SIZE in config.py
# 2. Process papers individually
# 3. Increase system RAM
# 4. Use cloud processing for large files

6. 环境设置问题

# Issue: Missing dependencies
❌ ModuleNotFoundError: No module named 'nltk'

# Solution: Ensure all dependencies are installed
pip install -r requirements.txt
python -c "import nltk; nltk.download('punkt')"

系统验证命令

# Run comprehensive system check
python run.py

# Check API connectivity
python -c "from config import AdvancedConfig; print(AdvancedConfig().validate_config())"

# Test Pinecone connection
python -c "from vector_storage import AdvancedVectorStorage; vs = AdvancedVectorStorage(config); print('Connected!')"

# Verify Streamlit installation
streamlit --version

性能优化提示

  1. API密钥管理:定期旋转按键并监控使用情况
  2. 缓存策略:为频繁访问的数据实现Redis
  3. 批处理:批量处理多篇论文
  4. 资源监控:监视CPU、内存和API使用情况
  5. 错误处理:实施全面的错误记录
  6. 备份策略:定期备份已处理的数据和配置

📈 绩效指标和基准

处理速度基准

  • PDF文本提取:每篇论文5-15秒(因PDF质量和大小而异)
  • 研究分析:每篇论文10-30秒(取决于分析深度)
  • 演示文稿生成:15-45秒(因幻灯片数量和复杂性而异)
  • 语义搜索:每个查询\<1秒(初始索引后)
  • 矢量存储器:每篇论文5-10秒(取决于内容长度)

准确性指标

  • PDF文本提取:准确率95-99%(LlamaParse),85-95%(pypdf回退)
  • 研究元素检测方法、结果和结论的精确度为90%-95%
  • 质量评价:与专家人类评级的相关性为85-90%
  • 引文检测:标准学术格式的准确率为95-98%
  • 统计内容检测:p值、相关性的准确率为92-97%

可扩展性特征

  • 并发处理:支持5-10个同时请求(取决于硬件)
  • 矢量数据库:可扩展到10000多篇研究论文
  • 搜索性能:语义查询的响应时间低于秒
  • 演示文稿生成:带幻灯片计数的线性缩放
  • 内存使用:2-4GB RAM,适用于典型工作负载

🤝 贡献与发展

开发设置

# Clone for development
git clone https://github.com/Ved0715/mcp-server-reserch-assistent.git
cd mcp-server-reserch-assistent

# Create development environment
python -m venv dev_env
source dev_env/bin/activate  # Windows: dev_env\Scripts\activate

# Install development dependencies
pip install -r requirements.txt
pip install pytest black flake8 mypy

# Run tests
pytest

# Code formatting
black *.py
flake8 *.py

贡献指南

  1. 分叉存储库 并创建一个特征分支
  2. 编写测试 对于新功能
  3. 遵循代码风格 使用黑色和Flake8
  4. 更新文档 对于任何新功能
  5. 提交拉取请求 描述清晰

扩展思路

  • 其他语言:支持非英语研究论文
  • 自定义主题:特定于组织的演示文稿模板
  • 高级分析:研究趋势分析和预测
  • 协作功能:多用户研究项目管理
  • 集成API:与机构存储库连接
  • 移动支持:移动设备的响应式web界面

📄 许可证和法律

该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。

第三方服务

  • OpenAI:GPT模型和嵌入(需要API密钥)
  • 打电话给自己:高级PDF处理(可选,需要API密钥)
  • 松果:矢量数据库基础设施(需要API密钥)
  • SerpAPI:Web搜索功能(需要API密钥)
  • 模型上下文协议:集成框架(开源)

数据隐私

  • 无数据存储:系统不会将您的研究论文存储在外部服务器上
  • 本地处理:所有处理都在您的基础设施上进行
  • API隐私:遵守每个服务提供商的隐私政策
  • 合规:适用于学术和商业用途

🙏 致谢

  • OpenAI -高级语言模型和嵌入
  • 打电话给自己 -卓越的PDF处理能力
  • 松果 -可扩展的矢量数据库基础架构
  • SerpAPI -全面的网络搜索集成
  • 模型上下文协议 -无缝的AI集成框架
  • 研究团体 -学术工作流程的灵感和反馈

📞 支持和资源

获取帮助

额外资源

  • API文档:交互式FastAPI文档,网址为 /docs 端点
  • 配置指南:详细的环境设置说明
  • 视频教程:分步设置和使用指南
  • 最佳实践:针对不同用例的推荐工作流程

______________________________________________________________________

🚀 准备好改变你的研究工作流程了吗?

# Get started in 3 simple commands
git clone https://github.com/Ved0715/mcp-server-reserch-assistent.git
cd mcp-server-reserch-assistent
python run.py

转化研究论文→ 生成AI见解→ 创建完美的演示文稿 🎯

______________________________________________________________________

*内置于❤️ 面向重视智能自动化和高质量研究工作流程的研究人员、学者和专业人士。*

目录标签

目录标签

搜索Python学术研究AI研究助手本地部署PDF处理语义搜索演示文稿生成

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

10

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP