Skip to main content
Glama

Keboola Explorer MCP Server

test_mcp.py1.95 kB
from datetime import datetime, timedelta, timezone import pytest from pydantic import BaseModel, Field from keboola_mcp_server.mcp import _exclude_none_serializer class TestModel(BaseModel): field1: str | None = None field2: int | None = Field(default=None, serialization_alias='field2_alias') field3: datetime | None = None @pytest.mark.parametrize( ('data', 'expected'), [ (None, ''), # Case: Exclude none values from a single model (TestModel(field1='value1'), '{"field1":"value1"}'), # Case: Exclude none values from a list of models ([TestModel(field1='value1', field2=None), TestModel(field2=123)], '[{"field1":"value1"},{"field2":123}]'), # Case: Exclude none values from a dictionary with models ( {'key1': TestModel(field1='value1'), 'key2': None, 'key3': TestModel(field2=456)}, '{"key1":{"field1":"value1"},"key3":{"field2":456}}', ), # Case: Exclude none values from primitives ({'key1': 123, 'key2': None, 'key3': 'value'}, '{"key1":123,"key3":"value"}'), # Case: Exclude none values with nested structures ( {'key1': [TestModel(field1='value1'), None], 'key2': {'nested_key': TestModel(field2=789)}}, '{"key1":[{"field1":"value1"}],"key2":{"nested_key":{"field2":789}}}', ), ( { 'key1': [TestModel(field3=datetime(2025, 2, 3, 10, 11, 12, tzinfo=timezone(timedelta(hours=2)))), None], 'key2': {'nested_key': TestModel(field2=789)}, 'key3': datetime(2025, 1, 1, 1, 2, 3), }, '{"key1":[{"field3":"2025-02-03T10:11:12+02:00"}],' '"key2":{"nested_key":{"field2":789}},' '"key3":"2025-01-01T01:02:03"}', ), ], ) def test_exclude_none_serializer(data, expected): result = _exclude_none_serializer(data) assert result == expected

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

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