analyst_mcp
用于学术和情报分析师研究工作流程的Python MCP服务器。
其他使用文档:
实施了什么
- 可流式HTTP MCP端点安装在
/mcp,适用于支持MCP的客户端和网关。 - 针对MCP流量的API-key保护
Authorization: Bearer或x-api-key. - 独立的UI平台,由独立的Python UI后端和独立的React web应用程序组成。
- 用于arXiv、OpenAlex和Semantic Scholar的多源提供者适配器。
- 包含当前本地研究日期的日期感知搜索响应。
- A.
collect_articles该工作流首先进行搜索,然后选择性地仅存储匹配的文章文件。 - 下载管道,按提供者/源id存储论文,并为RAG提取的文本建立索引。
- 支持Neo4j的知识图抽象和用于开发/测试的内存回退。
- 基于图表主题和引文加权候选人评分的推荐流程。
- 一流的MCP工作流程,用于日常扫描总结和结构化文献综述。
- 刷新arXiv的每日同步
src/pdf清单和最近的arXiv/OpenAlex元数据窗口。 - arXiv批量档案的焦油选择性提取助手。
- 服务器中立的纸张和工件API
/api/papers/*用于外部客户端和UI后端。
快速开始
- 复制
.env.example到.env并至少设置ANALYST_MCP_API_KEY和ANALYST_MCP_CONTACT_EMAIL. - 启动堆栈:
docker compose up --build- 检查MCP/neneneba API服务器:
curl http://localhost:8000/health
curl http://localhost:8000/providers- 启动单独的UI后端:
analyst-ui-backend serve- 启动单独的web UI:
cd apps/ui-web
npm install
npm run dev- 将MCP客户端连接到
http://localhost:8000/mcp并发送API密钥,或者打开UI并在那里配置MCP和LiteLLM连接。
推荐操作模式
此仓库现在针对以下内容进行了优化:
- 选择性文章和PDF存储
- 充分的arXiv显觉
- arXiv和OpenAlex的每日最新元数据同步
- 按需arXiv批量提取特定标识符
如果这是您的目标,请使用:
本地命令
本地安装:
python3 -m pip install -e '.[dev]'运行服务器:
analyst-mcp serve运行独立UI后端:
analyst-ui-backend serve运行独立web UI:
cd apps/ui-web
npm install
npm run dev运行一次同步过程:
analyst-mcp sync --sources arxiv,openalex搜索并有选择地收集匹配的文章:
analyst-mcp collect-articles "autonomous UAS OR embodied AI" --sources arxiv,openalex --date-from 2025-03-07 --limit 25运行每日扫描摘要:
analyst-mcp daily-scan "autonomous UAS" --sources arxiv,openalex --lookback-days 2 --limit 10进行文献综述:
analyst-mcp literature-review "embodied AI for UAS" --sources arxiv,openalex --limit 10 --collect估计引导能力:
analyst-mcp capacity-estimate 500000000000 64Bootstrap OpenAlex从公共快照工作:
analyst-mcp bootstrap-openalex --max-files 2索引arXiv存档清单并获取特定的源成员:
analyst-mcp bootstrap-arxiv --kind src --max-archives 10
analyst-mcp fetch-arxiv-members 2401.01234 2401.05678 --kind src选择性收集工作流程:
analyst-mcp collect-articles "autonomous UAS OR embodied AI" --sources arxiv,openalex --date-from 2025-03-07 --limit 25运行测试:
pytestMCP工具
search_literature(query, sources, date_from, date_to, limit)collect_articles(query, sources, date_from, date_to, limit, preferred_formats)get_paper(identifier, provider, include_graph)list_paper_artifacts(identifier, provider)download_articles(identifiers, preferred_formats)graph_lookup(seed_ids, limit)recommend_papers(query_or_ids, limit)rag_query(question, collections, limit)daily_scan_summary(query, sources, lookback_days, limit)literature_review(query, sources, date_from, date_to, limit, include_recommendations, collect, preferred_formats, rag_limit)ingest_status(provider)bootstrap_preflight(projected_bytes, projected_memory_gb)bootstrap_openalex_snapshot(max_files, updated_since)bootstrap_arxiv_inventory(kind, max_archives)fetch_arxiv_archive_members(identifiers, kind)
服务器API
GET /api/papersGET /api/papers/{canonical_id}GET /api/papers/{canonical_id}/artifactsGET /api/papers/{canonical_id}/artifactPOST /api/papers/{canonical_id}/download
MCP资源
time://todaypaper://{canonical_id}graph://paper/{canonical_id}
提供者说明
- arXiv:实现强制保守
1 request / 3 seconds限制器,旨在为大型同步提供批量/OAI风格的工作流。 - OpenAlex:请求包括联系电子邮件和保持在公共池假设范围内。
- 语义学者:请求在提供时使用API密钥,并保持保守的每秒默认值,直到知道部署层为止。
选择性存储工作流程
- 使用
search_literature或collect_articles带有日期窗口。 - 让服务仅保留搜索结果的规范化元数据。
- 仅下载所选点击的PDF/源文件。
- 使用
rag_query在存储的本地语料库上。
例子:
Give me all articles related to autonomous UAS or embodied AI in the last year.对于MCP客户端,相应的工具调用是:
{
"query": "autonomous UAS OR embodied AI",
"sources": ["arxiv", "openalex"],
"date_from": "2025-03-07",
"limit": 25,
"preferred_formats": ["pdf"]
}当前限制
- 向量检索路径在以下情况下使用Postgres/pgvector
ANALYST_MCP_POSTGRES_DSN已配置,并在无数据库测试/开发模式下回退到本地JSONL。 - OpenAlex批量摄入器目前的目标是
works,这足以构建论文、作者、主题和引用边缘,但尚未将单独的作者/来源/机构快照作为一级实体导入。 - arXiv批量支持目前对官方存档清单进行索引,并从tar文件中提取目标成员;它还没有维护一个完全规范化的历史元数据镜像。
- OCR被故意推迟;原生数字PDF和文本工件是此版本中支持的输入。
- 独立UI后端目前将聊天历史记录保存在浏览器会话中;没有实现持久的多会话聊天存储。
AWS注释
对于VPC内的AWS EC2部署:
- 保持
5432,6379,9000,以及9001私有的 - 暴露
8000仅适用于值得信赖的客户 - 暴露
7474和7687如果需要,仅访问您的管理员IP - 配置AWS凭据,以便arXiv请求者支付S3清单访问费用
在此处使用完整的runbook:
