Skip to main content
Glama
python_sdk.py3.29 kB
#!/usr/bin/env -S uv --quiet run --script # /// script # requires-python = ">=3.11" # dependencies = [ # "biomcp-python", # ] # /// # Scripts to reproduce this page: # https://biomcp.org/python_sdk/ import asyncio import json from biomcp.trials.search import ( RecruitingStatus, TrialPhase, TrialQuery, search_trials, ) from biomcp.variants.getter import get_variant from biomcp.variants.search import VariantQuery, search_variants async def find_pathogenic_tp53(): # noinspection PyTypeChecker query = VariantQuery(gene="TP53", significance="pathogenic", size=5) # Get results as Markdown (default) json_output_str = await search_variants(query, output_json=True) data = json.loads(json_output_str) assert len(data) == 5 for item in data: clinvar = item.get("clinvar") for rcv in clinvar.get("rcv", []): assert "pathogenic" in rcv["clinical_significance"].lower() async def get_braf_v600e_details(): variant_id = "chr7:g.140453136A>T" # BRAF V600E variant # Get results as JSON string json_output_str = await get_variant(variant_id, output_json=True) data = json.loads(json_output_str) # Process the variant data assert data, "No data returned for BRAF V600E variant" variant = data[0] clinvar = variant.get("clinvar", {}) cosmic = variant.get("cosmic", {}) docm = variant.get("docm", {}) # Verify key variant details assert clinvar.get("gene", {}).get("symbol") == "BRAF" assert clinvar.get("chrom") == "7" assert clinvar.get("cytogenic") == "7q34" assert cosmic.get("cosmic_id") == "COSM476" assert docm.get("aa_change") == "p.V600E" # Verify HGVS coding variants hgvs_coding = clinvar.get("hgvs", {}).get("coding", []) assert len(hgvs_coding) >= 13 assert "NM_004333.6:c.1799T>A" in hgvs_coding async def find_melanoma_trials(): query = TrialQuery( conditions=["Melanoma"], interventions=["Pembrolizumab"], recruiting_status=RecruitingStatus.OPEN, phase=TrialPhase.PHASE3, ) # Get results as JSON string json_output_str = await search_trials(query, output_json=True) data = json.loads(json_output_str) # Verify we got results assert data, "No trials found" assert len(data) >= 2, "Expected at least 2 melanoma trials" # Verify first trial details (NCT05727904) trial1 = data[0] assert trial1["NCT Number"] == "NCT05727904" assert "lifileucel" in trial1["Study Title"].lower() assert trial1["Study Status"] == "RECRUITING" assert trial1["Phases"] == "PHASE3" assert int(trial1["Enrollment"]) == 670 assert "Melanoma" in trial1["Conditions"] assert "Pembrolizumab" in trial1["Interventions"] # Verify second trial details (NCT06697301) trial2 = data[1] assert trial2["NCT Number"] == "NCT06697301" assert "EIK1001" in trial2["Study Title"] assert trial2["Study Status"] == "RECRUITING" assert "PHASE3" in trial2["Phases"] assert int(trial2["Enrollment"]) == 740 assert trial2["Conditions"] == "Advanced Melanoma" def run(): asyncio.run(find_pathogenic_tp53()) asyncio.run(get_braf_v600e_details()) asyncio.run(find_melanoma_trials()) if __name__ == "__main__": run()

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/genomoncology/biomcp'

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