Skip to main content
Glama
test_mcp.py4.77 kB
"""Tests for the MCP server module.""" from unittest.mock import Mock, patch import pytest from template_mcp_server.src.mcp import TemplateMCPServer class TestTemplateMCPServer: """Test the TemplateMCPServer class.""" @patch("template_mcp_server.src.mcp.force_reconfigure_all_loggers") @patch("template_mcp_server.src.mcp.settings") @patch("template_mcp_server.src.mcp.FastMCP") @patch("template_mcp_server.src.mcp.logger") def test_init_success( self, mock_logger, mock_fastmcp, mock_settings, mock_force_reconfigure ): """Test successful initialization of TemplateMCPServer.""" # Arrange mock_mcp = Mock() mock_fastmcp.return_value = mock_mcp mock_settings.PYTHON_LOG_LEVEL = "INFO" # Act server = TemplateMCPServer() # Assert assert server.mcp == mock_mcp mock_logger.info.assert_called_with( "Template MCP Server initialized successfully" ) # In tools-first architecture, we only register tools mock_mcp.tool.assert_called() @patch("template_mcp_server.src.mcp.force_reconfigure_all_loggers") @patch("template_mcp_server.src.mcp.settings") @patch("template_mcp_server.src.mcp.FastMCP") @patch("template_mcp_server.src.mcp.logger") def test_init_failure( self, mock_logger, mock_fastmcp, mock_settings, mock_force_reconfigure ): """Test initialization failure handling.""" # Arrange mock_fastmcp.side_effect = Exception("Test error") mock_settings.PYTHON_LOG_LEVEL = "INFO" # Act & Assert with pytest.raises(Exception, match="Test error"): TemplateMCPServer() mock_logger.error.assert_called_with( "Failed to initialize Template MCP Server: Test error" ) @patch("template_mcp_server.src.mcp.force_reconfigure_all_loggers") @patch("template_mcp_server.src.mcp.settings") @patch("template_mcp_server.src.mcp.FastMCP") def test_register_mcp_tools( self, mock_fastmcp, mock_settings, mock_force_reconfigure ): """Test MCP tools registration.""" # Arrange mock_mcp = Mock() mock_fastmcp.return_value = mock_mcp mock_settings.PYTHON_LOG_LEVEL = "INFO" server = TemplateMCPServer() # Act server._register_mcp_tools() # Assert mock_mcp.tool.assert_called() @patch("template_mcp_server.src.mcp.force_reconfigure_all_loggers") @patch("template_mcp_server.src.mcp.settings") @patch("template_mcp_server.src.mcp.FastMCP") def test_register_mcp_tools_functionality( self, mock_fastmcp, mock_settings, mock_force_reconfigure ): """Test that MCP tools registration includes all expected tools.""" # Arrange mock_mcp = Mock() mock_fastmcp.return_value = mock_mcp mock_settings.PYTHON_LOG_LEVEL = "INFO" server = TemplateMCPServer() # Act server._register_mcp_tools() # Assert # Verify that tool() was called multiple times (once for each tool) assert ( mock_mcp.tool.call_count >= 3 ) # multiply_numbers, generate_code_review_prompt, get_redhat_logo def test_server_attributes(self): """Test that server has required attributes for tools-first architecture.""" # Arrange & Act with ( patch("template_mcp_server.src.mcp.settings") as mock_settings, patch("template_mcp_server.src.mcp.FastMCP"), patch("template_mcp_server.src.mcp.force_reconfigure_all_loggers"), ): mock_settings.PYTHON_LOG_LEVEL = "INFO" server = TemplateMCPServer() # Assert assert hasattr(server, "mcp") assert hasattr(server, "_register_mcp_tools") def test_tools_first_architecture_compliance(self): """Test that server adheres to tools-first architecture by not having resource/prompt methods.""" # Arrange & Act with ( patch("template_mcp_server.src.mcp.settings") as mock_settings, patch("template_mcp_server.src.mcp.FastMCP"), patch("template_mcp_server.src.mcp.force_reconfigure_all_loggers"), ): mock_settings.PYTHON_LOG_LEVEL = "INFO" server = TemplateMCPServer() # Assert - These methods should NOT exist in tools-first architecture assert not hasattr(server, "_register_mcp_resources"), ( "_register_mcp_resources should not exist in tools-first architecture" ) assert not hasattr(server, "_register_mcp_prompts"), ( "_register_mcp_prompts should not exist in tools-first architecture" )

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/redhat-data-and-ai/template-mcp-server'

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