import inspect from src import server def test_fastmcp_ctor_kwargs_use_env_values(monkeypatch) -> None: monkeypatch.setenv("HOST", "0.0.0.0") monkeypatch.setenv("PORT", "7860") monkeypatch.setenv("MCP_PATH", "/custom-mcp") kwargs = server._fastmcp_ctor_kwargs_from_env() ctor_params = inspect.signature(server.FastMCP).parameters if "host" in ctor_params: assert kwargs["host"] == "0.0.0.0" if "port" in ctor_params: assert kwargs["port"] == 7860 if "streamable_http_path" in ctor_params: assert kwargs["streamable_http_path"] == "/custom-mcp" def test_fastmcp_ctor_kwargs_fallback_for_invalid_port(monkeypatch) -> None: monkeypatch.setenv("PORT", "not-a-number") kwargs = server._fastmcp_ctor_kwargs_from_env() ctor_params = inspect.signature(server.FastMCP).parameters if "port" in ctor_params: assert kwargs["port"] == server.DEFAULT_PORT def test_create_server_applies_env_network_settings(monkeypatch) -> None: monkeypatch.setenv("HOST", "0.0.0.0") monkeypatch.setenv("PORT", "9001") monkeypatch.setenv("MCP_PATH", "/mcp-test") app = server._create_mcp_server() settings = app.settings assert settings.host == "0.0.0.0" assert settings.port == 9001 assert settings.streamable_http_path == "/mcp-test" def test_generate_chart_returns_typed_image_content() -> None: out = server.generate_chart( chart_type="bar", x_values=["A", "B", "C"], y_values=[2, 4, 3], title="Typed Image", ) image_content = out.to_image_content() assert image_content.type == "image" assert image_content.mimeType == "image/png" assert len(image_content.data) > 100