- Home
- MCP servers
- Biological APIs
Biological APIs
- python
9
GitHub Stars
python
Language
6 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
You have access to a unified Biological APIs MCP Server that integrates 100+ tools from multiple biological and medical databases. Connect once and query pathways, genes, diseases, drugs, literature, trials, and more through a single, streamlined MCP endpoint for research and discovery.
How to use
Connect your MCP client to the unified endpoint to access all APIs in one place. With this server, you can explore pathway data, gene and protein information, disease associations, clinical trials, literature, and drug-related resources across Reactome, KEGG, UniProt, OMIM, GWAS Catalog, PubMed, OpenFDA, MyVariant.info, MyChem.info, and others. You can perform queries to retrieve detailed object information, search across tools, and compose workflows that combine data from multiple sources. The unified endpoint makes it easy to build cross-database analyses and rapid hypothesis testing without juggling separate connections.
If you prefer to work with individual APIs, you can target specific endpoints for Reactome, PubMed, ChEMBL, and more. Each API is available at its dedicated endpoint in addition to the unified option.
How to install
Prerequisites you need before installation: a modern Python environment, a container runtime if you plan to use Docker, and a capable MCP client to manage connections.
Option 1. Docker Compose (recommended for quick setup) Start all services with automatic rebuild, or run in the background. View logs and stop services when you are finished.
# Start all services with auto-rebuild
make docker-watch
# Or start in background
make docker-up
# View logs
make docker-logs
# Stop services
make docker-down
Option 2. Local Python installation Install dependencies and synchronize the MCP server then run the server using your preferred method.
# Install dependencies using uv
uv sync
Starting the server without Docker, using the recommended development workflow: you can start with a Makefile target for running via uvicorn with livereload, or run directly with uv or uvicorn equivalent commands.
# Start server with uvicorn and livereload (recommended for development)
make server
# Or run directly with uvicorn
uv run uvicorn medical_mcps.http_server:app --reload --host 0.0.0.0 --port 8000
Configuration and runtime notes
The MCP server operates as a stateless proxy. It does not store API keys. For APIs that require authentication, you must provide the API key as a parameter with each tool call where applicable.
Production and development endpoints are available for unified access or per-API access. The unified endpoint gives you access to all tools through a single connection, while individual endpoints allow you to query a single API directly.
Caching is enabled by default for all HTTP-based APIs to improve performance. Cache behavior follows RFC 9111 semantics, with per-API cache files stored locally.
Sentry integration is optional for error tracking and performance monitoring. If you enable it, set the SENTRY_DSN environment variable and adjust tracing, profiling, and PII settings as needed.
Testing connections and availability
You can verify that the production server is reachable by sending a simple initialization request to the unified endpoint or to a specific API endpoint. A successful response confirms that the server is running and accessible.
When you test, you should observe that tool results indicate the originating API source, helping you track provenance across analyses.
Security and API keys handling
APIs that require authentication (such as OMIM) demand that you pass the API key with each tool call. Do not store API keys on the server. Use per-request keys when making tool calls.
For OpenFDA and NCI Clinical Trials APIs, you may provide optional API keys for higher rate limits. See the specific tool documentation for how to pass the key in requests.
Troubleshooting and tips
If you encounter issues, check that you are using the unified endpoint or the per-API endpoints correctly, ensure your API keys are valid and provided when required, and verify that your MCP client is configured to target the correct endpoint.
If you see caching-related errors, confirm the local cache directory exists and that your client honors RFC 9111 caching controls. You can clear caches by removing the local cache files as needed.
Example actions you can perform
Search for a disease pathway, then retrieve related genes and chemical interactions, followed by a literature search to gather supporting articles. Combine results from Reactome, KEGG, UniProt, PubMed, and ChEMBL to build a multi-database view of a biomedical topic.
Next steps
Choose unified access for simplicity or select individual APIs to tailor your dataRetrieval workflow. Configure your MCP client to point at the appropriate endpoint, then start querying tools to begin your research.
Notes on available tools and APIs
The server exposes a broad set of tools across multiple APIs. Each tool is prefixed with the corresponding API name to clearly indicate its origin, enabling you to compose cross-database analyses with confidence.
Developer notes
For local development, you can run a full container stack or operate a Python-based server with uvicorn. The MCP endpoint supports both POST for JSON-RPC and GET for streaming if needed.
Available tools
reactome_get_pathway
Get detailed pathway information from the Reactome API.
reactome_query_pathways
Query pathways by keyword or gene/protein name.
reactome_get_pathway_participants
Get all participants in a Reactome pathway.
reactome_get_disease_pathways
Get pathways associated with a disease.
kegg_get_pathway_info
Get pathway information by pathway ID in KEGG.
kegg_list_pathways
List pathways, optionally filtered by organism.
kegg_find_pathways
Find pathways matching a query keyword.
kegg_get_gene
Get gene information by gene ID.
kegg_find_genes
Find genes matching a query keyword.
kegg_get_disease
Get disease information by disease ID.
kegg_find_diseases
Find diseases matching a query keyword.
kegg_link_pathway_genes
Get genes linked to a pathway.
uniprot_get_protein
Get protein information by accession.
uniprot_search_proteins
Search proteins in UniProtKB.
uniprot_get_protein_sequence
Get protein sequence in FASTA format.
uniprot_get_disease_associations
Get disease associations for a protein.
uniprot_map_ids
Map identifiers between databases.
omim_get_entry
Get entry information by MIM number.
omim_search_entries
Search entries in OMIM.
omim_get_gene
Get gene information by gene symbol.
omim_search_genes
Search genes in OMIM.
omim_get_phenotype
Get phenotype information by MIM number.
omim_search_phenotypes
Search phenotypes in OMIM.
gwas_get_association
Get association information by association ID.
gwas_search_associations
Search for associations with various filters.
gwas_get_variant
Get SNP information by rsId.
gwas_search_variants
Search for SNPs/variants by rsId.
gwas_get_study
Get study information by study ID.
gwas_search_studies
Search for studies with various filters.
gwas_get_trait
Get trait information by trait ID.
gwas_search_traits
Search for traits.
pathwaycommons_search
Search for pathways, proteins, or other biological entities.
pathwaycommons_get_pathway_by_uri
Get pathway information by URI.
pathwaycommons_top_pathways
Get top-level pathways, optionally filtered by gene or datasource.
pathwaycommons_graph
Get pathway graph or network information.
pathwaycommons_traverse
Traverse pathway data using graph path expressions.
nodenorm_get_semantic_types
Get all supported BioLink semantic types.
nodenorm_get_curie_prefixes
Get all supported CURIE prefixes.
nodenorm_get_normalized_nodes
Normalize CURIEs to obtain equivalent identifiers.
nodenorm_get_allowed_conflations
Get available conflation types.
chembl_get_molecule
Get molecule information by ChEMBL ID.
chembl_search_molecules
Search molecules by name or synonym.
chembl_get_target
Get target information by ChEMBL ID.
chembl_search_targets
Search targets by name or synonym.
chembl_get_activities
Get bioactivity data filtered by target or molecule.
chembl_get_mechanism
Get mechanism of action for a molecule.
chembl_find_drugs_by_target
Find drugs targeting a specific protein.
chembl_find_drugs_by_indication
Find drugs for a disease/indication.
chembl_get_drug_indications
Get all indications for a specific drug.
ctg_search_studies
Search ClinicalTrials.gov trials with various filters.
ctg_get_study
Get a single study by NCT ID.
ctg_search_by_condition
Search trials by condition/disease.
ctg_search_by_intervention
Search trials by intervention/treatment.
ctg_get_study_metadata
Get data model metadata for ClinicalTrials.gov.
pubmed_search_articles
Search biomedical articles from PubMed/PubTator3.
pubmed_get_article
Get detailed article information by PMID or DOI.
pubmed_search_preprints
Search preprint articles via Europe PMC.
openfda_search_adverse_events
Search FDA adverse event reports.
openfda_get_adverse_event
Get detailed adverse event report by safety report ID.
openfda_search_drug_labels
Search FDA drug product labels.
openfda_get_drug_label
Get full drug label by set ID.
openfda_search_device_events
Search FDA device adverse event reports.
myvariant_search_variants
Search genetic variants by gene, HGVS notation, or rsID.
myvariant_get_variant
Get comprehensive variant details.
mygene_get_gene
Get gene information from MyGene.info by ID or symbol.
mydisease_get_disease
Get disease information from MyDisease.info by ID or name.
mychem_get_drug
Get drug data from MyChem.info by ID or name.
nci_search_trials
Search NCI cancer trials by condition, intervention, phase, or status.
nci_get_trial
Get NCI trial details by trial ID.