CHANGELOG.md•15.1 kB
# Changelog
All notable changes to the BioMCP project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.6.7] - 2025-08-13
### Fixed
- **MCP Resource Encoding** - Fixed character encoding error when loading resources on Windows (Issue #63):
- Added explicit UTF-8 encoding for reading `instructions.md` and `researcher.md` resource files
- Resolves "'charmap' codec can't decode byte 0x8f" error on Windows systems
- Ensures cross-platform compatibility for resource loading
### Changed
- **Documentation** - Clarified sequential thinking integration:
- Updated `researcher-persona-resource.md` to remove references to external `sequential-thinking` MCP server
- Clarified that the `think` tool is built into BioMCP (no external dependencies needed)
- Updated configuration examples to show only BioMCP server is required
## [0.6.6] - 2025-08-08
### Fixed
- **Windows Compatibility** - Fixed fcntl module import error on Windows (Issue #57):
- Added conditional import with try/except for fcntl module
- File locking now only applies on Unix systems
- Windows users get full functionality without file locking
- Refactored cache functions to reduce code complexity
### Changed
- **Documentation** - Updated Docker instructions in README (Issue #58):
- Added `docker build -t biomcp:latest .` command before `docker run`
- Clarified that biomcp:latest is a local build, not pulled from Docker Hub
## [0.6.5] - 2025-08-07
### Added
- **OpenFDA Integration** - Comprehensive FDA regulatory data access:
- **12 New MCP Tools** for adverse events, drug labels, device events, drug approvals, recalls, and shortages
- Each domain includes searcher and getter tools for flexible data retrieval
- Unified search support with `domain="fda_*"` parameters
- Enhanced CLI commands for all OpenFDA endpoints
- Smart caching and rate limiting for API efficiency
- Comprehensive error handling and data validation
### Changed
- Improved API key support across all OpenFDA tools
- Enhanced documentation for FDA data integration
## [0.6.4] - 2025-08-06
### Changed
- **Documentation Restructure** - Major documentation improvements:
- Simplified navigation structure for better user experience
- Fixed code block formatting and layout issues
- Removed unnecessary sections and redundant content
- Improved overall documentation readability and organization
- Enhanced mobile responsiveness
## [0.6.3] - 2025-08-05
### Added
- **NCI Clinical Trials Search API Integration** - Enhanced cancer trial search capabilities:
- Dual source support for trial search/getter tools (ClinicalTrials.gov + NCI)
- NCI API key handling via `NCI_API_KEY` environment variable or parameter
- Advanced trial filters: biomarkers, prior therapy, brain metastases acceptance
- **6 New MCP Tools** for NCI-specific searches:
- `nci_organization_searcher` / `nci_organization_getter`: Cancer centers, hospitals, research institutions
- `nci_intervention_searcher` / `nci_intervention_getter`: Drugs, devices, procedures, biologicals
- `nci_biomarker_searcher`: Trial eligibility biomarkers (reference genes, branches)
- `nci_disease_searcher`: NCI's controlled vocabulary of cancer conditions
- **OR Query Support**: All NCI endpoints support OR queries (e.g., "PD-L1 OR CD274")
- Real-time access to NCI's curated cancer trials database
- Automatic cBioPortal integration for gene searches
- Proper NCI parameter mapping (org_city, org_state_or_province, etc.)
- Comprehensive error handling for Elasticsearch limits
### Changed
- Enhanced unified search router to properly handle NCI domains
- Trial search/getter tools now accept `source` parameter ("clinicaltrials" or "nci")
- Improved domain-specific search logic for query+domain combinations
## [0.6.2] - 2025-08-05
Note: Initial NCI integration release - see v0.6.3 for the full implementation.
## [0.6.1] - 2025-08-03
### Fixed
- **Dependency Management** - Fixed alphagenome dependency to enable PyPI publishing
- Made alphagenome an optional dependency
- Resolved packaging conflicts for distribution
## [0.6.0] - 2025-08-02
### Added
- **Streamable HTTP Transport Protocol** - Modern MCP transport implementation:
- Single `/mcp` endpoint for all communication
- Session management with persistent session IDs
- Event resumption support for reliability
- On-demand streaming for long operations
- Configurable HTTP server modes (STDIO, HTTP, Worker)
- Better scalability for cloud deployments
- Full MCP specification compliance (2025-03-26)
### Changed
- Improved Cloudflare Worker integration
- Enhanced transport layer with comprehensive testing
- Updated deployment configurations for HTTP mode
## [0.5.0] - 2025-07-31
### Added
- **BioThings API Integration** - Real-time biomedical data access:
- **MyGene.info**: Gene annotations, summaries, aliases, and database links
- **MyChem.info**: Drug/chemical information, identifiers, mechanisms of action
- **MyDisease.info**: Disease definitions, synonyms, MONDO/DOID mappings
- **3 New MCP Tools**: `gene_getter`, `drug_getter`, `disease_getter`
- Automatic synonym expansion for enhanced trial searches
- Batch optimization for multiple gene lookups
- Live data fetching ensures current information
### Changed
- Enhanced unified search capabilities with BioThings data
- Expanded query language support for gene, drug, and disease queries
- Improved trial searches with automatic disease synonym expansion
## [0.4.7] - 2025-07-30
### Added
- **BioThings Integration** for real-time biomedical data access:
- **New MCP Tools** (3 tools added, total now 17):
- `gene_getter`: Query MyGene.info for gene information (symbols, names, summaries)
- `drug_getter`: Query MyChem.info for drug/chemical data (formulas, indications, mechanisms)
- `disease_getter`: Query MyDisease.info for disease information (definitions, synonyms, ontologies)
- **Unified Search/Fetch Enhancement**:
- Added `gene`, `drug`, `disease` as new searchable domains alongside article, trial, variant
- Integrated into unified search syntax: `search(domain="gene", keywords=["BRAF"])`
- Query language support: `gene:BRAF`, `drug:pembrolizumab`, `disease:melanoma`
- Full fetch support: `fetch(domain="drug", id="DB00945")`
- **Clinical Trial Enhancement**:
- Automatic disease synonym expansion for trial searches
- Real-time synonym lookup from MyDisease.info
- Example: searching for "GIST" automatically includes "gastrointestinal stromal tumor"
- **Smart Caching & Performance**:
- Batch operations for multiple gene/drug lookups
- Intelligent caching with TTL (gene: 24h, drug: 48h, disease: 72h)
- Rate limiting to respect API guidelines
### Changed
- Trial search now expands disease terms by default (disable with `expand_synonyms=False`)
- Enhanced error handling for BioThings API responses
- Improved network reliability with automatic retries
## [0.4.6] - 2025-07-09
### Added
- MkDocs documentation deployment
## [0.4.5] - 2025-07-09
### Added
- Unified search and fetch tools following OpenAI MCP guidelines
- Additional variant sources (TCGA/GDC, 1000 Genomes) enabled by default in fetch operations
- Additional article sources (bioRxiv, medRxiv, Europe PMC) enabled by default in search operations
### Changed
- Consolidated 10 separate MCP tools into 2 unified tools (search and fetch)
- Updated response formats to comply with OpenAI MCP specifications
### Fixed
- OpenAI MCP compliance issues to enable integration
## [0.4.4] - 2025-07-08
### Added
- **Performance Optimizations**:
- Connection pooling with event loop lifecycle management (30% latency reduction)
- Parallel test execution with pytest-xdist (5x faster test runs)
- Request batching for cBioPortal API calls (80% fewer API calls)
- Smart caching with LRU eviction and fast hash keys (10x faster cache operations)
- Major performance improvements achieving ~3x faster test execution (120s → 42s)
### Fixed
- Non-critical ASGI errors suppressed
- Performance issues in article_searcher
## [0.4.3] - 2025-07-08
### Added
- Complete HTTP centralization and improved code quality
- Comprehensive constants module for better maintainability
- Domain-specific handlers for result formatting
- Parameter parser for robust input validation
- Custom exception hierarchy for better error handling
### Changed
- Refactored domain handlers to use static methods for better performance
- Enhanced type safety throughout the codebase
- Refactored complex functions to meet code quality standards
### Fixed
- Type errors in router.py for full mypy compliance
- Complex functions exceeding cyclomatic complexity thresholds
## [0.4.2] - 2025-07-07
### Added
- Europe PMC DOI support for article fetching
- Pagination support for Europe PMC searches
- OR logic support for variant notation searches (e.g., R173 vs Arg173 vs p.R173)
### Changed
- Enhanced variant notation search capabilities
## [0.4.1] - 2025-07-03
### Added
- AlphaGenome as an optional dependency to predict variant effects on gene regulation
- Per-request API key support for AlphaGenome integration
- AI predictions to complement existing database lookups
### Security
- Comprehensive sanitization in Cloudflare Worker to prevent sensitive data logging
- Secure usage in hosted environments where users provide their own keys
## [0.4.0] - 2025-06-27
### Added
- **cBioPortal Integration** for article searches:
- Automatic gene-level mutation summaries when searching with gene parameters
- Mutation-specific search capabilities (e.g., BRAF V600E, SRSF2 F57\*)
- Dynamic cancer type resolution using cBioPortal API
- Smart caching and rate limiting for optimal performance
## [0.3.3] - 2025-06-20
### Changed
- Release workflow updates
## [0.3.2] - 2025-06-20
### Changed
- Release workflow updates
## [0.3.1] - 2025-06-20
### Fixed
- Build and release process improvements
## [0.3.0] - 2025-06-20
### Added
- Expanded search capabilities
- Integration tests for MCP server functionality
- Utility modules for gene validation, mutation filtering, and request caching
## [0.2.1] - 2025-06-19
### Added
- Remote MCP policies
## [0.2.0] - 2025-06-17
### Added
- Sequential thinking tool for systematic problem-solving
- Session-based thinking to replace global state
- Extracted router handlers to reduce complexity
### Changed
- Replaced global state in thinking module with session management
### Removed
- Global state from sequential thinking module
### Fixed
- Race conditions in sequential thinking with concurrent usage
## [0.1.11] - 2025-06-12
### Added
- Advanced eligibility criteria filters to clinical trial search
## [0.1.10] - 2025-05-21
### Added
- OAuth support on the Cloudflare worker via Stytch
## [0.1.9] - 2025-05-17
### Fixed
- Refactor: Bump minimum Python version to 3.10
## [0.1.8] - 2025-05-14
### Fixed
- Article searcher fixes
## [0.1.7] - 2025-05-07
### Added
- Remote OAuth support
## [0.1.6] - 2025-05-05
### Added
- Updates to handle cursor integration
## [0.1.5] - 2025-05-01
### Added
- Updates to smithery yaml to account for object types needed for remote calls
- Documentation and Lzyank updates
## [0.1.3] - 2025-05-01
### Added
- Health check functionality to assist with API call issues
- System resources and network & environment information gathering
- Remote MCP capability via Cloudflare using SSE
## [0.1.2] - 2025-04-18
### Added
- Researcher persona and BioMCP v0.1.2 release
- Deep Researcher Persona blog post
- Researcher persona video demo
## [0.1.1] - 2025-04-14
### Added
- Claude Desktop and MCP Inspector tutorials
- Improved Claude Desktop Tutorial for BioMCP
- Troubleshooting guide and blog post
### Fixed
- Log tool names as comma separated string
- Server hanging issues
- Error responses in variant count check
## [0.1.0] - 2025-04-08
### Added
- Initial release of BioMCP
- PubMed/PubTator3 article search integration
- ClinicalTrials.gov trial search integration
- MyVariant.info variant search integration
- CLI interface for direct usage
- MCP server for AI assistant integration
- Cloudflare Worker support for remote deployment
- Comprehensive test suite with pytest-bdd
- GenomOncology introduction
- Blog post on AI-assisted clinical trial search
- MacOS troubleshooting guide
### Security
- API keys properly externalized
- Input validation using Pydantic models
- Safe string handling in all API calls
[Unreleased]: https://github.com/genomoncology/biomcp/compare/v0.6.6...HEAD
[0.6.6]: https://github.com/genomoncology/biomcp/releases/tag/v0.6.6
[0.6.5]: https://github.com/genomoncology/biomcp/releases/tag/v0.6.5
[0.6.4]: https://github.com/genomoncology/biomcp/releases/tag/v0.6.4
[0.6.3]: https://github.com/genomoncology/biomcp/releases/tag/v0.6.3
[0.6.2]: https://github.com/genomoncology/biomcp/releases/tag/v0.6.2
[0.6.1]: https://github.com/genomoncology/biomcp/releases/tag/v0.6.1
[0.6.0]: https://github.com/genomoncology/biomcp/releases/tag/v0.6.0
[0.5.0]: https://github.com/genomoncology/biomcp/releases/tag/v0.5.0
[0.4.7]: https://github.com/genomoncology/biomcp/releases/tag/v0.4.7
[0.4.6]: https://github.com/genomoncology/biomcp/releases/tag/v0.4.6
[0.4.5]: https://github.com/genomoncology/biomcp/releases/tag/v0.4.5
[0.4.4]: https://github.com/genomoncology/biomcp/releases/tag/v0.4.4
[0.4.3]: https://github.com/genomoncology/biomcp/releases/tag/v0.4.3
[0.4.2]: https://github.com/genomoncology/biomcp/releases/tag/v0.4.2
[0.4.1]: https://github.com/genomoncology/biomcp/releases/tag/v0.4.1
[0.4.0]: https://github.com/genomoncology/biomcp/releases/tag/v0.4.0
[0.3.3]: https://github.com/genomoncology/biomcp/releases/tag/v0.3.3
[0.3.2]: https://github.com/genomoncology/biomcp/releases/tag/v0.3.2
[0.3.1]: https://github.com/genomoncology/biomcp/releases/tag/v0.3.1
[0.3.0]: https://github.com/genomoncology/biomcp/releases/tag/v0.3.0
[0.2.1]: https://github.com/genomoncology/biomcp/releases/tag/v0.2.1
[0.2.0]: https://github.com/genomoncology/biomcp/releases/tag/v0.2.0
[0.1.11]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.11
[0.1.10]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.10
[0.1.9]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.9
[0.1.8]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.8
[0.1.7]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.7
[0.1.6]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.6
[0.1.5]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.5
[0.1.3]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.3
[0.1.2]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.2
[0.1.1]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.1
[0.1.0]: https://github.com/genomoncology/biomcp/releases/tag/v0.1.0