"""Calculator service definitions for Nexus MCP integration."""
import nexusrpc
from pydantic import BaseModel, Field
from typing import List
class CalculateRequest(BaseModel):
"""Request model for mathematical expression evaluation."""
expression: str = Field(..., description="Mathematical expression to evaluate (e.g., '2 + 3 * 4')")
class CalculateResponse(BaseModel):
"""Response model for calculation results."""
result: float = Field(..., description="The calculated result")
expression: str = Field(..., description="The original expression that was evaluated")
class AddRequest(BaseModel):
"""Request model for addition operation."""
a: float = Field(..., description="First number")
b: float = Field(..., description="Second number")
class SubtractRequest(BaseModel):
"""Request model for subtraction operation."""
a: float = Field(..., description="Number to subtract from (minuend)")
b: float = Field(..., description="Number to subtract (subtrahend)")
class MultiplyRequest(BaseModel):
"""Request model for multiplication operation."""
a: float = Field(..., description="First number")
b: float = Field(..., description="Second number")
class DivideRequest(BaseModel):
"""Request model for division operation."""
a: float = Field(..., description="Dividend (number to be divided)")
b: float = Field(..., description="Divisor (number to divide by)")
class PowerRequest(BaseModel):
"""Request model for power operation."""
base: float = Field(..., description="Base number")
exponent: float = Field(..., description="Exponent")
class SumListRequest(BaseModel):
"""Request model for summing a list of numbers."""
numbers: List[float] = Field(..., description="List of numbers to sum")
class BasicOperationResponse(BaseModel):
"""Response model for basic arithmetic operations."""
result: float = Field(..., description="The calculated result")
operation: str = Field(..., description="Description of the operation performed")
@nexusrpc.service(name="Calculator")
class CalculatorService:
"""A comprehensive calculator service exposed via MCP.
This service provides various mathematical operations including:
- Expression evaluation
- Basic arithmetic (add, subtract, multiply, divide)
- Power operations
- List summation
"""
calculate: nexusrpc.Operation[CalculateRequest, CalculateResponse]
add: nexusrpc.Operation[AddRequest, BasicOperationResponse]
subtract: nexusrpc.Operation[SubtractRequest, BasicOperationResponse]
multiply: nexusrpc.Operation[MultiplyRequest, BasicOperationResponse]
divide: nexusrpc.Operation[DivideRequest, BasicOperationResponse]
power: nexusrpc.Operation[PowerRequest, BasicOperationResponse]
sum_list: nexusrpc.Operation[SumListRequest, BasicOperationResponse]