"""Pydantic schemas for MCP Server plugin.""" from __future__ import annotations from typing import Any from pydantic import BaseModel, Field class McpToolParameter(BaseModel): """Single parameter in an MCP tool definition.""" name: str type: str description: str required: bool = False default: Any | None = None class McpToolDefinition(BaseModel): """MCP tool definition returned by GET /api/v1/mcp/tools.""" name: str description: str category: str parameters: list[McpToolParameter] required_permission: str | None = None class McpToolExecuteRequest(BaseModel): """Request body for POST /api/v1/mcp/tools/{tool_name}/execute.""" arguments: dict[str, Any] = Field(default_factory=dict) class McpToolExecuteResponse(BaseModel): """Response from executing an MCP tool.""" tool: str success: bool result: Any | None = None error: str | None = None class McpServerConfig(BaseModel): """MCP server configuration for external clients.""" server_name: str = "LeoCRM" server_version: str = "1.0.0" protocol_version: str = "2024-11-05" base_url: str = "/api/v1/mcp" auth_method: str = "api-token" available_tools: list[str] = Field(default_factory=list) class McpToolListResponse(BaseModel): """Response listing all MCP tools.""" tools: list[McpToolDefinition] count: int