MCP服务器搭建
·
MCP 全称 Model Context Protocol(模型上下文协议),是由 Anthropic 推出的标准化开放协议,核心作用是让 AI 模型 / 应用与外部工具、数据源实现即插即用的协作,解决了不同系统间 “沟通规则不统一” 的问题。
相关文档:
What is the Model Context Protocol (MCP)? - Model Context Protocol
一、conda管理工具使用
我使用的是conda环境管理工具,我是使用习惯了,也可以用UV。
安装和使用参考下方链接:
二、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
结果:

更多推荐



所有评论(0)