Skip to main content
Glama

Oxylabs MCP Server

Official
by oxylabs
conftest.py3.21 kB
from contextlib import asynccontextmanager from unittest.mock import AsyncMock, MagicMock, patch import pytest from fastmcp.server.context import Context, set_context from httpx import Request from mcp.server.lowlevel.server import request_ctx from oxylabs_mcp import mcp as mcp_server @pytest.fixture def request_context(): request_context = MagicMock() request_context.session.client_params.clientInfo.name = "fake_cursor" request_context.request.headers = { "x-oxylabs-username": "oxylabs_username", "x-oxylabs-password": "oxylabs_password", "x-oxylabs-ai-studio-api-key": "oxylabs_ai_studio_api_key", } ctx = Context(MagicMock()) ctx.info = AsyncMock() ctx.error = AsyncMock() request_ctx.set(request_context) with set_context(ctx): yield ctx @pytest.fixture(scope="session", autouse=True) def environment(): env = { "OXYLABS_USERNAME": "oxylabs_username", "OXYLABS_PASSWORD": "oxylabs_password", "OXYLABS_AI_STUDIO_API_KEY": "oxylabs_ai_studio_api_key", } with patch("os.environ", new=env): yield @pytest.fixture def mcp(request_context: Context): return mcp_server @pytest.fixture def request_data(): return Request("POST", "https://example.com/v1/queries") @pytest.fixture def oxylabs_client(): client_mock = AsyncMock() @asynccontextmanager async def wrapper(*args, **kwargs): client_mock.context_manager_call_args = args client_mock.context_manager_call_kwargs = kwargs yield client_mock with patch("oxylabs_mcp.utils.AsyncClient", new=wrapper): yield client_mock @pytest.fixture def request_session(request_context): token = request_ctx.set(request_context) yield request_context.session request_ctx.reset(token) @pytest.fixture(scope="session", autouse=True) def is_api_key_valid_mock(): with patch("oxylabs_mcp.utils.is_api_key_valid", return_value=True): yield @pytest.fixture def mock_schema(): return {"field_1": "value1", "field_2": "value2"} @pytest.fixture def ai_crawler(mock_schema): mock_crawler = MagicMock() mock_crawler.generate_schema.return_value = mock_schema with patch("oxylabs_mcp.tools.ai_studio.AiCrawler", return_value=mock_crawler): yield mock_crawler @pytest.fixture def ai_scraper(mock_schema): mock_scraper = MagicMock() mock_scraper.generate_schema.return_value = mock_schema with patch("oxylabs_mcp.tools.ai_studio.AiScraper", return_value=mock_scraper): yield mock_scraper @pytest.fixture def browser_agent(mock_schema): mock_browser_agent = MagicMock() mock_browser_agent.generate_schema.return_value = mock_schema with patch("oxylabs_mcp.tools.ai_studio.BrowserAgent", return_value=mock_browser_agent): yield mock_browser_agent @pytest.fixture def ai_search(): mock_ai_search = MagicMock() with patch("oxylabs_mcp.tools.ai_studio.AiSearch", return_value=mock_ai_search): yield mock_ai_search @pytest.fixture def ai_map(): mock_ai_map = MagicMock() with patch("oxylabs_mcp.tools.ai_studio.AiMap", return_value=mock_ai_map): yield mock_ai_map

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/oxylabs/oxylabs-mcp'

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