Skip to main content
Glama

mcp-simple-arxiv

by andybrandt
MIT License
148
  • Apple
import asyncio import logging from fastmcp.client import Client, StdioTransport # Configure logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') async def main(): """ Test client for the mcp-simple-arxiv server. Connects to the stdio server, lists tools, and calls each tool to verify functionality. """ logging.info("Starting test client for mcp-simple-arxiv...") # Configure the stdio transport to run the server as a module transport = StdioTransport( command="python", args=["-m", "mcp_simple_arxiv"] ) # Create a client with the transport client = Client(transport) async with client: try: # 1. List available tools logging.info("--- Testing tools/list ---") tools = await client.list_tools() logging.info(f"Found {len(tools)} tools:") for tool in tools: logging.info(f"- {tool.name}: {tool.description.splitlines()[0]}") assert len(tools) == 4, "Expected 4 tools" logging.info("✅ tools/list test PASSED") # 2. Test search_papers logging.info("\n--- Testing search_papers ---") query = "electron" logging.info(f"Calling search_papers with query: '{query}'") result = await client.call_tool("search_papers", {"query": query, "max_results": 2}) logging.info(f"Result:\n{result.data}") assert "Search Results" in result.data logging.info("✅ search_papers test PASSED") # 3. Test get_paper_data logging.info("\n--- Testing get_paper_data ---") paper_id = "0808.3772" # A known paper logging.info(f"Calling get_paper_data with paper_id: '{paper_id}'") result = await client.call_tool("get_paper_data", {"paper_id": paper_id}) logging.info(f"Result:\n{result.data}") assert "A common mass scale for satellite galaxies of the Milky Way" in result.data logging.info("✅ get_paper_data test PASSED") # 4. Test list_categories logging.info("\n--- Testing list_categories ---") logging.info("Calling list_categories without a filter...") result = await client.call_tool("list_categories") logging.info(f"Result snippet:\n{result.data[:300]}...") assert "arXiv Categories" in result.data logging.info("✅ list_categories (no filter) test PASSED") logging.info("Calling list_categories with filter 'cs'...") result = await client.call_tool("list_categories", {"primary_category": "cs"}) logging.info(f"Result snippet:\n{result.data[:300]}...") assert "cs: Computer Science" in result.data assert "math: Mathematics" not in result.data logging.info("✅ list_categories (with filter) test PASSED") # 5. Test update_categories - This might take a moment logging.info("\n--- Testing update_categories ---") logging.info("Calling update_categories...") result = await client.call_tool("update_categories") logging.info(f"Result:\n{result.data}") assert "Successfully updated category taxonomy" in result.data logging.info("✅ update_categories test PASSED") except Exception as e: logging.error(f"An error occurred during testing: {e}", exc_info=True) finally: logging.info("\nTest run finished.") if __name__ == "__main__": asyncio.run(main())

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/andybrandt/mcp-simple-arxiv'

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