From 6422bb5fcd5ec29d0721293d0726ec72e077d27a Mon Sep 17 00:00:00 2001 From: goulustis Date: Wed, 24 Dec 2025 13:23:15 +0800 Subject: [PATCH] make calculator into mcp server --- lang_agent/dummy/calculator.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lang_agent/dummy/calculator.py b/lang_agent/dummy/calculator.py index 20a47d1..af6eed0 100644 --- a/lang_agent/dummy/calculator.py +++ b/lang_agent/dummy/calculator.py @@ -3,6 +3,7 @@ import random from dataclasses import dataclass, field from typing import Type, List import tyro +import time from lang_agent.config import ToolConfig from lang_agent.base import LangToolBase @@ -19,9 +20,28 @@ class Calculator(LangToolBase): def calculator(self, python_expression: str) -> dict: """For mathamatical calculation, always use this tool to calculate the result of a python expression. You can use 'math' or 'random' directly, without 'import'.""" + # time.sleep(2) result = eval(python_expression, {"math": math, "random": random}) return {"success": True, "result": result} def get_tool_fnc(self): return [self.calculator] + +# Global calculator instance +calculator = Calculator(CalculatorConfig()) + +# FastMCP server setup +from fastmcp import FastMCP + +mcp = FastMCP("Calculator Server") + + +@mcp.tool() +def calculate(python_expression: str) -> dict: + """For mathematical calculation, always use this tool to calculate the result of a python expression. You can use 'math' or 'random' directly, without 'import'.""" + return calculator.calculator(python_expression) + + +if __name__ == "__main__": + mcp.run(transport="streamable-http", host="0.0.0.0", port=9000)