MCP_Res / mcp /opentargets.py
mgbam's picture
Update mcp/opentargets.py
192721e verified
import os, httpx, textwrap
from functools import lru_cache
_URL = "https://api.platform.opentargets.org/api/v4/graphql"
_HDR = {"Content-Type": "application/json", "Accept": "application/json"}
if os.getenv("OT_KEY"): # optional higher quota
_HDR["Authorization"] = f"Bearer {os.getenv('OT_KEY')}"
_QUERY = textwrap.dedent("""
query Assoc($g:String!, $n:Int!) {
associations(geneSymbol:$g, size:$n) {
rows { score datasourceId disease { id name } target { id symbol } }
}
}""")
@lru_cache(maxsize=512)
async def fetch_ot(sym: str, n: int = 30):
payload = {"query": _QUERY, "variables": {"g": sym, "n": n}}
async with httpx.AsyncClient(timeout=10, headers=_HDR) as c:
r = await c.post(_URL, json=payload)
r.raise_for_status()
return r.json()["data"]["associations"]["rows"]