MCP Python SDK 快速上手教程:5步构建你的第一个AI应用
Model Context Protocol (MCP) Python SDK 是一个强大的开源工具,它让开发者能够轻松构建连接大型语言模型(LLM)的服务器和客户端。通过标准化的协议,MCP将上下文提供与LLM交互分离,为AI应用开发带来了全新的可能性。
🚀 快速入门:5分钟搭建你的第一个MCP服务器
环境准备
首先确保你的系统已安装Python 3.8+,然后通过以下命令安装MCP SDK:
pip install "mcp[cli]"
第一步:创建基础服务器
让我们从一个简单的计算器服务器开始,这是理解MCP核心概念的最佳方式:
from mcp.server.fastmcp import FastMCP
# 创建MCP服务器实例
mcp = FastMCP("计算器服务")
# 添加加法工具
@mcp.tool()
def add(a: int, b: int) -> int:
"""计算两个整数的和"""
return a + b
# 添加动态问候资源
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""生成个性化的问候语"""
return f"你好,{name}!欢迎使用MCP服务"
# 运行服务器
if __name__ == "__main__":
mcp.run(transport="stdio")
第二步:添加更多实用工具
扩展你的服务器功能,添加更多有用的工具:
@mcp.tool()
def multiply(x: float, y: float) -> float:
"""计算两个数的乘积"""
return x * y
@mcp.tool()
def get_weather(city: str) -> str:
"""获取城市天气信息(示例)"""
return f"{city}的天气:晴朗,25°C"
第三步:运行和测试服务器
保存代码为server.py,然后在终端中运行:
python server.py
你的第一个MCP服务器现在已经开始运行了!
📊 核心概念解析:理解MCP的工作原理
工具(Tools):让AI执行操作
工具是MCP服务器中最核心的功能,它们允许LLM通过你的服务器执行具体操作。每个工具都应该有清晰的描述和类型注解:
@mcp.tool()
def calculate_bmi(weight: float, height: float) -> float:
"""计算身体质量指数(BMI)"""
return weight / (height ** 2)
资源(Resources):为AI提供数据
资源类似于REST API中的GET端点,它们提供数据但不执行复杂计算:
@mcp.resource("config://app/settings")
def get_app_settings() -> str:
"""获取应用程序配置"""
return """
{
"theme": "dark",
"language": "zh-CN",
"auto_save": true
}
🛠️ 进阶功能:构建生产级应用
使用上下文对象
上下文对象为工具提供强大的附加功能,包括日志记录、进度报告等:
@mcp.tool()
async def process_data(data: str, ctx) -> str:
"""处理数据并记录进度"""
await ctx.info("开始处理数据")
# 模拟处理进度
for i in range(5):
progress = (i + 1) / 5
await ctx.report_progress(
progress=progress,
message=f"处理进度:{i + 1}/5"
)
return f"处理完成:{data}"
结构化输出
MCP支持结构化数据输出,让客户端能够更好地处理返回结果:
from pydantic import BaseModel
class WeatherData(BaseModel):
temperature: float
humidity: float
condition: str
@mcp.tool()
def get_detailed_weather(city: str) -> WeatherData:
"""获取详细的天气数据"""
return WeatherData(
temperature=22.5,
humidity=45.0,
condition="晴朗"
)
🌟 实际应用场景
场景一:智能客服助手
@mcp.tool()
def answer_customer_question(question: str) -> str:
"""回答客户问题"""
return f"关于'{question}'的回答:我们提供24/7客户支持服务"
场景二:数据分析工具
@mcp.tool()
def analyze_dataset(dataset_name: str, analysis_type: str) -> str:
"""分析数据集"""
return f"正在对{dataset_name}进行{analysis_type}分析..."
🔧 部署与集成
在Claude Desktop中集成
将你的MCP服务器集成到Claude Desktop中:
claude mcp add --transport stdio my-server "python /path/to/server.py"
使用HTTP传输
对于需要远程访问的场景,可以使用HTTP传输:
if __name__ == "__main__":
mcp.run(transport="streamable-http", host="0.0.0.0", port=8000)
❓ 常见问题解答
Q: MCP服务器与普通API有什么区别?
A: MCP专门为LLM交互设计,提供更自然的上下文管理和工具调用机制。
Q: 如何处理长时间运行的任务?
A: 使用上下文对象的进度报告功能,可以实时向客户端反馈任务执行状态。
Q: 可以同时运行多个MCP服务器吗?
A: 是的,MCP支持多服务器并行运行,每个服务器可以专注于不同的功能领域。
📈 项目生态与发展
MCP Python SDK拥有丰富的生态系统,包括:
- MCP Inspector:用于测试和调试MCP服务器的工具
- 示例项目:提供多种使用场景的参考实现
- 社区资源:活跃的开发者社区和持续更新的文档
通过本教程,你已经掌握了MCP Python SDK的核心使用方法。现在可以开始构建你自己的AI应用,将大型语言模型的能力与你的业务需求完美结合!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




