Skip to main content
Glama

BioContextAI Knowledgebase MCP

Official
test_stringdb.py5.85 kB
import json import pytest # noqa: F401 import pytest_asyncio # noqa: F401 from fastmcp import Client from biocontext_kb.core._server import core_mcp async def test_get_string_id(): """Test the tool get_string_id with a valid protein name.""" async with Client(core_mcp) as client: # Using TP53 as an example result_text = await client.call_tool("get_string_id", {"protein_symbol": "TP53", "species": "9606"}) # Expected STRING ID for human TP53 assert "9606.ENSP00000269305" in str(result_text.content[0].text) async def test_get_string_id_preferred_name(): """Test the tool get_string_id with return_field set to preferredName.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "get_string_id", {"protein_symbol": "TP53", "species": "9606", "return_field": "preferredName"} ) assert "TP53" in str(result_text.content[0].text) async def test_get_string_id_invalid_protein(): """Test the tool get_string_id with an invalid protein name.""" async with Client(core_mcp) as client: result_text = await client.call_tool("get_string_id", {"protein_symbol": "NONEXISTENTPROTEIN12345"}) result = json.loads(result_text.content[0].text) assert "error" in result async def test_get_string_interactions(): """Test the tool get_string_interactions with valid parameters.""" async with Client(core_mcp) as client: result_text = await client.call_tool("get_string_interactions", {"protein_symbol": "TP53", "species": "9606"}) result = json.loads(result_text.content[0].text) # Verify we get a list of interactions assert isinstance(result, list) assert len(result) > 0 # Check for expected fields in the first interaction first_interaction = result[0] assert "stringId_A" in first_interaction assert "stringId_B" in first_interaction assert "score" in first_interaction async def test_get_string_interactions_invalid_protein(): """Test the tool get_string_interactions with an invalid protein name.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "get_string_interactions", {"protein_symbol": "NONEXISTENTPROTEIN12345", "species": "9606"} ) result = json.loads(result_text.content[0].text) assert "error" in result async def test_get_string_similarity_scores(): """Test the tool get_string_similarity_scores with valid parameters.""" async with Client(core_mcp) as client: # Compare dopamine receptors D1 and D2 result_text = await client.call_tool( "get_string_similarity_scores", {"protein_symbol": "DRD1", "protein_symbol_comparison": "DRD2", "species": "9606"}, ) result = json.loads(result_text.content[0].text) # Verify we get a list of similarity scores assert isinstance(result, list) # These proteins should have similarity scores if len(result) > 0: # Check for expected fields assert "stringId_A" in result[0] assert "stringId_B" in result[0] assert "bitscore" in result[0] async def test_get_string_network_image(): """Test the tool get_string_network_image with valid parameters.""" async with Client(core_mcp) as client: result = await client.call_tool("get_string_network_image", {"protein_symbol": "TP53", "species": "9606"}) # Verify we get an image back assert result.content[0].type == "image" assert result.content[0].mimeType == "image/png" async def test_get_string_network_image_invalid_protein(): """Test the tool get_string_network_image with an invalid protein name.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "get_string_network_image", {"protein_symbol": "NONEXISTENTPROTEIN12345", "species": "9606"} ) result = json.loads(result_text.content[0].text) assert "error" in result async def test_get_string_id_mouse(): """Test the tool get_string_id with a valid protein name for mouse species.""" async with Client(core_mcp) as client: # Using Trp53 as mouse example (TP53 ortholog) result_text = await client.call_tool("get_string_id", {"protein_symbol": "Trp53", "species": "10090"}) # Expected STRING ID pattern for mouse Trp53 assert "10090.ENSMUSP" in str(result_text.content[0].text) async def test_get_string_interactions_mouse(): """Test the tool get_string_interactions with valid parameters for mouse species.""" async with Client(core_mcp) as client: result_text = await client.call_tool("get_string_interactions", {"protein_symbol": "Trp53", "species": "10090"}) result = json.loads(result_text.content[0].text) # Verify we get a list of interactions assert isinstance(result, list) assert len(result) > 0 # Check for expected fields in the first interaction first_interaction = result[0] assert "stringId_A" in first_interaction assert "stringId_B" in first_interaction assert "score" in first_interaction # Verify mouse species ID is present in the STRING IDs assert "10090." in first_interaction["stringId_A"] async def test_get_string_network_image_mouse(): """Test the tool get_string_network_image with valid parameters for mouse species.""" async with Client(core_mcp) as client: result = await client.call_tool("get_string_network_image", {"protein_symbol": "Trp53", "species": "10090"}) # Verify we get an image back assert result.content[0].type == "image" assert result.content[0].mimeType == "image/png"

Latest Blog Posts

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/biocontext-ai/knowledgebase-mcp'

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