【python】样例:Calculator MCP
·
English:【python】Example:Calculator MCP-CSDN博客
相关文件:Calculator_MCP:实现简单计算器功能的MCP Server - GitCode
内容
1. Calculator.py
import math
from Logger import logger
class Calculator:
def __init__(self,ID):
self.ID=ID
logger.info('Calculator:'+str(self.ID))
def plus(self,number_a,number_b):
result = number_a + number_b
return result
def minus(self,number_a,number_b):
result = number_a - number_b
return result
def multiplication(self,number_a,number_b):
result = number_a * number_b
return result
def division(self,number_a,number_b):
result = number_a / number_b
return result
def sine(self,number_a):
result = math.sin(number_a)
return result
def cosine(self,number_a):
result = math.cos(number_a)
return result
2. Calculator_MCP.py
from fastmcp import FastMCP
import datetime
from Calculator import Calculator
from Logger import logger
# Initialize FastMCP server
mcp = FastMCP("Calculator")
calculator_01=Calculator(1)
d=datetime.datetime.now()
T=d.strftime('%Y-%m-%d %H-%M-%S')
T_0=T+'_Calculator_Data'+'.log'
f=open(T_0,mode="at")
# Initialize FastMCP server
mcp = FastMCP("Calculator")
@mcp.tool()
async def plus(a,b)->float:
"""实现两个数的加法,传入参数a和参数b,
Args:
a:被加的数
b:加上的数
"""
logger.info(f"ID: {calculator_01.ID}, Operation: plus, a: {a}, b: {b}, Result: {calculator_01.plus(a,b)}")
f.write("{0}+{1}={2}".format(a,b,calculator_01.plus(a,b)))
return calculator_01.plus(a,b)
@mcp.tool()
async def minus(a,b)->float:
"""实现两个数的减法,传入参数a和参数b,
Args:
a:被减的数
b:减去的数
"""
logger.info(f"ID: {calculator_01.ID}, Operation: minus, a: {a}, b: {b}, Result: {calculator_01.minus(a,b)}")
f.write("{0}-{1}={2}".format(a,b,calculator_01.minus(a,b)))
return calculator_01.minus(a,b)
@mcp.tool()
async def multiplication(a,b)->float:
"""实现两个数的乘法,传入参数a和参数b,
Args:
a:被乘的数
b:乘上的数
"""
logger.info(f"ID: {calculator_01.ID}, Operation: multiplication, a: {a}, b: {b}, Result: {calculator_01.multiplication(a,b)}")
f.write("{0}*{1}={2}".format(a,b,calculator_01.multiplication(a,b)))
return calculator_01.multiplication(a,b)
@mcp.tool()
async def division(a,b)->float:
"""实现两个数的除法,传入参数a和参数b,
Args:
a:被除的数
b:除去的数
"""
logger.info(f"ID: {calculator_01.ID}, Operation: division, a: {a}, b: {b}, Result: {calculator_01.division(a,b)}")
f.write("{0}/{1}={2}".format(a,b,calculator_01.division(a,b)))
return calculator_01.division(a,b)
@mcp.tool()
async def sine(a)->float:
"""计算一个数的正弦,传入参数a,
Args:
a:被计算正弦的数(弧度制)
"""
logger.info(f"ID: {calculator_01.ID}, Operation: sine, a: {a}, Result: {calculator_01.sine(a)}")
f.write("sin {0}={1}".format(a,calculator_01.sine(a)))
return calculator_01.sine(a)
@mcp.tool()
async def cosine(a)->float:
"""计算一个数的余弦,传入参数a,
Args:
a:被计算余弦的数(弧度制)
"""
logger.info(f"ID: {calculator_01.ID}, Operation: cosine, a: {a}, Result: {calculator_01.cosine(a)}")
f.write("cos {0}={1}".format(a,calculator_01.cosine(a)))
return calculator_01.cosine(a)
if __name__ == "__main__":
# Initialize and run the server
logger.info("__main__"+T)
mcp.run()
3. Logger.py
import logging
import datetime
d=datetime.datetime.now()
T=d.strftime('%Y-%m-%d %H-%M-%S')
T_0=T+'_Calculator_Data'+'.log'
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
filename=T_0
)
logger = logging.getLogger(__name__)
(一键获取完整项目代码)
注意事项
I. 类 (Class)
1. 定义 (Definition)
你的文件必须包含以下代码结构:
2. 应用 (Application)
1) 申请一个对象 (Apply For An Object)
你的文件应包含以下代码:
class <NAME OF THE CLASS>(PARENT CLASS[DEFALT:object]):
def __init__(self,<INSTANCE VARIABLE1>,<INSTANCE VARIABLE2>,……):
self. <INSTANCE VARIABLE1>=<INSTANCE VARIABLE1>
self. <INSTANCE VARIABLE2>=<INSTANCE VARIABLE2>
……
def <INSTANCE METHOD1> (self,PARAMETER1, PARAMETER2,……):
<SUBJECT OF THE METHOD>
def <INSTANCE METHOD2> (self,PARAMETER1, PARAMETER2,……):
<SUBJECT OF THE METHOD>
......
@classmethod
def <NAME OF CLASSMETHOD>(PARAMETER1, PARAMETER2,……):
<SUBJECT OF THE CLASSMETHOD >
创建对象:
2) 实例方法与类方法 (Instance Method And Class Method)
你的文件应包含调用这些方法的代码:
<NAME OF THE OBJECT>.<INSTANCE METHOD1>(PARAMETER1, PARAMETER2,……)
<NAME OF THE OBJECT>.<INSTANCE METHOD2>(PARAMETER1, PARAMETER2,……)
……
<NAME OF THE OBJECT>.<CLASSMETHOD 1>(PARAMETER1, PARAMETER2,……)
<NAME OF THE OBJECT>.<CLASSMETHOD 2>(PARAMETER1, PARAMETER2,……)
……
II. 日志记录器 (logger)
1. 定义 (Definition)
实现此功能有两种方式:一种是在新文件中编写代码然后引用它,另一种是在同一个文件中编写代码。为了方便使用,我们选择了第一个方案(创建单独的Logger.py文件)。
2. 应用 (Application)
你的文件应包含导入日志模块的代码:
import logging
import datetime
import logging import datetime # 用于生成带时间戳的日志文件名
最后,求少侠给一个:
免费的关注呗
更多推荐


所有评论(0)