MCP Server搭建

准备环境,并初始化项目目录

Python版本的MCP servers开发过程用uv管理是最连贯的,本文全程以uv命令演示。

# 1、安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 初始化项目目录
  uv init mcp-calculator && cd mcp-calculator

# 创建隔离环境并激活
uv venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 安装核心依赖
uv add "mcp[cli]"

另外,您需要一个支持使用 MCP 协议调用工具的 LLM 应用程序,即“MCP 客户端”,例如 Cherry Studio、Claude Desktop、Cursor 或 Cline。

本地MCP Server测试(stdio测试)

本文以一个简单的当前时间实现,演示如何用FastMCP开发一个MCP服务。

在上一步创建的项目中,创建TestMCP.py文件,放在TestMCP目录下,TestMCP.py里的内容如下:


from mcp.server.fastmcp import FastMCP
from datetime import datetime

mcp = FastMCP("TestMCP") # 这个demo 就是MCP Server的名字
@mcp.tool()
def get_current_time():
    """
    获取当前时间的函数,输入格式为{“time”: YYYY-MM-DD HH:MM:SS}.

    参数:
    无

    返回:
    字典,包含当前时间的字符串表示
    """

    # 获取当前日期和时间
    now = datetime.now()

    # 将日期和时间格式化为字符串
    formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")

    # 创建包含当前时间的字典
    current_time = {"time": formatted_time}

    return current_time

if __name__ == '__main__':
    print("Starting MCP Server...")
    mcp.run(transport='stdio')
 

客户端测试您的MCP server(可选)

一旦您的服务调试通过后,可用python命令在本地客户端中使用了,例如在Cherry Studio的MCP 服务器页面配置您的MCP服务器:

 回到对话界面,打开自己的MCP服务器,即可进行测试

 

 

远程MCP Server测试(SSE测试)

 再创建TestMCP_Calc.py文件,放在TestMCP目录下,TestMCP_Calc.py里的内容如下:

from fastmcp import FastMCP
import math

mcp = FastMCP("CalculatorService")

# 算术工具组
@mcp.tool()
def add(a: float, b: float) -> float:
    """执行浮点数加法运算"""
    return a + b

@mcp.tool()
def subtract(a: float, b: float) -> float:
    """执行浮点数减法运算"""
    return a - b

@mcp.tool()
def multiply(a: float, b: float) -> float:
    """执行浮点数乘法运算"""
    return a * b

@mcp.tool() 
def divide(a: float, b: float) -> float:
    """执行浮点数除法运算
    Args:
        b: 除数(必须非零)
    """
    if b == 0:
        raise ValueError("除数不能为零")
    return a / b

# 高级数学工具
@mcp.tool()
def power(base: float, exponent: float) -> float:
    """计算幂运算"""
    return base ** exponent

@mcp.tool()
def sqrt(number: float) -> float:
    """计算平方根"""
    return math.sqrt(number)

@mcp.tool()
def factorial(n: int) -> int:
    """计算整数阶乘"""
    return math.factorial(n)


if __name__ == "__main__":
    # mcp.run(transport='stdio')
    # 将传输模式修改为SSE
    mcp.run(transport="sse", host="0.0.0.0", port=8000)

启动MCP server

 设置dify

 MCP服务器配置

{   
    "mcpServers": {     
        "CalculatorService": {       
            "type": "sse",       
            "url": "http://10.254.2.13:8000/sse"
         }   
    } 
}

dify模型设置选择 支持函数调用

 

 

dify编排添加插件

 

问答测试

 

posted @ 2025-07-23 09:41  有何m不可  阅读(408)  评论(0)    收藏  举报