Biomedical Web Search
Usage
import asyncio
import json
from contextlib import AsyncExitStack
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession
class OrigeneClient:
def __init__(self, server_url: str, api_key: str):
self.server_url = server_url
self.api_key = api_key
self.session = None
async def connect(self):
try:
self.transport = streamablehttp_client(url=self.server_url, headers={"SCP-HUB-API-KEY": self.api_key})
self._stack = AsyncExitStack()
await self._stack.__aenter__()
self.read, self.write, self.get_session_id = await self._stack.enter_async_context(self.transport)
self.session_ctx = ClientSession(self.read, self.write)
self.session = await self._stack.enter_async_context(self.session_ctx)
await self.session.initialize()
return True
except Exception as e:
return False
async def disconnect(self):
"""Disconnect from server"""
try:
if hasattr(self, '_stack'):
await self._stack.aclose()
print("✓ already disconnect")
except Exception as e:
print(f"✗ disconnect error: {e}")
def parse_result(self, result):
if isinstance(result, dict):
content_list = result.get("content") or []
else:
content_list = getattr(result, "content", []) or []
texts = []
for item in content_list:
if isinstance(item, dict):
if item.get("type") == "text":
texts.append(item.get("text") or "")
else:
if getattr(item, "type", None) == "text":
texts.append(getattr(item, "text", "") or "")
return "".join(texts)
## Initialize and use
client = OrigeneClient("https://scp.intern-ai.org.cn/api/v1/mcp/7/Origene-Search", "<your-api-key>")
await client.connect()
result = await client.session.call_tool("tavily_search", arguments={"query": "brain tumor"})
print(client.parse_result(result))
await client.disconnect()
Tool: tavily_search
- Args:
query (str) - Search query
- Returns: JSON with query, answer, results (URL, title, content, score)
Use Cases
- Medical literature search, clinical research, disease information retrieval
1---2name: biomedical-web-search3description: Search biomedical literature and web content using Tavily search engine for research and clinical information.4license: MIT license5---6
7# Biomedical Web Search
8
9## Usage
10
11```python
12import asyncio
13import json
14from contextlib import AsyncExitStack
15from mcp.client.streamable_http import streamablehttp_client
16from mcp import ClientSession
17
18class OrigeneClient:
19 def __init__(self, server_url: str, api_key: str):
20 self.server_url = server_url
21 self.api_key = api_key
22 self.session = None
23
24 async def connect(self):
25 try:
26 self.transport = streamablehttp_client(url=self.server_url, headers={"SCP-HUB-API-KEY": self.api_key})
27 self._stack = AsyncExitStack()
28 await self._stack.__aenter__()
29 self.read, self.write, self.get_session_id = await self._stack.enter_async_context(self.transport)
30 self.session_ctx = ClientSession(self.read, self.write)
31 self.session = await self._stack.enter_async_context(self.session_ctx)
32 await self.session.initialize()
33 return True
34 except Exception as e:
35 return False
36
37 async def disconnect(self):
38 """Disconnect from server"""
39 try:
40 if hasattr(self, '_stack'):
41 await self._stack.aclose()
42 print("✓ already disconnect")
43 except Exception as e:
44 print(f"✗ disconnect error: {e}")
45 def parse_result(self, result):
46 if isinstance(result, dict):
47 content_list = result.get("content") or []
48 else:
49 content_list = getattr(result, "content", []) or []
50 texts = []
51 for item in content_list:
52 if isinstance(item, dict):
53 if item.get("type") == "text":
54 texts.append(item.get("text") or "")
55 else:
56 if getattr(item, "type", None) == "text":
57 texts.append(getattr(item, "text", "") or "")
58 return "".join(texts)
59
60## Initialize and use
61client = OrigeneClient("https://scp.intern-ai.org.cn/api/v1/mcp/7/Origene-Search", "<your-api-key>")
62await client.connect()
63
64result = await client.session.call_tool("tavily_search", arguments={"query": "brain tumor"})
65print(client.parse_result(result))
66
67await client.disconnect()
68```
69
70### Tool: `tavily_search`
71- Args: `query` (str) - Search query
72- Returns: JSON with query, answer, results (URL, title, content, score)
73
74### Use Cases
75- Medical literature search, clinical research, disease information retrieval