Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions src/sktime_mcp/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
from mcp.server.stdio import stdio_server
from mcp.types import TextContent, Tool

from sktime_mcp.composition.validator import get_composition_validator
from sktime_mcp.config import settings
from sktime_mcp.tools.classify import (
fit_predict_classification_tool,
Expand Down Expand Up @@ -391,21 +390,6 @@ async def list_tools() -> list[Tool]:
"required": ["handle"],
},
),
Tool(
name="validate_pipeline",
description="Check if a pipeline composition is valid",
inputSchema={
"type": "object",
"properties": {
"components": {
"type": "array",
"items": {"type": "string"},
"description": "List of estimator names in pipeline order",
},
},
"required": ["components"],
},
),
# -- Execution -------------------------------------------------------
Tool(
name="fit_predict",
Expand Down Expand Up @@ -888,12 +872,6 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent]:
arguments.get("cv_folds", 3),
)

elif name == "validate_pipeline":
validator = get_composition_validator()
validation = validator.validate_pipeline(arguments["components"])
result = validation.to_dict()
result["success"] = result["valid"]

# -- Data ------------------------------------------------------------
elif name == "list_available_data":
result = list_available_data_tool(arguments.get("is_demo"))
Expand Down
8 changes: 8 additions & 0 deletions tests/test_param_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,14 @@ def test_pipeline_unsafe_value_in_params_list(self):
assert result["success"] is False
assert "Unsupported type" in result["error"]

def test_pipeline_composition_check(self):
"""Invalid pipeline composition (e.g. chaining forecasters) should fail validation."""
result = instantiate_pipeline_tool(["NaiveForecaster", "ExponentialSmoothing"])
assert result["success"] is False
assert "Invalid pipeline composition" in result["error"]
assert "validation_errors" in result
assert len(result["validation_errors"]) > 0


class TestFitPredictValidation:
"""Tests for parameter validation in fit_predict tools."""
Expand Down
Loading