Skip to main content
Glama

BioContextAI Knowledgebase MCP

Official
test_pride.py7.03 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_pride_project_basic(): """Test the get_pride_project tool with a valid PRIDE accession.""" async with Client(core_mcp) as client: # Using a well-known PRIDE project result_text = await client.call_tool("get_pride_project", {"project_accession": "PRD000001"}) result = json.loads(result_text.content[0].text) assert "accession" in result assert result["accession"] == "PRD000001" assert "title" in result assert "projectDescription" in result async def test_get_pride_project_with_files(): """Test the get_pride_project tool with file information.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "get_pride_project", {"project_accession": "PRD000001", "include_files": True} ) result = json.loads(result_text.content[0].text) assert "accession" in result # files may or may not be present depending on the project assert "files" in result or "accession" in result async def test_get_pride_project_with_similar(): """Test the get_pride_project tool with similar projects.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "get_pride_project", {"project_accession": "PRD000001", "include_similar_projects": True} ) result = json.loads(result_text.content[0].text) assert "accession" in result # similar_projects may or may not be present assert "similar_projects" in result or "accession" in result async def test_get_pride_project_nonexistent(): """Test the get_pride_project tool with non-existent accession.""" async with Client(core_mcp) as client: result_text = await client.call_tool("get_pride_project", {"project_accession": "PRD999999"}) result = json.loads(result_text.content[0].text) # Should return error for non-existent project assert "error" in result async def test_search_pride_projects_basic(): """Test the search_pride_projects tool with basic search.""" async with Client(core_mcp) as client: result_text = await client.call_tool("search_pride_projects", {"page_size": 5}) result = json.loads(result_text.content[0].text) assert "results" in result assert "count" in result assert len(result["results"]) <= 5 async def test_search_pride_projects_with_keyword(): """Test the search_pride_projects tool with keyword search.""" async with Client(core_mcp) as client: result_text = await client.call_tool("search_pride_projects", {"keyword": "human", "page_size": 10}) result = json.loads(result_text.content[0].text) assert "results" in result assert "count" in result assert "search_criteria" in result assert result["search_criteria"]["keyword"] == "human" async def test_search_pride_projects_with_organism_filter(): """Test the search_pride_projects tool with organism filter.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "search_pride_projects", {"organism_filter": "Homo sapiens", "page_size": 5} ) result = json.loads(result_text.content[0].text) assert "results" in result assert "count" in result async def test_search_pride_projects_with_instrument_filter(): """Test the search_pride_projects tool with instrument filter.""" async with Client(core_mcp) as client: result_text = await client.call_tool("search_pride_projects", {"instrument_filter": "Orbitrap", "page_size": 5}) result = json.loads(result_text.content[0].text) assert "results" in result assert "count" in result async def test_search_pride_projects_sorting(): """Test the search_pride_projects tool with different sorting.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "search_pride_projects", {"sort_field": "title", "sort_direction": "ASC", "page_size": 5} ) result = json.loads(result_text.content[0].text) assert "results" in result assert "count" in result async def test_search_pride_proteins_basic(): """Test the search_pride_proteins tool with a valid project.""" async with Client(core_mcp) as client: # Using a project that should have protein data result_text = await client.call_tool( "search_pride_proteins", {"project_accession": "PRD000001", "page_size": 5} ) result = json.loads(result_text.content[0].text) # Should either return results or an error (if project has no protein data) assert "results" in result or "error" in result if "results" in result: assert "count" in result assert "project_accession" in result async def test_search_pride_proteins_with_keyword(): """Test the search_pride_proteins tool with keyword search.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "search_pride_proteins", {"project_accession": "PRD000001", "keyword": "albumin", "page_size": 5} ) result = json.loads(result_text.content[0].text) # Should either return results or an error assert "results" in result or "error" in result async def test_search_pride_proteins_sorting(): """Test the search_pride_proteins tool with different sorting.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "search_pride_proteins", {"project_accession": "PRD000001", "sort_field": "proteinName", "sort_direction": "DESC", "page_size": 5}, ) result = json.loads(result_text.content[0].text) # Should either return results or an error assert "results" in result or "error" in result async def test_search_pride_proteins_invalid_project(): """Test the search_pride_proteins tool with invalid project.""" async with Client(core_mcp) as client: result_text = await client.call_tool("search_pride_proteins", {"project_accession": "INVALIDPROJECT123"}) result = json.loads(result_text.content[0].text) assert "error" in result async def test_search_pride_projects_multiple_filters(): """Test the search_pride_projects tool with multiple filters.""" async with Client(core_mcp) as client: result_text = await client.call_tool( "search_pride_projects", {"keyword": "proteome", "organism_filter": "Homo sapiens", "experiment_type_filter": "TMT", "page_size": 5}, ) result = json.loads(result_text.content[0].text) assert "results" in result assert "count" in result assert "search_criteria" in result

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