Skip to main content
Glama

Gemini MCP Server

test_listmodels.pyโ€ข5.41 kB
"""Tests for the ListModels tool""" import json import os from unittest.mock import patch import pytest from mcp.types import TextContent from tools.listmodels import ListModelsTool class TestListModelsTool: """Test the ListModels tool functionality""" @pytest.fixture def tool(self): """Create a ListModelsTool instance""" return ListModelsTool() def test_tool_metadata(self, tool): """Test tool has correct metadata""" assert tool.name == "listmodels" assert "model providers" in tool.description assert tool.get_request_model().__name__ == "ToolRequest" @pytest.mark.asyncio async def test_execute_with_no_providers(self, tool): """Test listing models with no providers configured""" with patch.dict(os.environ, {}, clear=True): # Set auto mode os.environ["DEFAULT_MODEL"] = "auto" result = await tool.execute({}) assert len(result) == 1 assert isinstance(result[0], TextContent) # Parse JSON response response = json.loads(result[0].text) assert response["status"] == "success" content = response["content"] # Check that providers show as not configured assert "Google Gemini โŒ" in content assert "OpenAI โŒ" in content assert "X.AI (Grok) โŒ" in content assert "OpenRouter โŒ" in content assert "Custom/Local API โŒ" in content # Check summary shows 0 configured assert "**Configured Providers**: 0" in content @pytest.mark.asyncio async def test_execute_with_gemini_configured(self, tool): """Test listing models with Gemini configured""" env_vars = {"GEMINI_API_KEY": "test-key", "DEFAULT_MODEL": "auto"} with patch.dict(os.environ, env_vars, clear=True): result = await tool.execute({}) response = json.loads(result[0].text) content = response["content"] # Check Gemini shows as configured assert "Google Gemini โœ…" in content assert "`flash` โ†’ `gemini-2.5-flash`" in content assert "`pro` โ†’ `gemini-2.5-pro`" in content assert "1M context" in content assert "Supports structured code generation" in content # Check summary assert "**Configured Providers**: 1" in content @pytest.mark.asyncio async def test_execute_with_multiple_providers(self, tool): """Test listing models with multiple providers configured""" env_vars = { "GEMINI_API_KEY": "test-key", "OPENAI_API_KEY": "test-key", "XAI_API_KEY": "test-key", "DEFAULT_MODEL": "auto", } with patch.dict(os.environ, env_vars, clear=True): result = await tool.execute({}) response = json.loads(result[0].text) content = response["content"] # Check all show as configured assert "Google Gemini โœ…" in content assert "OpenAI โœ…" in content assert "X.AI (Grok) โœ…" in content # Check models are listed assert "`o3`" in content assert "`grok`" in content # Check summary assert "**Configured Providers**: 3" in content @pytest.mark.asyncio async def test_execute_with_openrouter(self, tool): """Test listing models with OpenRouter configured""" env_vars = {"OPENROUTER_API_KEY": "test-key", "DEFAULT_MODEL": "auto"} with patch.dict(os.environ, env_vars, clear=True): result = await tool.execute({}) response = json.loads(result[0].text) content = response["content"] # Check OpenRouter shows as configured assert "OpenRouter โœ…" in content assert "Access to multiple cloud AI providers" in content # Should show some models (mocked registry will have some) assert "Available Models" in content @pytest.mark.asyncio async def test_execute_with_custom_api(self, tool): """Test listing models with custom API configured""" env_vars = {"CUSTOM_API_URL": "http://localhost:11434", "DEFAULT_MODEL": "auto"} with patch.dict(os.environ, env_vars, clear=True): result = await tool.execute({}) response = json.loads(result[0].text) content = response["content"] # Check Custom API shows as configured assert "Custom/Local API โœ…" in content assert "http://localhost:11434" in content assert "Local models via Ollama" in content @pytest.mark.asyncio async def test_output_includes_usage_tips(self, tool): """Test that output includes helpful usage tips""" result = await tool.execute({}) response = json.loads(result[0].text) content = response["content"] # Check for usage tips assert "**Usage Tips**:" in content assert "Use model aliases" in content assert "auto mode" in content def test_model_category(self, tool): """Test that tool uses FAST_RESPONSE category""" from tools.models import ToolModelCategory assert tool.get_model_category() == ToolModelCategory.FAST_RESPONSE

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/BeehiveInnovations/gemini-mcp-server'

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