JSON Canvas MCP Server
by Cam10001110101
Verified
- jsoncanvas
"""Error handling for JSON Canvas."""
from enum import IntEnum
from typing import Any, Optional
class ErrorCode(IntEnum):
"""Standard JSON-RPC error codes and custom error codes."""
# Standard JSON-RPC error codes
PARSE_ERROR = -32700
INVALID_REQUEST = -32600
METHOD_NOT_FOUND = -32601
INVALID_PARAMS = -32602
INTERNAL_ERROR = -32603
# Custom error codes for JSON Canvas
INVALID_NODE = -32000
INVALID_EDGE = -32001
VALIDATION_ERROR = -32002
DUPLICATE_ID = -32003
REFERENCE_ERROR = -32004
class McpError(Exception):
"""Base class for MCP errors."""
def __init__(
self,
code: ErrorCode,
message: str,
data: Optional[Any] = None
) -> None:
"""Initialize MCP error.
Args:
code: Error code from ErrorCode enum
message: Human-readable error message
data: Optional additional error data
"""
super().__init__(message)
self.code = code
self.message = message
self.data = data
def to_dict(self) -> dict:
"""Convert error to dictionary format.
Returns:
Dictionary representation of the error
"""
error_dict = {
"code": self.code,
"message": self.message
}
if self.data is not None:
error_dict["data"] = self.data
return error_dict
class ValidationError(McpError):
"""Error raised when validation fails."""
def __init__(self, message: str, data: Optional[Any] = None) -> None:
"""Initialize validation error.
Args:
message: Human-readable error message
data: Optional validation error details
"""
super().__init__(ErrorCode.VALIDATION_ERROR, message, data)
class InvalidNodeError(McpError):
"""Error raised when a node is invalid."""
def __init__(self, message: str, data: Optional[Any] = None) -> None:
"""Initialize invalid node error.
Args:
message: Human-readable error message
data: Optional node error details
"""
super().__init__(ErrorCode.INVALID_NODE, message, data)
class InvalidEdgeError(McpError):
"""Error raised when an edge is invalid."""
def __init__(self, message: str, data: Optional[Any] = None) -> None:
"""Initialize invalid edge error.
Args:
message: Human-readable error message
data: Optional edge error details
"""
super().__init__(ErrorCode.INVALID_EDGE, message, data)
class DuplicateIdError(McpError):
"""Error raised when a duplicate ID is found."""
def __init__(self, message: str, data: Optional[Any] = None) -> None:
"""Initialize duplicate ID error.
Args:
message: Human-readable error message
data: Optional duplicate ID details
"""
super().__init__(ErrorCode.DUPLICATE_ID, message, data)
class ReferenceError(McpError):
"""Error raised when a reference is invalid."""
def __init__(self, message: str, data: Optional[Any] = None) -> None:
"""Initialize reference error.
Args:
message: Human-readable error message
data: Optional reference error details
"""
super().__init__(ErrorCode.REFERENCE_ERROR, message, data)