🚪 序章:打开智能世界的“任意门”
想象一下,有一扇门,推开它,你的AI助手不仅能和你聊天,还能帮你查天气、算账、发邮件,甚至画图、写诗。更神奇的是,这扇门背后,藏着一套让AI与外部世界高效、安全对话的“魔法协议”——这就是 Model Context Protocol(MCP)。而今天的主角 FastMCP,正是让这扇门变得又快又好用的“万能钥匙”。
🧩 MCP是什么?AI的超级接口
MCP,全称 Model Context Protocol,是一套专为大语言模型(LLM)设计的标准化协议。它像是AI世界的“万能插座”,让各种数据、工具、模板都能安全、标准地暴露给AI应用。
- 资源(Resources):像GET接口,提供数据(比如“config://app-version”返回应用版本)。
- 工具(Tools):像POST/PUT接口,执行操作(比如“add”函数帮你加法运算)。
- 提示(Prompts):可复用的交互模板,指导AI如何高效使用这些能力。
MCP的目标,就是让AI像访问网页一样,轻松访问各种数据和功能。
🏎️ FastMCP:让MCP飞起来的“加速器”
虽然MCP很强大,但自己实现却像造火箭一样繁琐。FastMCP的出现,就像给火箭装上了自动驾驶仪——你只需专注于“去哪儿”,剩下的交给它。
- 高效:用最少的代码,最快的速度,搭建MCP服务器和客户端。
- 简洁:装饰器一贴,繁琐的协议细节全自动搞定。
- Pythonic:对Python开发者来说,像写普通函数一样自然。
- 全能:不仅能做服务器,还能做客户端,MCP的核心能力全覆盖。
🛠️ 核心功能大揭秘
🏗️ 服务器端:一行代码,世界互通
FastMCP让你用最直观的方式创建MCP服务器:
from fastmcp import FastMCP
mcp = FastMCP("Demo 🚀")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
if __name__ == "__main__":
mcp.run()
只需几行代码,你的AI助手就能“学会”加法。运行方式也极其简单:
fastmcp run server.py
🤝 客户端:像点外卖一样调用AI服务
FastMCP的客户端让你用Python代码轻松与任何MCP服务器互动:
from fastmcp import Client
async with Client("path/to/server") as client:
result = await client.call_tool("weather", {"location": "San Francisco"})
print(result)
无论是本地脚本、远程服务器,还是Web API,FastMCP都能帮你“一键直达”。
🆕 v2新特性:进化的“超能力”
FastMCP 2.0在1.0的基础上,带来了更多“黑科技”:
- 代理服务器:让你的MCP服务器变身“中转站”,比如把本地脚本通过Web暴露给外部。
- 服务器组合:像搭积木一样,把多个MCP服务器拼成一个超级应用。
- OpenAPI/FastAPI自动生成:已有Web API?一键变成MCP服务器。
- LLM采样:服务器可以请求客户端的LLM生成内容,实现更灵活的AI协作。
🧑🔬 核心概念深度游
🏢 FastMCP服务器:你的AI“总部”
FastMCP对象就是你的MCP应用大本营,负责所有连接、协议细节和路由。
from fastmcp import FastMCP
mcp = FastMCP("My App", dependencies=["pandas", "numpy"])
你甚至可以指定依赖包,部署时自动安装,省心省力。
🛠️ 工具(Tools):让AI动手做事
只需一个装饰器,任何同步或异步函数都能变成AI可调用的“工具”:
@mcp.tool()
def get_stock_price(ticker: str) -> float:
"""Gets the current price for a stock ticker."""
prices = {"AAPL": 180.50, "GOOG": 140.20}
return prices.get(ticker.upper(), 0.0)
复杂输入?用Pydantic模型轻松搞定。
📦 资源(Resources):让AI随时查数据
资源主要用来暴露数据,像GET接口一样:
@mcp.resource("config://app-version")
def get_app_version() -> str:
return "v2.1.0"
支持动态URI模板,参数自动传递。
📝 提示(Prompts):AI的“剧本”
提示是可复用的对话模板,帮AI更好地理解和使用你的服务:
@mcp.prompt()
def ask_review(code_snippet: str) -> str:
return f"请帮我审查以下代码:\n```python\n{code_snippet}\n```"
🧠 上下文(Context):AI的“千里眼”与“顺风耳”
在工具或资源函数中加入Context
参数,获得日志、进度、资源访问等超能力:
from fastmcp import Context
@mcp.resource("system://status")
async def get_system_status(ctx: Context) -> dict:
await ctx.info("Checking system status...")
await ctx.report_progress(1, 1)
return {"status": "OK", "load": 0.5, "client": ctx.client_id}
🖼️ 图片处理:让AI“看得见”世界
只需用Image
类,AI就能生成并返回图片:
from mcp.server.fastmcp import Image
@mcp.tool()
def create_thumbnail(image_path: str) -> Image:
# 生成缩略图并返回
...
🔗 MCP客户端:万物互联的“万能遥控器”
FastMCP的Client
类让你用Python代码与任何MCP服务器互动,支持多种传输协议:
- SSETransport:Web服务常用
- PythonStdioTransport:本地脚本
- FastMCPTransport:进程内直连
- WSTransport:WebSocket
自动检测协议,连接无忧。
🧪 LLM采样:让AI“互相请教”
服务器可以请求客户端的LLM生成内容,实现“你问我答”的协作模式:
@mcp.tool()
async def generate_poem(topic: str, context: Context) -> str:
response = await context.sample(
f"写一首关于{topic}的诗",
system_prompt="你是一位才华横溢的诗人。"
)
return response.text
客户端自定义采样逻辑,安全又灵活。
🗂️ Roots访问:安全的文件边界
客户端可指定可访问的文件根目录,服务器只能操作这些路径,保障数据安全。
🧬 高级玩法:MCP的“变形金刚”
🛰️ 代理服务器:协议转换的“变形器”
让本地脚本通过Web暴露,或为现有服务加上认证、日志等功能:
proxy_client = Client(transport=PythonStdioTransport('path/to/original_stdio_server.py'))
proxy = FastMCP.from_client(proxy_client, name="Stdio-to-SSE Proxy")
proxy.run(transport='sse')
🏗️ 服务器组合:模块化的“超级工厂”
把多个MCP服务器拼成一个大应用,自动处理前缀,避免冲突:
mcp.mount("weather", weather_mcp)
mcp.mount("news", news_mcp)
🔄 OpenAPI/FastAPI自动生成:API一键升级为MCP
已有的FastAPI或OpenAPI接口,直接变成MCP服务器,无缝集成AI能力。
🖥️ 部署与运行:三种模式,随心选择
- 开发模式:
fastmcp dev
,适合测试和调试。 - Claude Desktop集成:
fastmcp install
,一键集成到Claude桌面应用。 - 直接运行:
python your_server_file.py
,自定义部署,灵活掌控。
🧑💻 贡献与社区:共建AI新生态
FastMCP是开源项目,欢迎任何人贡献代码、提出建议。只需fork、创建分支、提交PR,就能参与到AI基础设施的建设中。
🗂️ 图表与示例
MCP Inspector界面示意
📚 参考文献
- FastMCP 官方文档:https://gofastmcp.com
- Model Context Protocol 官网:https://modelcontextprotocol.io
- FastMCP GitHub 仓库:https://github.com/jlowin/fastmcp
- FastMCP Python SDK:https://github.com/modelcontextprotocol/python-sdk
- Claude Desktop 应用:https://claude.ai/download
🎬 结语:让AI世界“快”起来
FastMCP就像一条高速公路,把AI的能力、安全性和可扩展性推向新高度。无论你是AI开发者、数据科学家,还是对智能世界充满好奇的探索者,FastMCP都能帮你用最简单的方式,打开AI与世界对话的大门。未来已来,快来体验这场“快如闪电”的智能革命吧!