We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RamXX/mcp-tavily'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
"""Test helpers for extracting handlers from the server module."""
import asyncio
import inspect
from unittest.mock import patch, MagicMock, AsyncMock
import mcp_server_tavily.server as server_module
class ServerHandlerExtractor:
"""Extract handler functions from the server module."""
def __init__(self):
self.handlers = {}
async def extract_handlers(self):
"""Extract all handler functions from the server module."""
# Create mocks for all decorators
with patch('mcp_server_tavily.server.Server') as mock_server_class:
mock_server = MagicMock()
mock_server_class.return_value = mock_server
# Mock the decorator methods to capture handlers
def capture_handler(decorator_name):
def decorator(func):
self.handlers[decorator_name] = func
return func
return decorator
mock_server.list_tools.side_effect = capture_handler('list_tools')
mock_server.list_prompts.side_effect = capture_handler('list_prompts')
mock_server.call_tool.side_effect = capture_handler('call_tool')
mock_server.get_prompt.side_effect = capture_handler('get_prompt')
# Mock stdio_server to prevent actual I/O
with patch('mcp_server_tavily.server.stdio_server') as mock_stdio:
mock_stdio.return_value.__aenter__.return_value = (AsyncMock(), AsyncMock())
# Mock TavilyClient to prevent actual API calls
with patch('mcp_server_tavily.server.TavilyClient') as mock_client_class:
# Call serve to register all handlers
await server_module.serve("fake_api_key")
return self.handlers
async def get_server_handlers():
"""Get all handler functions from the server module."""
extractor = ServerHandlerExtractor()
return await extractor.extract_handlers()