MCP_Res / mcp /opentargets.py
mgbam's picture
Update mcp/opentargets.py
b4beb5e verified
# mcp/opentargets.py
import textwrap
from functools import lru_cache
from mcp.clients import BaseClient
class OTClient(BaseClient):
QUERY = textwrap.dedent("""
query ($g: String!, $n: Int!){
associations(geneSymbol: $g, size: $n) {
rows { score datatypeId datasourceId disease { id name } target { id symbol } }
}
}
""")
def __init__(self):
super().__init__("https://api.platform.opentargets.org/api/v4/graphql", api_key_env="OT_KEY")
@lru_cache(512)
async def fetch(self, symbol: str, n: int = 30):
payload = {"query": self.QUERY, "variables": {"g": symbol, "n": n}}
return (await self.request("POST", "", json=payload))["data"]["associations"]["rows"]
ot = OTClient()