From 3273747e6adf05e0a1a2d515b9a59990c977afd7 Mon Sep 17 00:00:00 2001 From: Pavan Kumar <66913595+ascender1729@users.noreply.github.com> Date: Thu, 17 Apr 2025 17:32:16 +0000 Subject: [PATCH] fix: correct imports and server setup in math and calc servers - Resolved broken or missing import statements in `math_server.py` and `calc_server.py` - Updated server initialization to ensure proper startup and output delivery --- examples/mcp_example/calc_server.py | 37 ++++++++------------- examples/mcp_example/math_server.py | 50 ++++++++++++----------------- 2 files changed, 34 insertions(+), 53 deletions(-) diff --git a/examples/mcp_example/calc_server.py b/examples/mcp_example/calc_server.py index 97ccff5f..778fd4e8 100644 --- a/examples/mcp_example/calc_server.py +++ b/examples/mcp_example/calc_server.py @@ -1,31 +1,22 @@ -import asyncio -from mcp import run -from swarms.utils.litellm_wrapper import LiteLLM +from fastmcp import FastMCP +import logging -def calculate_compound_interest(principal: float, rate: float, time: float) -> float: - """Calculate compound interest.""" - return principal * (1 + rate/100) ** time - principal +# Configure logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) -def calculate_simple_interest(principal: float, rate: float, time: float) -> float: - """Calculate simple interest.""" - return (principal * rate * time) / 100 +# Initialize MCP server +mcp = FastMCP("Calc-Server") -# Create tool registry -tools = { - "calculate_compound_interest": calculate_compound_interest, - "calculate_simple_interest": calculate_simple_interest, -} +@mcp.tool(name="compound_interest") +def compound_interest(principal: float, rate: float, time: float) -> float: + return principal * (1 + rate/100) ** time -async def handle_tool(name: str, args: dict) -> dict: - """Handle tool execution.""" - try: - result = tools[name](**args) - return {"result": result} - except Exception as e: - return {"error": str(e)} +@mcp.tool(name="simple_interest") +def simple_interest(principal: float, rate: float, time: float) -> float: + return (principal * rate * time) / 100 if __name__ == "__main__": print("Starting Calculation Server on port 6275...") - llm = LiteLLM() - run(transport="sse", port=6275, tool_handler=handle_tool) + mcp.run(transport="sse", port=6275) diff --git a/examples/mcp_example/math_server.py b/examples/mcp_example/math_server.py index efef076c..a4500cd6 100644 --- a/examples/mcp_example/math_server.py +++ b/examples/mcp_example/math_server.py @@ -1,42 +1,32 @@ -import asyncio -from mcp import run -from swarms.utils.litellm_wrapper import LiteLLM +from fastmcp import FastMCP +import logging + +# Configure logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +# Initialize MCP server +mcp = FastMCP("Math-Server") + +@mcp.tool(name="add") def add(a: float, b: float) -> float: - """Add two numbers together.""" - return a + b + return float(a) + float(b) +@mcp.tool(name="subtract") def subtract(a: float, b: float) -> float: - """Subtract b from a.""" - return a - b + return float(a) - float(b) +@mcp.tool(name="multiply") def multiply(a: float, b: float) -> float: - """Multiply two numbers together.""" - return a * b + return float(a) * float(b) +@mcp.tool(name="divide") def divide(a: float, b: float) -> float: - """Divide a by b.""" - if b == 0: + if float(b) == 0: raise ValueError("Cannot divide by zero") - return a / b - -# Create tool registry -tools = { - "add": add, - "subtract": subtract, - "multiply": multiply, - "divide": divide -} - -async def handle_tool(name: str, args: dict) -> dict: - """Handle tool execution.""" - try: - result = tools[name](**args) - return {"result": result} - except Exception as e: - return {"error": str(e)} + return float(a) / float(b) if __name__ == "__main__": print("Starting Math Server on port 6274...") - llm = LiteLLM() - run(transport="sse", port=6274, tool_handler=handle_tool) \ No newline at end of file + mcp.run(transport="sse", port=6274)