羊驼分析🦙
   ](https://github.com/DeepKariaX/Analysis-Alpaca-Researcher/issues) ](https://github.com/DeepKariaX/Analysis-Alpaca-Researcher/stargazers) ](https://github.com/DeepKariaX/Analysis-Alpaca-Researcher/network)
一个生产就绪的MCP(模型上下文协议)服务器,为Claude和其他兼容MCP的AI助手提供全面的研究和分析能力。该服务器将网络和学术搜索功能与可选的网络界面集成在一起,用于交互式研究和人工智能驱动的报告生成。
🚀 快速开始
# 1. Clone and navigate to the project
git clone https://github.com/DeepKariaX/Analysis-Alpaca-Researcher.git
cd Analysis-Alpaca-Researcher
# 2. Install dependencies (use virtual environment recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -e .
# 3. Start the MCP server
python http_server.py
# Server runs on http://localhost:8001
# API documentation: http://localhost:8001/docs📋 目录
✨ 特性
核心研究能力
- 多源搜索:结合DuckDuckGo网络搜索和语义学者学术研究
- 内容提取:从网页中智能提取相关信息
- 学术整合:直接访问学术文章和研究论文
- 智能格式化:具有引文和结构化输出的格式正确的研究
- 速率限制:内置重试逻辑和API限制的优雅处理
Web界面功能
- 互动研究:用户友好的网络界面,用于进行研究
- 作业管理:通过进度监控跟踪多个研究工作
- AI驱动的报告:使用OpenAI、Anthropic或Groq生成全面的PDF报告
- PDF导出:将研究结果下载为正确命名的PDF文件
- 实时更新:使用类似WebSocket的轮询进行实时进度跟踪
生产特点
- 全面的错误处理:服务不可用时性能下降
- 广泛的日志记录:调试和监控的详细日志记录
- 可配置设置:基于环境的配置管理
- 自动依赖安装:自动安装缺失的依赖项
- 模块化架构:易于扩展和定制
🏗 建筑
组件概述
analysis_alpaca/
├── src/analysis_alpaca/ # Core MCP server implementation
│ ├── core/ # Server and research orchestration
│ ├── search/ # Search engine implementations
│ ├── models/ # Data models and schemas
│ ├── utils/ # Utility functions and helpers
│ └── exceptions/ # Custom exception handling
├── web_ui/ # Optional web interface
│ ├── frontend/ # React.js frontend application
│ └── backend/ # FastAPI backend for web UI
├── tests/ # Test suite
├── http_server.py # HTTP API wrapper for MCP server
└── requirements.txt # Unified dependencies核心组件
- MCP服务器 (
src/analysis_alpaca/core/server.py)
- 基于FastMCP的服务器向Claude展示研究工具 - 主要工具: deep_research() 用于综合研究 - 结构化研究方法的内置提示模板
- 研究服务 (
src/analysis_alpaca/core/research_service.py)
- 协调整个研究工作流程 - 协调网络和学术搜索 - 管理内容提取和结果格式化 - 处理并行执行和错误恢复
- 搜索实现
- WebSearcher:带有结果解析的DuckDuckGo网络搜索 - 学术搜索者:语义学者API与重试逻辑集成 - 内容提取器:网页内容提取和处理
- HTTP服务器 (
http_server.py)
- 用于MCP功能的REST API包装器 - 允许直接通过HTTP访问研究功能 - 启用CORS以实现web界面集成
- web界面
- 前端:带有PDF生成功能的React.js应用程序 - 后端:用于作业管理和AI报告生成的FastAPI服务器
🔧 安装
先决条件
- Python 3.8+ (推荐:Python 3.11+)
- Node.js 16+ (仅当使用web界面时)
- npm或纱线 (仅当使用web界面时)
基本安装
# Clone the repository
git clone https://github.com/DeepKariaX/Analysis-Alpaca-Researcher.git
cd Analysis-Alpaca-Researcher
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install the package
pip install -e .
# Or install with all optional dependencies
pip install -e ".[dev,ai]"Web界面设置
# Install frontend dependencies
cd web_ui/frontend
npm install
# Return to project root
cd ../..依赖关系概述
核心依赖关系:
httpx>=0.25.0-API请求的HTTP客户端beautifulsoup4>=4.12.0-用于内容提取的HTML解析mcp>=0.1.0-模型上下文协议服务器框架fastapi>=0.104.0-用于HTTP API的Web框架uvicorn>=0.24.0-FastAPI的ASGI服务器
可选AI依赖关系:
pip install -e ".[ai]" # Installs OpenAI, Anthropic, and Groq clients开发依赖性:
pip install -e ".[dev]" # Installs testing and linting tools⚙️ 配置
环境变量
创建一个 .env 项目根目录中的文件:
# Search Configuration
AA_MAX_RESULTS=5 # Maximum results per search
AA_DEFAULT_NUM_RESULTS=3 # Default number of results
AA_WEB_TIMEOUT=15.0 # Web search timeout (seconds)
AA_USER_AGENT="AnalysisAlpaca 1.0"
# Content Configuration
AA_MAX_CONTENT_SIZE=10000 # Maximum response size
AA_MAX_EXTRACTION_SIZE=150000 # Maximum content to extract
# Server Configuration
AA_LOG_LEVEL=INFO # Logging level (DEBUG, INFO, WARNING, ERROR)
AA_LOG_FILE="logs/research.log" # Optional log file path
AA_AUTO_INSTALL_DEPS=true # Auto-install missing dependencies
# AI Provider API Keys (Optional - for web interface)
OPENAI_API_KEY=your_openai_key_here
ANTHROPIC_API_KEY=your_anthropic_key_here
GROQ_API_KEY=your_groq_key_here
# Web UI Configuration
MCP_SERVER_URL=http://localhost:8001 # URL of the MCP HTTP server配置文件
该系统使用分层配置方法:
- 中的默认值
config.py - 环境变量(覆盖默认值)
- 可选的
.env文件(覆盖环境)
🚀 用法
MCP服务器(用于克劳德桌面)
添加到您的Claude Desktop配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"analysis-alpaca": {
"command": "/path/to/python",
"args": ["/path/to/analysis_alpaca/http_server.py"],
"env": {
"AA_MAX_RESULTS": "5",
"AA_LOG_LEVEL": "INFO"
}
}
}
}独立HTTP服务器
# Start the HTTP API server
python http_server.py
# Server runs on http://localhost:8001
# API documentation available at http://localhost:8001/docsWeb界面(可选)
网络界面提供了一种用户友好的方式,可以通过浏览器与AnalysisAlpaca进行交互。
要求:
- 前端使用Node.js 16+和npm
- MCP HTTP服务器必须正在运行(见上文)
设置:
# Install frontend dependencies
cd web_ui/frontend
npm install
cd ../..手动启动(需要2个终端):
终端1-后端API服务器:
cd web_ui/backend
python main.py
# Backend runs on http://localhost:8000
# API documentation: http://localhost:8000/docs终端2-前端开发服务器:
cd web_ui/frontend
npm start
# Frontend runs on http://localhost:3000
# Access the web interface at http://localhost:3000完成设置(共3台服务器):
- MCP服务器 (1号航站楼):
python http_server.py→ http://localhost:8001 - 后端API (2号航站楼):
cd web_ui/backend && python main.py→ http://localhost:8000 - 前端用户界面 (3号航站楼):
cd web_ui/frontend && npm start→ http://localhost:3000
研究工具使用
主要 deep_research 工具接受以下参数:
- 怎么翻译 (必填):研究问题或主题
- 来源 (可选):“网络”、“学术”或“两者皆有”(默认值:“两者都有”)
- num_结果 (可选):要检查的源数量(默认值:2)
克劳德提示示例
Research the latest developments in quantum computing using both web and academic sources.
Can you do comprehensive research on climate change mitigation strategies? Focus on academic sources and examine 3 results.
I need detailed information about the impact of artificial intelligence on healthcare. Use the deep_research tool with web sources only.API直接使用
# Research via HTTP API
curl -X POST "http://localhost:8001/deep_research" \
-H "Content-Type: application/json" \
-d '{
"query": "artificial intelligence in healthcare",
"sources": "both",
"num_results": 3
}'🌐 web界面
特性
- 研究表格:提交研究查询的交互式表单
- 进度跟踪:具有详细日志的实时进度更新
- 作业管理:查看和管理多个研究作业
- AI报告生成:使用各种LLM提供商生成综合报告
- PDF导出:将报告下载为正确命名的PDF文件
- 历史:浏览以前的研究工作和结果
支持的LLM提供商
- OpenAI:GPT-4、GPT-3.5涡轮增压和其他型号
- Anthropic:克劳德3(十四行诗、歌剧、俳句)
- 希腊:使用各种开源模型进行快速推理
文件命名约定
下载的报告使用以下格式: {sanitized_title}_{source_type}.pdf
例子: artificial_intelligence_healthcare_web_academic.pdf
📚 api参考
MCP工具
deep_research
对一个主题进行全面的研究。
参数:
query(string,必填):研究问题或主题sources(字符串,可选):源类型(“web”、“academic”、“both”)num_results(整数,可选):要检查的源数量
退货: 有来源和内容的格式化研究成果
research_prompt
为多阶段研究生成结构化的研究提示。
参数:
topic(string,必填):研究主题
退货: 方法论综合研究提示
HTTP API终结点
POST /deep_research
通过HTTP执行研究查询。
{
"query": "string",
"sources": "both",
"num_results": 2
}GET /health
健康检查端点。
GET /docs
交互式API文档(Swagger UI)。
Web UI API端点
POST /research
开始一项新的研究工作。
GET /research/{job_id}
获取研究工作状态和结果。
GET /research/{job_id}/progress
获取研究工作的详细进展。
🛠 发展
项目结构
analysis_alpaca/
├── src/analysis_alpaca/
│ ├── __init__.py
│ ├── config.py # Configuration management
│ ├── core/
│ │ ├── __init__.py
│ │ ├── server.py # MCP server implementation
│ │ └── research_service.py # Research orchestration
│ ├── search/
│ │ ├── __init__.py
│ │ ├── base.py # Base searcher class
│ │ ├── web_search.py # DuckDuckGo implementation
│ │ ├── academic_search.py # Semantic Scholar implementation
│ │ └── content_extractor.py # Content extraction
│ ├── models/
│ │ ├── __init__.py
│ │ └── research.py # Data models
│ ├── utils/
│ │ ├── __init__.py
│ │ ├── logging.py # Logging utilities
│ │ └── text.py # Text processing
│ └── exceptions/
│ ├── __init__.py
│ └── base.py # Custom exceptions
├── web_ui/
│ ├── frontend/ # React.js application
│ └── backend/ # FastAPI backend
├── tests/ # Test suite
├── http_server.py # HTTP wrapper
├── requirements.txt # Dependencies
├── pyproject.toml # Package configuration
└── Makefile # Development commands开发设置
# Install with development dependencies
pip install -e ".[dev,ai]"
# Set up pre-commit hooks (optional)
pre-commit install
# Run tests
make test
# Code formatting
make format
# Linting
make lint
# Type checking
make type-check添加新的搜索提供商
- 创建一个新的搜索器类,继承自
BaseSearcher - 实施
search()方法 - 将搜索者添加到
ResearchService - 更新配置和文档
例子:
from .base import BaseSearcher
class NewSearcher(BaseSearcher):
async def search(self, query: str, num_results: int) -> List[SearchResult]:
# Implement search logic
pass🧪 测试
运行测试
# Run all tests
make test
# Run with coverage
make test-cov
# Run specific test file
pytest tests/test_models.py
# Run with verbose output
pytest -v测试结构
tests/test_models.py-数据模型测试tests/test_utils.py-实用功能测试tests/conftest.py-测试配置和夹具
写作测试
测试使用pytest和pytest-asyncio进行异步测试:
import pytest
from analysis_alpaca.models.research import ResearchQuery
@pytest.mark.asyncio
async def test_research_query():
query = ResearchQuery(query="test", sources="web", num_results=2)
assert query.query == "test"🚀 部署
生产部署
Docker部署
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -e .
EXPOSE 8001
CMD ["python", "http_server.py"]环境配置
对于生产环境,设置以下环境变量:
AA_LOG_LEVEL=WARNING
AA_LOG_FILE=/var/log/analysis-alpaca.log
AA_AUTO_INSTALL_DEPS=false
AA_MAX_RESULTS=3
AA_WEB_TIMEOUT=20.0反向代理设置(Nginx)
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}监控
该应用程序提供全面的日志记录。监控这些关键指标:
- 研究请求率
- 搜索成功/失败率
- 内容提取成功率
- 响应时间
- 错误模式
缩放注意事项
- 该应用程序是无状态的,可以水平扩展
- 考虑实现Redis来缓存搜索结果
- 在高流量场景中使用适当的消息队列进行后台处理
🔍 故障排除
常见问题
导入错误
# Ensure proper installation
pip install -e .
# Check Python path
python -c "import analysis_alpaca; print('OK')"搜索超时
# Increase timeout values
export AA_WEB_TIMEOUT=30.0
export AA_ACADEMIC_TIMEOUT=30.0学术搜索率限制
系统通过以下方式自动处理语义学者速率限制:
- 指数退避重试逻辑
- 温和降级(仅返回网络结果)
- 请求间距
内容提取失败
- 检查网络连接
- 验证目标站点可用性
- 某些网站可能会阻止自动请求
大响应截断
# Increase content size limits
export AA_MAX_CONTENT_SIZE=15000
export AA_MAX_EXTRACTION_SIZE=200000调试模式
启用详细日志记录:
export AA_LOG_LEVEL=DEBUG
export AA_LOG_FILE="debug.log"
python http_server.py查看日志:
tail -f debug.log获取帮助
- 检查日志以了解详细的错误消息
- 根据示例验证您的配置
- 先用简单的查询进行测试
- 确保所有依赖项都已正确安装
🤝 贡献
开发工作流程
- 分叉存储库
- 创建要素分支:
git checkout -b feature-name - 通过测试进行更改
- 运行质量检查:
make check-all - 提交拉取请求
代码的风格
该项目使用:
- 黑色 用于代码格式化
- isort 用于进口分拣
- 薄片8 对于linting
- mypy 用于类型检查
运行所有检查:
make check-all提交指导方针
使用常规提交:
feat:对于新功能fix:用于修复错误docs:用于文件编制test:用于测试refactor:用于重构
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件。
🙏 致谢
- 语义学者 用于学术搜索API
- DuckDuckGo 用于网络搜索功能
- 模型上下文协议 对于集成框架
- FastMCP 用于服务器实现
- React.js 和 快速 API 对于web界面
📊 路线图
计划的功能
- \[ \] 其他搜索提供商
- 谷歌学术集成 - Bing学术搜索 - ArXiv直接集成
- \[ \] 增强的内容处理
- PDF内容提取 - 图像和图表分析 - 表数据提取
- \[ \] 性能改进
- Redis缓存层 - 异步处理优化 - 响应流
- \[ \] 高级功能
- 引文图分析 - 研究趋势检测 - 多语言支持
- \[ \] 企业功能
- 用户认证 - 使用情况分析 - API速率限制 - 自定义搜索域
版本历史记录
- v1.0.0 -具有核心研究功能的初始版本
- v1.1.0版本 -添加了web界面和PDF导出
- v1.2.0版本 -增强的错误处理和速率限制
- 当前 -全面清理和记录
______________________________________________________________________
有关最新更新和详细的更改日志,请访问 .
