手写简单的mcp并调用

前提:

python环境,PyCharm 编译工具

1.PyCharm 的File ,setting,plugin,install里去下载Cline插件

image

 2. 创建weather_mcp_server.py

"""
简单的 MCP 天气服务 - SSE 模式
天气数据写死,用于演示 MCP 调用
"""
from mcp.server.fastmcp import FastMCP
import uvicorn

mcp = FastMCP("weather-service")

# 写死的天气数据
WEATHER_DATA = {
    "北京": {"temp": "5°C", "weather": "晴", "humidity": "30%", "wind": "北风3级"},
    "上海": {"temp": "12°C", "weather": "多云", "humidity": "65%", "wind": "东风2级"},
    "广州": {"temp": "20°C", "weather": "阴", "humidity": "75%", "wind": "南风1级"},
    "深圳": {"temp": "22°C", "weather": "晴", "humidity": "70%", "wind": "东南风2级"},
    "杭州": {"temp": "10°C", "weather": "小雨", "humidity": "80%", "wind": "东风1级"},
}

@mcp.tool()
def get_weather(city: str) -> str:
    """获取指定城市的天气信息
    
    Args:
        city: 城市名称,如:北京、上海、广州、深圳、杭州
    """
    if city in WEATHER_DATA:
        data = WEATHER_DATA[city]
        return f"{city}天气:{data['weather']},温度:{data['temp']},湿度:{data['humidity']},风力:{data['wind']}"
    return f"暂不支持查询 {city} 的天气,目前支持:{', '.join(WEATHER_DATA.keys())}"

@mcp.tool()
def list_cities() -> str:
    """列出所有支持查询天气的城市"""
    return f"支持的城市:{', '.join(WEATHER_DATA.keys())}"

if __name__ == "__main__":
    # 以 SSE 模式运行,端口 8000
    mcp.run(transport="sse")

  执行函数前,需要安装

image

pip install mcp uvicorn类似于一种服务包,如果想启动一个服务需要引入。

启动 MCP SERVER服务

image

 下面配置客户端,在Cline中点击左侧上面的MCP .,  congifuaration

image

 ,

image

 

http://localhost:8000/sse是py启动的服务路径,可以在浏览器先测试一下

image

 客户端确认已经启动成功

image

 回到主界面

输入提示词即可“北京今天天气如何?”

 

image

 



posted @ 2025-12-25 12:22  蔡徐坤1987  阅读(8)  评论(0)    收藏  举报