Tags: Matvey-Kuk/biomcp
Tags
genomoncology#63 (genomoncology#64) Co-authored-by: Justin Yeakley <justin@genomoncology.com>
Fix Windows compatibility and update Docker documentation (genomoncol… …ogy#59) * Fix Windows compatibility and update Docker documentation - Fix fcntl import error on Windows (Issue genomoncology#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 complexity - Add Docker build instructions to README (Issue genomoncology#58) - Added `docker build` command before `docker run` - Clarifies that biomcp:latest is a local build, not from Docker Hub * Fix Windows compatibility and update Docker documentation - Fix fcntl import error on Windows (Issue genomoncology#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 complexity - Add Docker build instructions to README (Issue genomoncology#58) - Added `docker build` command before `docker run` - Clarifies that biomcp:latest is a local build, not from Docker Hub --------- Co-authored-by: Justin Yeakley <justin@genomoncology.com>
Add comprehensive OpenFDA integration with 12 new tools (genomoncolog… …y#56) * feat: Add comprehensive OpenFDA integration with 12 new tools Implements full OpenFDA API integration providing access to FDA regulatory data for drug safety, device events, approvals, recalls, and shortages. New Modules: - adverse_events.py: Search/retrieve drug adverse event reports (FAERS) - device_events.py: Search/retrieve device malfunction reports (MAUDE) - drug_labels.py: Search/retrieve FDA drug labels (SPL) - drug_approvals.py: Search/retrieve drug approval records (Drugs@FDA) - drug_recalls.py: Search/retrieve drug recall notices (Enforcement) - drug_shortages.py: Search/retrieve drug shortage data with 24hr caching Key Features: - 12 new MCP tools (6 searchers + 6 getters) for AI agent integration - Flexible API key support via parameter, env var (OPENFDA_API_KEY), or none - Smart device search with wildcard matching (no hardcoding) - Robust handling of polymorphic FDA fields (string/list types) - Genomics device filtering for precision medicine focus - Rate limiting: 40 req/min (no key) or 240 req/min (with key) CLI Enhancements: - New 'biomcp openfda' command with 6 subcommands - All commands support --api-key parameter - Pagination support with --page and --limit Documentation: - Added openfda-prompts.md with 30+ example prompts - Updated MCP tools reference (now 35 tools total) - Comprehensive API key usage examples - Integration patterns for complex safety analyses Testing & Quality: - All quality checks passing (ruff, mypy, pre-commit) - MCP integration tests updated for new tool count - API key priority handling verified - Endpoint registry updated with FDA endpoints This integration enables comprehensive FDA regulatory data access for drug safety assessment, post-market surveillance, and treatment planning in precision oncology workflows. * feat: Add comprehensive OpenFDA integration with 12 new tools Implements full OpenFDA API integration providing access to FDA regulatory data for drug safety, device events, approvals, recalls, and shortages. New Modules: - adverse_events.py: Search/retrieve drug adverse event reports (FAERS) - device_events.py: Search/retrieve device malfunction reports (MAUDE) - drug_labels.py: Search/retrieve FDA drug labels (SPL) - drug_approvals.py: Search/retrieve drug approval records (Drugs@FDA) - drug_recalls.py: Search/retrieve drug recall notices (Enforcement) - drug_shortages.py: Search/retrieve drug shortage data with 24hr caching Key Features: - 12 new MCP tools (6 searchers + 6 getters) for AI agent integration - Flexible API key support via parameter, env var (OPENFDA_API_KEY), or none - Smart device search with wildcard matching (no hardcoding) - Robust handling of polymorphic FDA fields (string/list types) - Genomics device filtering for precision medicine focus - Rate limiting: 40 req/min (no key) or 240 req/min (with key) CLI Enhancements: - New 'biomcp openfda' command with 6 subcommands - All commands support --api-key parameter - Pagination support with --page and --limit Documentation: - Added openfda-prompts.md with 30+ example prompts - Updated MCP tools reference (now 35 tools total) - Comprehensive API key usage examples - Integration patterns for complex safety analyses Testing & Quality: - All quality checks passing (ruff, mypy, pre-commit) - MCP integration tests updated for new tool count - API key priority handling verified - Endpoint registry updated with FDA endpoints This integration enables comprehensive FDA regulatory data access for drug safety assessment, post-market surveillance, and treatment planning in precision oncology workflows. * feat: Add comprehensive OpenFDA integration with 12 new tools Implements full OpenFDA API integration providing access to FDA regulatory data for drug safety, device events, approvals, recalls, and shortages. New Modules: - adverse_events.py: Search/retrieve drug adverse event reports (FAERS) - device_events.py: Search/retrieve device malfunction reports (MAUDE) - drug_labels.py: Search/retrieve FDA drug labels (SPL) - drug_approvals.py: Search/retrieve drug approval records (Drugs@FDA) - drug_recalls.py: Search/retrieve drug recall notices (Enforcement) - drug_shortages.py: Search/retrieve drug shortage data with 24hr caching Key Features: - 12 new MCP tools (6 searchers + 6 getters) for AI agent integration - Flexible API key support via parameter, env var (OPENFDA_API_KEY), or none - Smart device search with wildcard matching (no hardcoding) - Robust handling of polymorphic FDA fields (string/list types) - Genomics device filtering for precision medicine focus - Rate limiting: 40 req/min (no key) or 240 req/min (with key) CLI Enhancements: - New 'biomcp openfda' command with 6 subcommands - All commands support --api-key parameter - Pagination support with --page and --limit Documentation: - Added openfda-prompts.md with 30+ example prompts - Updated MCP tools reference (now 35 tools total) - Comprehensive API key usage examples - Integration patterns for complex safety analyses Testing & Quality: - All quality checks passing (ruff, mypy, pre-commit) - MCP integration tests updated for new tool count - API key priority handling verified - Endpoint registry updated with FDA endpoints This integration enables comprehensive FDA regulatory data access for drug safety assessment, post-market surveillance, and treatment planning in precision oncology workflows. * feat: Add comprehensive OpenFDA integration with 12 new tools Implements full OpenFDA API integration providing access to FDA regulatory data for drug safety, device events, approvals, recalls, and shortages. New Modules: - adverse_events.py: Search/retrieve drug adverse event reports (FAERS) - device_events.py: Search/retrieve device malfunction reports (MAUDE) - drug_labels.py: Search/retrieve FDA drug labels (SPL) - drug_approvals.py: Search/retrieve drug approval records (Drugs@FDA) - drug_recalls.py: Search/retrieve drug recall notices (Enforcement) - drug_shortages.py: Search/retrieve drug shortage data with 24hr caching Key Features: - 12 new MCP tools (6 searchers + 6 getters) for AI agent integration - Flexible API key support via parameter, env var (OPENFDA_API_KEY), or none - Smart device search with wildcard matching (no hardcoding) - Robust handling of polymorphic FDA fields (string/list types) - Genomics device filtering for precision medicine focus - Rate limiting: 40 req/min (no key) or 240 req/min (with key) CLI Enhancements: - New 'biomcp openfda' command with 6 subcommands - All commands support --api-key parameter - Pagination support with --page and --limit Documentation: - Added openfda-prompts.md with 30+ example prompts - Updated MCP tools reference (now 35 tools total) - Comprehensive API key usage examples - Integration patterns for complex safety analyses Testing & Quality: - All quality checks passing (ruff, mypy, pre-commit) - MCP integration tests updated for new tool count - API key priority handling verified - Endpoint registry updated with FDA endpoints This integration enables comprehensive FDA regulatory data access for drug safety assessment, post-market surveillance, and treatment planning in precision oncology workflows. * feat: Add comprehensive OpenFDA integration with 12 new tools Implements full OpenFDA API integration providing access to FDA regulatory data for drug safety, device events, approvals, recalls, and shortages. New Modules: - adverse_events.py: Search/retrieve drug adverse event reports (FAERS) - device_events.py: Search/retrieve device malfunction reports (MAUDE) - drug_labels.py: Search/retrieve FDA drug labels (SPL) - drug_approvals.py: Search/retrieve drug approval records (Drugs@FDA) - drug_recalls.py: Search/retrieve drug recall notices (Enforcement) - drug_shortages.py: Search/retrieve drug shortage data with 24hr caching Key Features: - 12 new MCP tools (6 searchers + 6 getters) for AI agent integration - Flexible API key support via parameter, env var (OPENFDA_API_KEY), or none - Smart device search with wildcard matching (no hardcoding) - Robust handling of polymorphic FDA fields (string/list types) - Genomics device filtering for precision medicine focus - Rate limiting: 40 req/min (no key) or 240 req/min (with key) CLI Enhancements: - New 'biomcp openfda' command with 6 subcommands - All commands support --api-key parameter - Pagination support with --page and --limit Documentation: - Added openfda-prompts.md with 30+ example prompts - Updated MCP tools reference (now 35 tools total) - Comprehensive API key usage examples - Integration patterns for complex safety analyses Testing & Quality: - All quality checks passing (ruff, mypy, pre-commit) - MCP integration tests updated for new tool count - API key priority handling verified - Endpoint registry updated with FDA endpoints This integration enables comprehensive FDA regulatory data access for drug safety assessment, post-market surveillance, and treatment planning in precision oncology workflows. * feat: Add comprehensive OpenFDA integration with 12 new tools Implements full OpenFDA API integration providing access to FDA regulatory data for drug safety, device events, approvals, recalls, and shortages. New Modules: - adverse_events.py: Search/retrieve drug adverse event reports (FAERS) - device_events.py: Search/retrieve device malfunction reports (MAUDE) - drug_labels.py: Search/retrieve FDA drug labels (SPL) - drug_approvals.py: Search/retrieve drug approval records (Drugs@FDA) - drug_recalls.py: Search/retrieve drug recall notices (Enforcement) - drug_shortages.py: Search/retrieve drug shortage data with 24hr caching Key Features: - 12 new MCP tools (6 searchers + 6 getters) for AI agent integration - Flexible API key support via parameter, env var (OPENFDA_API_KEY), or none - Smart device search with wildcard matching (no hardcoding) - Robust handling of polymorphic FDA fields (string/list types) - Genomics device filtering for precision medicine focus - Rate limiting: 40 req/min (no key) or 240 req/min (with key) CLI Enhancements: - New 'biomcp openfda' command with 6 subcommands - All commands support --api-key parameter - Pagination support with --page and --limit Documentation: - Added openfda-prompts.md with 30+ example prompts - Updated MCP tools reference (now 35 tools total) - Comprehensive API key usage examples - Integration patterns for complex safety analyses Testing & Quality: - All quality checks passing (ruff, mypy, pre-commit) - MCP integration tests updated for new tool count - API key priority handling verified - Endpoint registry updated with FDA endpoints This integration enables comprehensive FDA regulatory data access for drug safety assessment, post-market surveillance, and treatment planning in precision oncology workflows. --------- Co-authored-by: Justin Yeakley <justin@genomoncology.com>
Documentation Restructure (genomoncology#55) * ## Overview Implemented comprehensive documentation restructuring plan to create a cleaner, two-level navigation hierarchy organized around user journeys rather than technical categories. ## New Structure - **Getting Started**: Quick setup guides for CLI, Claude Desktop, and API keys - **Concepts**: Core BioMCP philosophy including Deep Researcher persona and Think tool - **User Guides**: Consolidated references for CLI, MCP tools, and IDE integration - **How-to Guides**: Task-oriented guides for common workflows - **Backend Services Reference**: Technical details for all integrated APIs - **Developer Guides**: Deployment, testing, and contribution guidelines ## Major Changes ### Content Consolidation - Merged 4 separate CLI docs (articles, health, trials, variants) into single comprehensive guide - Consolidated 3 policy documents into unified policies.md - Combined multiple API references into organized backend services section - Integrated scattered tutorials into relevant guides ### New Documentation - Created comprehensive guides by merging related content: - `02-the-deep-researcher-persona.md`: Philosophy + methodology + implementation - `03-sequential-thinking-with-the-think-tool.md`: Extracted critical Think tool usage - `01-command-line-interface.md`: All CLI commands in one reference - `02-mcp-tools-reference.md`: Complete MCP tools documentation - `06-search-nci-organizations-and-interventions.md`: New NCI features guide ### Content Migration - Moved blog post "What is BioMCP?" to concepts section - Integrated AlphaGenome setup into backend reference + how-to guide - Moved Python SDK and Cursor IDE docs into IDE integration guide - Preserved specialized tutorials in "Examples and Prompts" section ### Navigation Improvements - Shallow two-level hierarchy for easier navigation - Logical grouping by user intent and workflow - Clear progression from beginner to advanced topics - Removed deep nesting and redundant categories ## Technical Details - Fixed all broken internal links after reorganization - Updated image paths for moved content - Created Python scripts for automated cleanup and link fixing - Ensured clean documentation build with no warnings ## Files Changed - Modified: mkdocs.yml (complete navigation restructure) - Modified: docs/index.md (updated links) - Created: 15+ new consolidated guide files - Created: cleanup and migration scripts - Moved/Merged: 30+ documentation files This restructuring significantly improves documentation discoverability and provides a better user experience while maintaining all existing content. * ⏺ Restructure and improve documentation for production readiness - Simplified navigation structure from 10 to 5 top-level sections - Removed expandable/collapsible navigation in favor of clean sections display - Fixed code block horizontal scrolling issues across all documentation - Converted grid card layouts to stacked format for better readability - Removed all emojis from headers for professional appearance - Made documentation more concise, especially the overview page - Fixed broken anchor links and embedded ASCII diagrams inline - Removed unnecessary sections (migrations, breaking changes, feedback) - Synced outdated docs changelog with main CHANGELOG.md (v0.4.0 → v0.6.2) - Added CSS improvements for code block wrapping and responsive design - Improved overall user experience with cleaner, flatter navigation The documentation now provides optimal onboarding, clear navigation paths, and professional presentation suitable for production deployment. * ⏺ Restructure and improve documentation for production readiness - Simplified navigation structure from 10 to 5 top-level sections - Removed expandable/collapsible navigation in favor of clean sections display - Fixed code block horizontal scrolling issues across all documentation - Converted grid card layouts to stacked format for better readability - Removed all emojis from headers for professional appearance - Made documentation more concise, especially the overview page - Fixed broken anchor links and embedded ASCII diagrams inline - Removed unnecessary sections (migrations, breaking changes, feedback) - Synced outdated docs changelog with main CHANGELOG.md (v0.4.0 → v0.6.2) - Added CSS improvements for code block wrapping and responsive design - Improved overall user experience with cleaner, flatter navigation The documentation now provides optimal onboarding, clear navigation paths, and professional presentation suitable for production deployment. * ⏺ Restructure and improve documentation for production readiness - Simplified navigation structure from 10 to 5 top-level sections - Removed expandable/collapsible navigation in favor of clean sections display - Fixed code block horizontal scrolling issues across all documentation - Converted grid card layouts to stacked format for better readability - Removed all emojis from headers for professional appearance - Made documentation more concise, especially the overview page - Fixed broken anchor links and embedded ASCII diagrams inline - Removed unnecessary sections (migrations, breaking changes, feedback) - Synced outdated docs changelog with main CHANGELOG.md (v0.4.0 → v0.6.2) - Added CSS improvements for code block wrapping and responsive design - Improved overall user experience with cleaner, flatter navigation The documentation now provides optimal onboarding, clear navigation paths, and professional presentation suitable for production deployment. * ⏺ Restructure and improve documentation for production readiness - Simplified navigation structure from 10 to 5 top-level sections - Removed expandable/collapsible navigation in favor of clean sections display - Fixed code block horizontal scrolling issues across all documentation - Converted grid card layouts to stacked format for better readability - Removed all emojis from headers for professional appearance - Made documentation more concise, especially the overview page - Fixed broken anchor links and embedded ASCII diagrams inline - Removed unnecessary sections (migrations, breaking changes, feedback) - Synced outdated docs changelog with main CHANGELOG.md (v0.4.0 → v0.6.2) - Added CSS improvements for code block wrapping and responsive design - Improved overall user experience with cleaner, flatter navigation The documentation now provides optimal onboarding, clear navigation paths, and professional presentation suitable for production deployment. --------- Co-authored-by: Justin Yeakley <justin@genomoncology.com>
hot fix for tests (genomoncology#54) * hot fix for tests * hot fix for tests --------- Co-authored-by: Justin Yeakley <justin@genomoncology.com>
Clinicaltrialsapi (genomoncology#53) * Add NCI Clinical Trials Search API integration Integrates the National Cancer Institute's Clinical Trials Search API to provide enhanced cancer trial search capabilities alongside existing ClinicalTrials.gov support. ## New Features ### Core NCI Integration - Added dual source support for trial search/getter (ClinicalTrials.gov + NCI) - Implemented NCI API key handling via environment variable or parameter - Added advanced trial filters: biomarkers, prior therapy, brain metastases ### New NCI-Specific Tools (6 MCP tools + CLI commands) - **Organizations**: Search/get cancer centers, hospitals, research institutions - **Interventions**: Search/get drugs, devices, procedures, biologicals - **Biomarkers**: Search trial eligibility biomarkers (reference genes, branches) - **Diseases**: Search NCI's controlled vocabulary of cancer conditions ### API Features - Real-time access to NCI's curated cancer trials database - Support for all NCI API parameters and filters - Automatic cBioPortal integration for gene searches - Proper parameter mapping (org_city, org_state_or_province, etc.) - Comprehensive error handling for Elasticsearch limits ### Documentation - Added NCI tutorial with example prompts: `docs/tutorials/nci-prompts.md` - Created API parameter reference: `docs/api-changes/nci-api-parameters.md` - Updated CLAUDE.md with NCI usage instructions and parameter notes ### CLI Integration ```bash # New commands biomcp organization search "MD Anderson" --api-key YOUR_KEY biomcp intervention search pembrolizumab --type Drug --api-key YOUR_KEY biomcp biomarker search --name "PD-L1" --api-key YOUR_KEY biomcp disease search melanoma --source nci --api-key YOUR_KEY # Enhanced trial commands biomcp trial search --condition melanoma --source nci --api-key YOUR_KEY biomcp trial get NCT04280705 --source nci --api-key YOUR_KEY Requires NCI API key from: https://clinicaltrialsapi.cancer.gov/ * Add NCI Clinical Trials Search API integration Integrates the National Cancer Institute's Clinical Trials Search API to provide enhanced cancer trial search capabilities alongside existing ClinicalTrials.gov support. ## New Features ### Core NCI Integration - Added dual source support for trial search/getter (ClinicalTrials.gov + NCI) - Implemented NCI API key handling via environment variable or parameter - Added advanced trial filters: biomarkers, prior therapy, brain metastases ### New NCI-Specific Tools (6 MCP tools + CLI commands) - **Organizations**: Search/get cancer centers, hospitals, research institutions - **Interventions**: Search/get drugs, devices, procedures, biologicals - **Biomarkers**: Search trial eligibility biomarkers (reference genes, branches) - **Diseases**: Search NCI's controlled vocabulary of cancer conditions ### API Features - Real-time access to NCI's curated cancer trials database - Support for all NCI API parameters and filters - Automatic cBioPortal integration for gene searches - Proper parameter mapping (org_city, org_state_or_province, etc.) - Comprehensive error handling for Elasticsearch limits ### Documentation - Added NCI tutorial with example prompts: `docs/tutorials/nci-prompts.md` - Created API parameter reference: `docs/api-changes/nci-api-parameters.md` - Updated CLAUDE.md with NCI usage instructions and parameter notes ### CLI Integration ```bash # New commands biomcp organization search "MD Anderson" --api-key YOUR_KEY biomcp intervention search pembrolizumab --type Drug --api-key YOUR_KEY biomcp biomarker search --name "PD-L1" --api-key YOUR_KEY biomcp disease search melanoma --source nci --api-key YOUR_KEY # Enhanced trial commands biomcp trial search --condition melanoma --source nci --api-key YOUR_KEY biomcp trial get NCT04280705 --source nci --api-key YOUR_KEY Requires NCI API key from: https://clinicaltrialsapi.cancer.gov/ * Add NCI Clinical Trials Search API integration Integrates the National Cancer Institute's Clinical Trials Search API to provide enhanced cancer trial search capabilities alongside existing ClinicalTrials.gov support. ## New Features ### Core NCI Integration - Added dual source support for trial search/getter (ClinicalTrials.gov + NCI) - Implemented NCI API key handling via environment variable or parameter - Added advanced trial filters: biomarkers, prior therapy, brain metastases ### New NCI-Specific Tools (6 MCP tools + CLI commands) - **Organizations**: Search/get cancer centers, hospitals, research institutions - **Interventions**: Search/get drugs, devices, procedures, biologicals - **Biomarkers**: Search trial eligibility biomarkers (reference genes, branches) - **Diseases**: Search NCI's controlled vocabulary of cancer conditions ### API Features - Real-time access to NCI's curated cancer trials database - Support for all NCI API parameters and filters - Automatic cBioPortal integration for gene searches - Proper parameter mapping (org_city, org_state_or_province, etc.) - Comprehensive error handling for Elasticsearch limits ### Documentation - Added NCI tutorial with example prompts: `docs/tutorials/nci-prompts.md` - Created API parameter reference: `docs/api-changes/nci-api-parameters.md` - Updated CLAUDE.md with NCI usage instructions and parameter notes ### CLI Integration ```bash # New commands biomcp organization search "MD Anderson" --api-key YOUR_KEY biomcp intervention search pembrolizumab --type Drug --api-key YOUR_KEY biomcp biomarker search --name "PD-L1" --api-key YOUR_KEY biomcp disease search melanoma --source nci --api-key YOUR_KEY # Enhanced trial commands biomcp trial search --condition melanoma --source nci --api-key YOUR_KEY biomcp trial get NCT04280705 --source nci --api-key YOUR_KEY Requires NCI API key from: https://clinicaltrialsapi.cancer.gov/ --------- Co-authored-by: Justin Yeakley <justin@genomoncology.com>
Dependency fix (genomoncology#52) Co-authored-by: Justin Yeakley <justin@genomoncology.com>
Streamable (genomoncology#49) * initial streamable * initial streamable * initial streamable working * feat: Complete streamable HTTP transport implementation with event resumption Implements full MCP-compliant streamable HTTP transport protocol (spec 2025-03-26) with production-ready features including Last-Event-ID support for connection resumability. Transport Layer: - Add streamable HTTP mode to CLI server (`biomcp run --mode streamable_http`) - Enable FastMCP's native /mcp endpoint for streamable HTTP transport - Support configurable host/port options for HTTP-based transports - Maintain backward compatibility with legacy SSE endpoints Event Resumption: - Implement in-memory event store with configurable retention (1000 events/stream, 15min TTL) - Add Last-Event-ID header support for SSE connection recovery - Automatic event replay on client reconnection - Background cleanup task to manage memory usage - Full test coverage with 6 comprehensive test scenarios Cloudflare Worker: - Update worker to support both GET and POST methods on /mcp endpoint - Add session ID handling and event streaming support - Improve error handling and request proxying Documentation: - Add comprehensive streamable HTTP deployment guide - Document event resumption usage and client implementation - Update tutorials with HTTP transport examples - Add remote server configuration for Claude Desktop Testing: - Add event store unit tests covering all resumption scenarios - Test event limits, cleanup, multi-stream support - Verify UUID-based event IDs and replay functionality This provides a robust, scalable deployment option with automatic recovery from network interruptions, making BioMCP suitable for production cloud deployments. * feat: Complete streamable HTTP transport implementation with event resumption Implements full MCP-compliant streamable HTTP transport protocol (spec 2025-03-26) with production-ready features including Last-Event-ID support for connection resumability. Transport Layer: - Add streamable HTTP mode to CLI server (`biomcp run --mode streamable_http`) - Enable FastMCP's native /mcp endpoint for streamable HTTP transport - Support configurable host/port options for HTTP-based transports - Maintain backward compatibility with legacy SSE endpoints Event Resumption: - Implement in-memory event store with configurable retention (1000 events/stream, 15min TTL) - Add Last-Event-ID header support for SSE connection recovery - Automatic event replay on client reconnection - Background cleanup task to manage memory usage - Full test coverage with 6 comprehensive test scenarios Cloudflare Worker: - Update worker to support both GET and POST methods on /mcp endpoint - Add session ID handling and event streaming support - Improve error handling and request proxying Documentation: - Add comprehensive streamable HTTP deployment guide - Document event resumption usage and client implementation - Update tutorials with HTTP transport examples - Add remote server configuration for Claude Desktop Testing: - Add event store unit tests covering all resumption scenarios - Test event limits, cleanup, multi-stream support - Verify UUID-based event IDs and replay functionality This provides a robust, scalable deployment option with automatic recovery from network interruptions, making BioMCP suitable for production cloud deployments. * feat: Complete streamable HTTP transport implementation with event resumption Implements full MCP-compliant streamable HTTP transport protocol (spec 2025-03-26) with production-ready features including Last-Event-ID support for connection resumability. Transport Layer: - Add streamable HTTP mode to CLI server (`biomcp run --mode streamable_http`) - Enable FastMCP's native /mcp endpoint for streamable HTTP transport - Support configurable host/port options for HTTP-based transports - Maintain backward compatibility with legacy SSE endpoints Event Resumption: - Implement in-memory event store with configurable retention (1000 events/stream, 15min TTL) - Add Last-Event-ID header support for SSE connection recovery - Automatic event replay on client reconnection - Background cleanup task to manage memory usage - Full test coverage with 6 comprehensive test scenarios Cloudflare Worker: - Update worker to support both GET and POST methods on /mcp endpoint - Add session ID handling and event streaming support - Improve error handling and request proxying Documentation: - Add comprehensive streamable HTTP deployment guide - Document event resumption usage and client implementation - Update tutorials with HTTP transport examples - Add remote server configuration for Claude Desktop Testing: - Add event store unit tests covering all resumption scenarios - Test event limits, cleanup, multi-stream support - Verify UUID-based event IDs and replay functionality This provides a robust, scalable deployment option with automatic recovery from network interruptions, making BioMCP suitable for production cloud deployments. * feat: Complete streamable HTTP transport implementation with event resumption Implements full MCP-compliant streamable HTTP transport protocol (spec 2025-03-26) with production-ready features including Last-Event-ID support for connection resumability. Transport Layer: - Add streamable HTTP mode to CLI server (`biomcp run --mode streamable_http`) - Enable FastMCP's native /mcp endpoint for streamable HTTP transport - Support configurable host/port options for HTTP-based transports - Maintain backward compatibility with legacy SSE endpoints Event Resumption: - Implement in-memory event store with configurable retention (1000 events/stream, 15min TTL) - Add Last-Event-ID header support for SSE connection recovery - Automatic event replay on client reconnection - Background cleanup task to manage memory usage - Full test coverage with 6 comprehensive test scenarios Cloudflare Worker: - Update worker to support both GET and POST methods on /mcp endpoint - Add session ID handling and event streaming support - Improve error handling and request proxying Documentation: - Add comprehensive streamable HTTP deployment guide - Document event resumption usage and client implementation - Update tutorials with HTTP transport examples - Add remote server configuration for Claude Desktop Testing: - Add event store unit tests covering all resumption scenarios - Test event limits, cleanup, multi-stream support - Verify UUID-based event IDs and replay functionality This provides a robust, scalable deployment option with automatic recovery from network interruptions, making BioMCP suitable for production cloud deployments. * feat: Complete streamable HTTP transport implementation with event resumption Implements full MCP-compliant streamable HTTP transport protocol (spec 2025-03-26) with production-ready features including Last-Event-ID support for connection resumability. Transport Layer: - Add streamable HTTP mode to CLI server (`biomcp run --mode streamable_http`) - Enable FastMCP's native /mcp endpoint for streamable HTTP transport - Support configurable host/port options for HTTP-based transports - Maintain backward compatibility with legacy SSE endpoints Event Resumption: - Implement in-memory event store with configurable retention (1000 events/stream, 15min TTL) - Add Last-Event-ID header support for SSE connection recovery - Automatic event replay on client reconnection - Background cleanup task to manage memory usage - Full test coverage with 6 comprehensive test scenarios Cloudflare Worker: - Update worker to support both GET and POST methods on /mcp endpoint - Add session ID handling and event streaming support - Improve error handling and request proxying Documentation: - Add comprehensive streamable HTTP deployment guide - Document event resumption usage and client implementation - Update tutorials with HTTP transport examples - Add remote server configuration for Claude Desktop Testing: - Add event store unit tests covering all resumption scenarios - Test event limits, cleanup, multi-stream support - Verify UUID-based event IDs and replay functionality This provides a robust, scalable deployment option with automatic recovery from network interruptions, making BioMCP suitable for production cloud deployments. * feat: Complete streamable HTTP transport implementation with event resumption Implements full MCP-compliant streamable HTTP transport protocol (spec 2025-03-26) with production-ready features including Last-Event-ID support for connection resumability. Transport Layer: - Add streamable HTTP mode to CLI server (`biomcp run --mode streamable_http`) - Enable FastMCP's native /mcp endpoint for streamable HTTP transport - Support configurable host/port options for HTTP-based transports - Maintain backward compatibility with legacy SSE endpoints Event Resumption: - Implement in-memory event store with configurable retention (1000 events/stream, 15min TTL) - Add Last-Event-ID header support for SSE connection recovery - Automatic event replay on client reconnection - Background cleanup task to manage memory usage - Full test coverage with 6 comprehensive test scenarios Cloudflare Worker: - Update worker to support both GET and POST methods on /mcp endpoint - Add session ID handling and event streaming support - Improve error handling and request proxying Documentation: - Add comprehensive streamable HTTP deployment guide - Document event resumption usage and client implementation - Update tutorials with HTTP transport examples - Add remote server configuration for Claude Desktop Testing: - Add event store unit tests covering all resumption scenarios - Test event limits, cleanup, multi-stream support - Verify UUID-based event IDs and replay functionality This provides a robust, scalable deployment option with automatic recovery from network interruptions, making BioMCP suitable for production cloud deployments. --------- Co-authored-by: Justin Yeakley <justin@genomoncology.com>
Add BioThings integration for gene, drug, and disease data access (ge… …nomoncology#48) * Add BioThings integration for gene, drug, and disease data access This commit adds comprehensive integration with the BioThings API suite (MyGene.info, MyChem.info, MyDisease.info) to provide real-time access to biomedical databases. ## Core Integration Features ### 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")` * Add BioThings integration for gene, drug, and disease data access This commit adds comprehensive integration with the BioThings API suite (MyGene.info, MyChem.info, MyDisease.info) to provide real-time access to biomedical databases. ## Core Integration Features ### 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")` * Add BioThings integration for gene, drug, and disease data access This commit adds comprehensive integration with the BioThings API suite (MyGene.info, MyChem.info, MyDisease.info) to provide real-time access to biomedical databases. ## Core Integration Features ### 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")` * Add BioThings integration for gene, drug, and disease data access This commit adds comprehensive integration with the BioThings API suite (MyGene.info, MyChem.info, MyDisease.info) to provide real-time access to biomedical databases. ## Core Integration Features ### 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")` * Add BioThings integration for gene, drug, and disease data access This commit adds comprehensive integration with the BioThings API suite (MyGene.info, MyChem.info, MyDisease.info) to provide real-time access to biomedical databases. ## Core Integration Features ### 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")` --------- Co-authored-by: Justin Yeakley <justin@genomoncology.com>
This commit addresses all OpenAI MCP compliance issues to enable inte… …gration (genomoncology#44) with OpenAI's systems. ## Key Changes ### 1. Search Tool Compliance - Made `call_benefit` optional (was required) in search tool - `query` is now the ONLY required parameter as per OpenAI spec - Preserved call_benefit functionality for BigQuery logging and LLM accuracy ### 2. Fetch Tool Compliance - Changed parameter from `id_` to `id` (OpenAI expects exact name) - Made `domain` optional with intelligent auto-detection - `id` is now the ONLY required parameter as per OpenAI spec - Added domain auto-detection logic: - NCT* → trial - DOIs (contains "/" with numeric prefix) → article - Pure numeric → article (PMID) - rs* or HGVS notation → variant ### 3. OpenAPI Specification - Added version field to FastMCP initialization (required by OpenAI) - Ensures valid OpenAPI 3.1.0 spec is served in worker mode ### 4. CI/CD Improvements - Separated integration tests from unit tests in CI pipeline - Integration tests now run in optional job (allowed to fail) - Prevents flaky test failures from blocking deployments - Added pytest markers and configuration for test categorization ### 5. Documentation Updates - Added comprehensive testing guide - Updated Claude Desktop tutorial with new optional parameters - Created detailed OpenAI MCP compliance report - Added testing documentation to mkdocs navigation ## Testing - All 438 tests passing (including new domain auto-detection tests) - Quality checks pass (linting, formatting, type checking) - Integration tests separated to improve CI reliability ## Breaking Changes None - all changes are backward compatible. Existing code will continue to work as before. Fixes OpenAI MCP validation errors: - "search action query parameter is not the only required" - "fetch action does not have an id parameter" - "fetch action id parameter is not the only required" Co-authored-by: Justin Yeakley <justin@genomoncology.com>
PreviousNext