MCP 全称 Model Context Protocol(模型上下文协议),是由 Anthropic 推出的标准化开放协议,核心作用是让 AI 模型 / 应用与外部工具、数据源实现即插即用的协作,解决了不同系统间 “沟通规则不统一” 的问题。

相关文档:

Model Context Protocol

modelcontextprotocol/python-sdk: The official Python SDK for Model Context Protocol servers and clients

What is the Model Context Protocol (MCP)? - Model Context Protocol

快速入门 – Model Context Protocol (MCP)

一、conda管理工具使用

我使用的是conda环境管理工具,我是使用习惯了,也可以用UV

安装和使用参考下方链接:

Miniconda安装与使用-CSDN博客https://blog.csdn.net/xin_yao_xin/article/details/156308350?spm=1001.2014.3001.5501

二、MCP 服务端搭建

2.1、环境创建部署

创建conda环境:

conda create -n MCP_SRV python=3.10

激活conda环境:

conda activate MCP_SRV

然后将MCP添加到你的项目依赖中:

pip install "mcp[cli]"

创建文件:

# linux
touch weather_srv.py

# windows cmd
type nul > weather_srv.py

2.2、MCP服务器示例

下面是MCP服务器的一个示例

# ===================== 导入包 =====================
# FastMCP:MCP 服务的核心框架(官方推荐,最简单)
from mcp.server.fastmcp import FastMCP

# BaseModel:Pydantic 数据模型,用来定义结构化返回格式(让AI看懂)
from pydantic import BaseModel

# ===================== 初始化 MCP 服务 =====================
"""
FastMCP 作用:
创建一个 MCP 协议服务器,让 Dify/AI 可以调用你的工具

参数解释:
name          服务名称(给AI看的,随便写)
host          0.0.0.0 = 允许外部访问(Dify必须)
port          端口号(自己定,不冲突就行)
"""
mcp = FastMCP(
    name="Dify-MCP-Demo",
    host="0.0.0.0",
    port=9090
)

# ===================== 工具 1:加法计算 =====================
"""
@mcp.tool 装饰器作用:
把一个普通 Python 函数 → 变成 AI 可调用的“工具”

description:
给 AI 看的说明,AI 靠这个判断什么时候调用这个工具
"""
@mcp.tool(description="两个数字相加,返回计算结果")
def add_num(a: float, b: float) -> str:
    """
    a: 数字1
    b: 数字2
    返回:字符串结果
    """
    result = a + b
    return f"计算结果:{a} + {b} = {result}"

# ===================== 工具 2:天气查询(结构化返回) =====================
"""
BaseModel 作用:
定义“结构化数据”,让 AI 能清晰识别字段(比返回字典更标准)
"""
class WeatherResp(BaseModel):
    city: str       # 城市名
    temp: float     # 温度
    weather: str    # 天气描述
    tip: str        # 温馨提示

# 第二个工具
@mcp.tool(description="查询城市模拟天气,仅支持北京/上海/广州/烟台")
def query_weather(city: str) -> WeatherResp:
    # 模拟数据
    weather_data = {
        "北京": WeatherResp(city="北京", temp=22, weather="晴", tip="注意防晒"),
        "上海": WeatherResp(city="上海", temp=20, weather="多云", tip="适合出行"),
        "广州": WeatherResp(city="广州", temp=28, weather="小雨", tip="记得带伞"),
        "烟台": WeatherResp(city="烟台", temp=16, weather="微凉", tip="海边多穿一件")
    }

    # 找不到城市时返回默认值
    return weather_data.get(city, WeatherResp(
        city=city, temp=0, weather="未知", tip="该城市暂无数据"
    ))

# ===================== 启动服务 =====================
if __name__ == "__main__":
    """
    transport="streamable-http"
    作用:启动 HTTP 接口服务,专供 Dify 调用

    这是 Dify 唯一支持的 MCP 模式
    """
    mcp.run(transport="streamable-http")

说明:将服务接口暴露至公网网段(0.0.0.0)是为了适配 Docker 环境中部署的 Dify 大模型应用平台,实现跨环境的 LLM 应用与 MCP 服务的互联互通。

运行:

python mcp_src.py

结果:

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐