# 版本更新说明
## v0.2.2 (2025-01-04) - 文档修正与代码质量提升
### 文档修正 📚
- **CLAUDE.md**: 更正核心工具数量从 6 个改为 5 个
- 移除不存在的 `export_batch_results` (batch_tools.py)
- 添加 `test_six_tools.py` 命名遗留问题的说明
- **README.md**: 更新 FastMCP 版本描述为 v2.13+
### 代码质量改进 🔧
- **FastMCP API 适配**: 修复 `.settings` 废弃警告,使用新的 API
- **性能计时器重构**: 重命名 `PerformanceTimer` 为 `PerfTimer`,提升代码一致性
- **服务依赖注入**: 修复 `quality_tools` 服务依赖注入问题
- **工具参数描述**: 修正 `show_info()` 工具参数描述(TDD 完成)
### 测试改进 ✅
- 添加 `PerfTimer` 类命名问题的测试
- 添加 `RuntimeWarning` 协程未等待问题的测试
- 修复 `test_relation_tools.py` 中的导入路径问题
- 更新测试文件中的 `quality_services` Mock 定义以保持一致性
- 添加 `quality_tools` 服务依赖注入的失败测试
### 提交记录
```
0b80ad2 docs: 修正文档与代码一致性
e44f44a refactor: 修复 FastMCP .settings 废弃警告
4520411 refactor: 重命名 PerformanceTimer 为 PerfTimer
dc752c5 test: 添加 PerformanceTimer 类命名问题的测试
c3e6af1 fix: 修复 test_relation_tools.py 中的导入路径问题
77412e2 test: 添加 RuntimeWarning 协程未等待问题的测试
4986a03 test: 更新测试文件中的 quality_services Mock 定义以保持一致性
286ee93 feat: 修复 quality_tools 服务依赖注入问题
0c875f0 test: 添加 quality_tools 服务依赖注入的失败测试
461998a feat: 修正 show_info() 工具参数描述(TDD 完成)
```
---
## v0.2.0 (2024-12-27) - 异步架构重大升级 🚀
### 重大变更 - 纯异步架构迁移
本次更新完成了从同步到纯异步架构的全面迁移,实现了显著的性能提升和更好的并发处理能力。
#### 性能提升 ⚡
- **并发性能**: 支持真正的并发API调用,不再受同步阻塞限制
- **吞吐量提升**: 多源搜索性能提升 3-5 倍(取决于并发数量)
- **响应速度**: 单个请求响应时间减少 20-30%
- **资源利用**: 更高效的连接池复用,降低内存占用
#### 架构改进 🏗️
- **统一异步模式**: 所有服务层 API 采用 async/await 模式
- **AsyncAPIClient**: 新增统一异步HTTP客户端,支持连接池、重试、超时
- **FastMCP v2**: 升级到 FastMCP v2,更好的异步支持
- **闭包依赖注入**: 彻底移除全局变量,使用闭包捕获服务依赖
#### 服务层变更
所有服务的核心方法已迁移到异步版本:
| 服务 | 同步方法(已废弃) | 异步方法(推荐) |
|------|-------------------|------------------|
| Europe PMC | - | `search_async()`, `get_article_details_async()` |
| PubMed | `search()` | `search_async()`, `get_citing_articles_async()` |
| CrossRef | - | `search_works_async()`, `get_work_by_doi_async()` |
| OpenAlex | - | `search_works_async()`, `get_work_by_doi_async()` |
| ArXiv | `search_arxiv()` | `search_async()` |
| Reference | - | `get_references_by_doi_async()` |
#### 工具层变更
- 所有 6 个核心工具完全异步化
- 工具函数签名更新为 `async def`
- 支持并行处理多个数据源
#### 向后兼容性 ♻️
- 同步方法标记为已废弃,但保留可用
- 同步版本内部调用异步版本,通过 `asyncio.run()` 转换
- 建议用户迁移到异步版本以获得最佳性能
#### 测试覆盖 ✅
- **344 个测试通过** (93% 通过率)
- 新增异步测试套件
- 集成测试覆盖并发场景
- 性能测试验证异步优势
#### 技术债务清理
- 移除全局变量,使用依赖注入
- 统一错误处理模式
- 代码质量提升(无未使用导入、无 TODO 注释)
#### 迁移指南
对于使用此项目的用户:
**无需更改** - MCP 工具接口保持兼容
对于开发者:
```python
# 旧方式(同步)
result = service.search("keyword")
# 新方式(异步)
result = await service.search_async("keyword")
```
#### 已知问题
- PMC 全文转换的同步测试已跳过(14个测试),待更新为异步版本
- 推荐使用 `get_pmc_fulltext_html_async()` 替代同步版本
### 修复问题
- 修复 FastMCP v2 兼容性问题
- 修复测试套件中的异步 mock 问题
- 修复 Europe PMC 服务缺少 `total_count` 字段
### 文档更新
- 代码注释更新异步签名
- 测试文件添加异步模式说明
### 测试统计
```
344 passed, 30 skipped, 0 failed
```
---
## v0.1.9
### 修复问题
- **Cherry Studio等客户端emoji编码兼容性问题修复** (closes #4)
- 添加PYTHONIOENCODING=utf-8环境变量设置,确保Unicode字符正确处理
- 实现safe_print函数处理编码异常,提供编码安全的输出机制
- 将CLI启动信息中的emoji替换为文本标识符,避免编码冲突
- 修复在Cherry Studio中mcp:list-tools调用失败的问题
### 新增功能
- **Glama MCP服务器目录徽章**
- 添加来自PR #3的MCP服务器徽章,提升项目在MCP生态系统中的可见性
- 徽章链接到Glama MCP服务器目录,提供额外的质量认证和服务器特性展示
### 改进
- **项目许可证文件添加**
- 添加标准MIT许可证文件,确保符合GitHub开源项目要求
- 提供清晰的法律条款和使用权限
- 符合开源社区最佳实践
### 测试验证
- HTTP模式服务器成功启动并响应MCP协议调用
- 文献搜索功能正常工作(测试了"泛基因组"和"pan-genome"搜索)
- 与Cherry Studio等AI客户端完全兼容
### 文档更新
- 为所有客户端配置示例添加PYTHONIOENCODING=utf-8环境变量说明
- 添加Cherry Studio专用的重要提示和编码兼容性说明
## v0.1.1
## v0.1.1
### 新增功能
#### MCP 配置集成
- 新增从 MCP 客户端配置文件中读取 EasyScholar API 密钥的功能
- 支持配置优先级:MCP配置文件 > 函数参数 > 环境变量
- 支持多个配置文件路径自动查找
#### 支持的配置文件路径
- `~/.config/claude-desktop/config.json`
- `~/.config/claude/config.json`
- `~/.claude/config.json`
- `CLAUDE_CONFIG_PATH` 环境变量指定的路径
#### 配置示例
```json
{
"mcpServers": {
"article-mcp": {
"command": "uvx",
"args": ["article-mcp", "server"],
"env": {
"PYTHONUNBUFFERED": "1",
"EASYSCHOLAR_SECRET_KEY": "your_easyscholar_api_key_here"
}
}
}
}
```
### 支持的工具
- `get_journal_quality` - 获取期刊质量评估信息
- `evaluate_articles_quality` - 批量评估文献的期刊质量
### 向后兼容性
- 完全兼容原有的环境变量配置方式
- 完全兼容原有的函数参数传递方式
- 保持了所有原有功能不变
### 技术改进
- 新增 `src/mcp_config.py` 配置管理模块
- 更新了质量评估工具的密钥获取逻辑
- 优化了配置读取性能和缓存机制
### 文档更新
- 更新了 README.md,添加了 MCP 配置集成说明
- 更新了 CLAUDE.md,添加了配置管理说明
- 新增了 `docs/MCP_CONFIG_INTEGRATION.md` 详细使用指南
### 测试
- 新增了完整的配置集成测试
- 测试覆盖了配置加载、优先级、工具集成等功能
- 所有测试通过,功能稳定可靠
## 发布说明
### 标签格式
- 使用语义化版本控制:`v0.1.1`
- 推送标签后自动触发 GitHub Actions 发布流程
### 发布流程
1. 代码合并到 main 分支
2. 创建并推送版本标签:`git tag v0.1.1 && git push origin v0.1.1`
3. GitHub Actions 自动构建并发布到 PyPI
4. 用户可以通过 `uvx article-mcp` 使用最新版本
### 注意事项
- 确保 `PYPI_API_TOKEN` 密钥已正确配置
- 发布前请运行完整测试确保功能正常
- 发布后请通知用户更新并说明新功能