一、FastMCP 是个啥白话解释FastMCP 是一个Python 框架专门用来快速搭建MCP 服务器和客户端。MCP 全称Model Context Protocol模型上下文协议简单说就是大模型和外部世界沟通的标准化语言。想象一下大模型是个聪明的大脑但它自己没手没脚没法查天气、算数据、控制设备。MCP 就像给大脑装了个标准化的 接口让它能安全、规范地调用外部工具和获取数据而 FastMCP 就是这个接口的 快速搭建工具包让你不用懂复杂的协议细节几行 Python 就能搞定。核心作用让大模型能调用函数 / 工具比如计算器、API、自动化脚本让大模型能获取结构化数据比如用户信息、实时行情、配置参数提供安全的通信方式权限控制、数据验证标准化接口一次开发多个大模型都能用二、快速上手3 分钟搭个 MCP 服务器1. 安装 FastMCP30 秒打开命令行输入以下命令二选一推荐用 uv 更快# 方法1用pip安装 pip install fastmcp # 方法2用uv安装更快推荐 uv pip install fastmcp2. 第一个 MCP 服务器计算器 问候语2 分钟创建文件my_server.py复制以下代码# 从fastmcp库导入核心类 from fastmcp import FastMCP # 1. 初始化MCP服务器实例起个名字 mcp FastMCP(name我的第一个MCP服务器, description能算加减、会打招呼的服务器) # 2. 注册工具大模型能调用的函数类似POST接口 # 用mcp.tool装饰器把普通函数变成MCP工具 mcp.tool def add(a: int, b: int) - int: 加法运算计算两个整数的和 # 文档字符串会自动变成工具描述给大模型看 return a b mcp.tool def subtract(a: int, b: int) - int: 减法运算计算两个整数的差 return a - b mcp.tool def greet(name: str, language: str zh) - str: 根据姓名和语言生成问候语 参数: name: 要问候的人名字 language: 语言zh中文en英文默认中文 greetings { zh: f你好{name}欢迎使用FastMCP服务器~, en: fHello, {name}! Welcome to FastMCP server~ } return greetings.get(language, 你好朋友) # 语言不存在时的默认值 # 3. 注册资源大模型能获取的数据类似GET接口 # 用mcp.resource装饰器定义资源路径 mcp.resource(system_info) # 资源路径system_info def get_system_info() - dict: 获取服务器系统信息 return { server_name: 我的第一个MCP服务器, version: 1.0, functions: [add, subtract, greet], resources: [system_info] } mcp.resource(greeting://{name}) # 动态资源路径greeting://张三 def get_personalized_greeting(name: str) - str: 获取个性化问候语通过路径参数 return f欢迎你{name}这是专属你的问候~ # 4. 启动服务器默认端口8000 if __name__ __main__: mcp.run(port8000, reloadTrue) # reloadTrue代码修改后自动重启方便调试3. 启动服务器10 秒命令行输入python my_server.py看到类似这样的输出就成功了INFO: Started server process [12345] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRLC to quit)三、核心概念工具 (Tool) vs 资源 (Resource)白话理解概念白话解释类比装饰器工具 (Tool)大模型能主动调用的功能会产生计算或副作用像手机里的 APP计算器、拍照mcp.tool资源 (Resource)大模型能获取的静态 / 动态数据一般不改变系统状态像手机里的相册、通讯录mcp.resource(路径)关键区别工具需要大模型传参数执行后返回结果比如算 11资源可以通过路径直接访问获取数据比如查系统信息FastMCP 会自动帮你做这些事生成工具 / 资源的描述给大模型看验证输入参数的类型防止传错数据处理网络通信和协议封装不用你写 HTTP 接口提供标准的 MCP 协议响应格式四、客户端怎么用和大模型交互完整示例服务器搭好了怎么让大模型用它这里写一个 Python 客户端示例模拟大模型调用过程1. 客户端代码my_client.pyimport asyncio from fastmcp import Client from fastmcp.client.transports import SSETransport # 用SSE协议通信常用 async def main(): # 1. 连接到本地MCP服务器 transport SSETransport(http://localhost:8000/mcp) async with Client(transport) as client: print( 1. 获取资源system_info ) system_info await client.get_resource(system_info) print(服务器信息, system_info) print(\n 2. 获取动态资源greeting://豆包 ) greeting await client.get_resource(greeting://豆包) print(个性化问候, greeting) print(\n 3. 调用工具add(10, 20) ) add_result await client.call_tool(add, a10, b20) print(1020 , add_result) print(\n 4. 调用工具greet(豆包, en) ) greet_result await client.call_tool(greet, name豆包, languageen) print(英文问候, greet_result) print(\n 5. 调用工具subtract(50, 15) ) subtract_result await client.call_tool(subtract, a50, b15) print(50-15 , subtract_result) # 运行客户端 if __name__ __main__: asyncio.run(main())2. 运行客户端确保服务器已启动命令行输入python my_client.py预期输出 1. 获取资源system_info 服务器信息 {server_name: 我的第一个MCP服务器, version: 1.0, functions: [add, subtract, greet], resources: [system_info]} 2. 获取动态资源greeting://豆包 个性化问候 欢迎你豆包这是专属你的问候~ 3. 调用工具add(10, 20) 1020 30 4. 调用工具greet(豆包, en) 英文问候 Hello, 豆包! Welcome to FastMCP server~ 5. 调用工具subtract(50, 15) 50-15 35五、进阶玩法给大模型用的实用工具天气查询示例让我们升级服务器添加一个能查天气的工具用 requests 库调用公开 API1. 安装依赖pip install requests # 用于发送HTTP请求2. 升级后的服务器代码weather_server.pyfrom fastmcp import FastMCP import requests # 新增导入requests库 mcp FastMCP(name天气查询服务器, description能查全球天气的MCP服务器) # 新增天气查询工具 mcp.tool def get_weather(city: str, unit: str c) - dict: 查询指定城市的天气 参数: city: 城市名称如北京、上海、New York unit: 温度单位c摄氏度f华氏度默认摄氏度 返回: 包含天气状况、温度、湿度等信息的字典 try: # 调用公开天气API这里用的是wttr.in免费无需API Key url fhttps://wttr.in/{city}?formatj1 # j1表示返回JSON格式 response requests.get(url, timeout10) response.raise_for_status() # 抛出HTTP错误 data response.json() # 解析天气数据 current_condition data[current_condition][0] temp_c int(current_condition[temp_C]) temp_f int(current_condition[temp_F]) weather_desc current_condition[weatherDesc][0][value] humidity current_condition[humidity] # 根据单位返回结果 if unit f: temp temp_f unit_str °F else: temp temp_c unit_str °C return { city: city, weather: weather_desc, temperature: f{temp}{unit_str}, humidity: f{humidity}%, unit: unit } except Exception as e: return {error: f查询天气失败{str(e)}} # 启动服务器 if __name__ __main__: mcp.run(port8000, reloadTrue)3. 客户端调用天气工具修改客户端代码添加print(\n 6. 调用工具get_weather(北京) ) weather_result await client.call_tool(get_weather, city北京) print(北京天气, weather_result)运行后就能看到北京的实时天气了六、常见问题与调试技巧白话版1. 服务器启动失败检查端口 8000 是否被占用换个端口mcp.run(port8080)确保 FastMCP 版本正确pip install --upgrade fastmcp检查 Python 版本推荐 3.92. 客户端连接失败先确认服务器已启动看控制台输出检查 URL 是否正确http://localhost:8000/mcp关闭防火墙或允许 Python 访问网络3. 大模型不会调用工具确保工具函数有详细的文档字符串大模型靠这个理解工具用途类型注解要完整比如a: int不要写a用fastmcp dev server.py命令启动开发模式查看工具描述是否正确4. 怎么让 Claude / 豆包等大模型用我的服务器在大模型的设置里找到 MCP 服务器 或 工具集成 选项输入服务器地址http://localhost:8000/mcp本地或公网 IP 端口远程大模型会自动发现你的工具和资源就能直接调用了七、总结FastMCP 的核心价值FastMCP 让你用 Python 写普通函数就能给大模型提供工具和数据不用懂复杂的协议细节。它的核心优势是简单装饰器 类型注解几行代码搞定标准化遵循 MCP 协议兼容所有支持 MCP 的大模型高效自动处理类型验证、协议封装、网络通信灵活支持工具、资源、提示等多种交互方式现在你已经掌握了 FastMCP 的基本用法可以开始给大模型开发专属工具了比如连接数据库查数据控制智能家居设备自动化办公流程调用企业内部 API