Skip to main content
Glama

Europe PMC Literature Search MCP Server

by gqy20
IFLOW.md8.36 kB
# Article MCP - 学术文献搜索MCP服务器 ## 项目概述 Article MCP 是一个基于 FastMCP 框架开发的专业学术文献搜索工具,可与 Claude Desktop、Cherry Studio 等 AI 助手无缝集成。项目提供统一的 MCP (Model Context Protocol) 服务器接口,支持搜索 Europe PMC、arXiv 等多个学术数据库。 ### 核心特性 - 🔍 **多数据库搜索** - 支持 Europe PMC、arXiv、PubMed 等学术数据库 - ⚡ **高性能优化** - 异步并行处理,比传统方法快 6-50 倍 - 💾 **智能缓存** - 24小时本地缓存,避免重复API请求 - 🔄 **批量处理** - 支持最多20个DOI同时处理 - 🛡️ **容错机制** - 自动重试、并发控制、完整的异常处理 - 🌐 **多传输模式** - 支持 stdio、SSE、Streamable HTTP ## 项目结构 ``` article-mcp/ ├── main.py # 🚀 主入口文件,统一命令行接口 ├── pyproject.toml # 📦 uv 项目配置和依赖管理 ├── bin/article-mcp.js # 🔄 NPM 包装器,支持多平台部署 ├── src/ # 🔧 核心服务模块 │ ├── europe_pmc.py # Europe PMC API 服务(高性能优化版) │ ├── arxiv_search.py # arXiv 搜索服务 │ ├── pubmed_search.py # PubMed 搜索服务 │ ├── reference_service.py # 参考文献处理服务 │ ├── literature_relation_service.py # 文献关联分析服务 │ └── resource/ # 📊 数据资源(期刊信息等) ├── tool_modules/ # 🛠️ MCP 工具模块 │ ├── search_tools.py # 搜索工具(Europe PMC、arXiv) │ ├── article_detail_tools.py # 文献详情工具 │ ├── reference_tools.py # 参考文献工具 │ ├── relation_tools.py # 文献关联工具 │ └── quality_tools.py # 期刊质量评估工具 ├── json/ # ⚙️ MCP 配置文件模板 ├── docs/ # 📖 项目文档和使用指南 ├── tests/ # 🧪 测试文件 └── output/ # 📤 输出目录 ``` ## 快速开始 ### 环境要求 - Python ≥ 3.10 - uv (推荐) 或 pip ### 安装和启动 ```bash # 使用 uv (推荐) uv sync # 安装依赖 uv run main.py server # 启动服务器 # 使用 pip pip install fastmcp requests python-dateutil aiohttp python main.py server # 启动服务器 ``` ### 基本命令 ```bash # 启动 MCP 服务器(stdio 模式,推荐用于桌面AI客户端) python main.py server # 启动 SSE 服务器(用于Web应用) python main.py server --transport sse --host 0.0.0.0 --port 9000 # 启动 Streamable HTTP 服务器(用于API集成) python main.py server --transport streamable-http --host 0.0.0.0 --port 9000 # 运行测试 python main.py test # 显示项目信息 python main.py info ``` ## MCP 工具功能 ### 核心搜索工具 | 工具名称 | 功能描述 | 性能特点 | |---------|---------|----------| | `search_europe_pmc` | 搜索 Europe PMC 文献数据库 | 比传统方法快30-50%,支持缓存和并发 | | `search_arxiv_papers` | 搜索 arXiv 预印本文献 | 支持关键词、日期范围过滤 | | `get_article_details` | 获取文献详细信息 | 比传统方法快20-40%,支持缓存和重试 | ### 参考文献工具 | 工具名称 | 功能描述 | 性能特点 | |---------|---------|----------| | `get_references_by_doi` | 通过DOI获取参考文献 | 比传统方法快10-15倍,批量查询 | | `batch_enrich_references_by_dois` | 批量补全多个DOI参考文献 | 支持最多20个DOI同时处理 | ### 文献关联分析 | 工具名称 | 功能描述 | 数据来源 | |---------|---------|----------| | `get_similar_articles` | 获取相似文章推荐 | 基于PubMed相关文章算法 | | `get_citing_articles` | 获取引用该文献的文章 | PubMed + Europe PMC | | `get_literature_relations` | 一站式获取所有关联信息 | 综合所有数据源 | ### 期刊质量评估 | 工具名称 | 功能描述 | 数据来源 | |---------|---------|----------| | `get_journal_quality` | 获取期刊影响因子、分区等 | 本地缓存 + EasyScholar API | | `evaluate_articles_quality` | 批量评估文献期刊质量 | 智能缓存,批量处理 | ## 配置指南 ### Claude Desktop 配置 编辑 `claude_desktop_config.json`: ```json { "mcpServers": { "article-mcp": { "command": "uv", "args": [ "run", "--directory", "/path/to/article-mcp", "main.py", "server" ], "env": { "PYTHONUNBUFFERED": "1" } } } } ``` ### 环境变量 ```bash export PYTHONUNBUFFERED=1 # 禁用Python输出缓冲 export EASYSCHOLAR_SECRET_KEY=your_key # EasyScholar API密钥(可选) ``` ## 性能优化 ### 异步并行处理 - 使用 `asyncio` 和 `aiohttp` 实现并发请求 - 信号量控制并发数量(默认3个并发) - 批量处理优化,减少API调用次数 ### 智能缓存机制 - 24小时本地缓存,避免重复API请求 - 缓存键基于请求参数生成 - 支持缓存命中统计 ### 容错和重试 - 自动重试机制(最多3次,指数退避) - 网络异常处理 - API速率限制遵循 ## 部署方案 ### 本地部署 ```bash # 克隆项目 git clone https://github.com/gqy20/article-mcp.git cd article-mcp # 安装依赖 uv sync # 启动服务器 uv run main.py server ``` ### 魔搭MCP广场部署 支持一键部署到阿里云函数计算,提供: - ⚡ 毫秒级弹性启动 - 🔒 多租安全隔离 - 🌐 自动生成SSE服务地址 - 🛡️ 内置Bearer鉴权 ### NPM 包装器 ```bash # 使用npx直接运行 npx @gqy20/article-mcp-wrapper@latest server ``` ### UVX 安装(推荐) ```bash # 直接通过uvx安装并运行(无需克隆项目) uvx --from git+https://github.com/gqy20/article-mcp.git article-mcp server # 或从PyPI安装 pip install article-mcp article-mcp server ``` ## 开发规范 ### 代码风格 - 使用 Black 格式化(line-length: 88) - 类型注解(Python 3.10+) - 异步优先设计 ### 模块化架构 - **服务层** (`src/`): 核心业务逻辑 - **工具层** (`tool_modules/`): MCP工具封装 - **统一入口** (`main.py`): 命令行接口 ### 错误处理 - 完整的异常捕获和日志记录 - 用户友好的错误信息 - 详细的调试信息(开发模式) ## API 限制和优化 | API 服务 | 限制 | 优化策略 | |---------|------|----------| | Europe PMC | 1 request/second | 保守策略,自动延迟 | | Crossref | 50 requests/second | 建议提供邮箱获得更高限额 | | arXiv | 3 seconds/request | 官方限制,无法优化 | ## 测试和验证 ```bash # 运行功能测试 python main.py test # 性能对比测试 python test_performance_comparison.py # 手动测试示例 python -c " import asyncio from src.europe_pmc import create_europe_pmc_service service = create_europe_pmc_service() results = asyncio.run(service.search_europe_pmc_async('machine learning', max_results=5)) print(f'找到 {len(results)} 篇文献') " ``` ## 故障排除 | 问题 | 解决方案 | |------|----------| | `cannot import name 'hdrs' from 'aiohttp'` | 运行 `uv sync --upgrade` 更新依赖 | | MCP服务器启动失败 | 检查路径配置,确保使用绝对路径 | | API请求失败 | 提供邮箱地址,检查网络连接 | | 找不到uv命令 | 使用完整路径或pip安装方式 | ## 相关文档 - [快速开始指南](docs/发布部署指南.md) - [功能使用示例](docs/参考文献功能使用示例.md) - [期刊质量评估指南](docs/期刊质量评估功能使用指南.md) - [相似文章功能指南](docs/相似文章功能使用指南.md) - [arXiv搜索功能指南](docs/arXiv_搜索功能使用指南.md) - [Cherry Studio配置指南](docs/Cherry_Studio_配置指南.md) - [魔搭MCP广场部署总结](docs/魔搭MCP广场部署总结.md) ## 许可证 MIT License - 详见 [LICENSE](LICENSE) 文件 ## 贡献和支持 - 📧 提交 Issue: [GitHub Issues](https://github.com/gqy20/article-mcp/issues) - 📚 项目文档: [GitHub Wiki](https://github.com/gqy20/article-mcp/wiki) - 💬 讨论区: [GitHub Discussions](https://github.com/gqy20/article-mcp/discussions)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gqy20/article-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server