Skip to main content
Glama

BioContextAI Knowledgebase MCP

Official
test_scholarly.py4.74 kB
import pytest import pytest_asyncio # noqa: F401 from fastmcp import Client from biocontext_kb.core._server import core_mcp @pytest.mark.no_ci async def test_search_google_scholar_publications(): """Test the tool search_google_scholar_publications.""" async with Client(core_mcp) as client: result = await client.call_tool( "search_google_scholar_publications", {"query": "machine learning", "max_results": 3, "use_proxy": False} ) # Check if we got results or an error (Google Scholar may block) if "error" in result.data: # If blocked, that's expected behavior - publication searches are risky assert "Google Scholar may be blocking" in result.content[0].text else: # If we got results, verify structure assert "query" in result.data assert "publications" in result.data assert isinstance(result.data["publications"], list) @pytest.mark.no_ci async def test_search_google_scholar_publications_empty(): """Test the tool search_google_scholar_publications with empty query.""" async with Client(core_mcp) as client: result = await client.call_tool( "search_google_scholar_publications", {"query": "", "max_results": 3, "use_proxy": False} ) # Should get an error or empty results assert "error" in result.data or result.data.get("total_found", 0) == 0 @pytest.mark.no_ci async def test_search_google_scholar_publications_by_author(): """Test the tool search_google_scholar_publications with author field.""" async with Client(core_mcp) as client: result = await client.call_tool( "search_google_scholar_publications", {"query": 'author:"Yann LeCun"', "max_results": 5, "use_proxy": False} ) # Check if we got results or an error (Google Scholar may block) if "error" in result.data: # If blocked, that's expected behavior - publication searches are risky assert "Google Scholar may be blocking" in result.content[0].text else: # If we got results, verify structure assert "query" in result.data assert "publications" in result.data assert isinstance(result.data["publications"], list) assert result.data["query"] == 'author:"Yann LeCun"' # Should respect max_results limit assert len(result.data["publications"]) <= 5 # Check that publications contain author information if result.data["publications"]: for pub in result.data["publications"]: assert "author" in pub assert "title" in pub @pytest.mark.no_ci async def test_search_google_scholar_publications_author_with_topic(): """Test the tool search_google_scholar_publications with author and topic.""" async with Client(core_mcp) as client: result = await client.call_tool( "search_google_scholar_publications", {"query": 'author:"Geoffrey Hinton" deep learning', "max_results": 3, "use_proxy": False}, ) # Check if we got results or an error (Google Scholar may block) if "error" in result.data: # If blocked, that's expected behavior - publication searches are risky assert "Google Scholar may be blocking" in result.content[0].text else: # If we got results, verify structure assert "query" in result.data assert "publications" in result.data assert isinstance(result.data["publications"], list) assert result.data["query"] == 'author:"Geoffrey Hinton" deep learning' @pytest.mark.no_ci async def test_search_google_scholar_publications_with_proxy(): """Test the tool search_google_scholar_publications with proxy enabled.""" async with Client(core_mcp) as client: result = await client.call_tool( "search_google_scholar_publications", {"query": "neural networks", "max_results": 3, "use_proxy": True} ) # Check if we got results or an error (Google Scholar may block even with proxy) if "error" in result.data: # If blocked, that's expected behavior assert "Google Scholar may be blocking" in result.content[0].text else: # If we got results, verify structure assert "query" in result.data assert "publications" in result.data assert isinstance(result.data["publications"], list) assert result.data["query"] == "neural networks" # Should respect max_results limit assert len(result.data["publications"]) <= 3

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