Source code for dataio.mcp.types
"""
Type definitions for the DataIO MCP server.
"""
from dataclasses import dataclass, field
from typing import Any, Literal
from enum import Enum
[docs]
class ToolName(str, Enum):
"""Available MCP tools."""
SEARCH_DATASETS = "search_datasets"
GET_DATASET_DETAILS = "get_dataset_details"
LIST_CATEGORIES = "list_categories"
LIST_DATA_OWNERS = "list_data_owners"
GET_DOWNLOAD_INFO = "get_download_info"
GET_DATASET_SCHEMA = "get_dataset_schema"
[docs]
@dataclass
class ToolResult:
"""Result from a tool execution."""
success: bool
data: Any = None
error: str | None = None
[docs]
@dataclass
class ToolError:
"""Error from a tool execution."""
code: str
message: str
details: dict | None = None
[docs]
@dataclass
class UserContext:
"""Context about the user making the request."""
email: str
is_admin: bool = False
groups: list[str] = field(default_factory=list)
[docs]
@dataclass
class ToolDefinition:
"""Definition of an MCP tool."""
name: str
description: str
input_schema: dict
# Bedrock-compatible tool format
[docs]
@dataclass
class BedrockToolSpec:
"""Tool specification in AWS Bedrock format."""
name: str
description: str
input_schema: dict
[docs]
def to_bedrock_format(self) -> dict:
"""Convert to Bedrock API format."""
return {
"toolSpec": {
"name": self.name,
"description": self.description,
"inputSchema": {
"json": self.input_schema
}
}
}