FastMCP实战案例教程
我们将构建一个简单的地图查询服务,用户输入城市名称,大模型调用FastMCP工具,通过地理API查询该城市的经纬度,并将结果返回。
python3 -m venv mcp-env
source mcp-env/bin/activate
安装地图查询依赖(使用OpenStreetMap Nominatim API)
1.3 完整代码实现:地图查询工具
创建文件map_mcp_server.py:
from fastmcp import FastMCP
import requests
# 创建MCP实例
mcp = FastMCP("MapLookup")
# 定义地图查询工具
@mcp.tool()
def geo_lookup(location: str) -> dict:
"""
查询地理位置,返回经纬度等信息
"""
url = "https://nominatim.openstreetmap.org/search"
params = {
"q": location,
"format": "json",
"limit": 1
}
headers = {"User-Agent": "FastMCP-Demo/1.0"}
response = requests.get(url, params=params, headers=headers)
data = response.json()
if not data:
return {"error": f"未找到位置: {location}"}
result = data[0]
return {
"display_name": result["display_name"],
"latitude": result["lat"],
"longitude": result["lon"]
}
# 启动MCP服务
if __name__ == "__main__":
mcp.run()
在终端执行:
默认会在http://localhost:3000启动MCP服务。你将看到如下启动日志:
1.5 测试运行效果(模拟模型调用)
你可以使用Postman或CURL模拟模型调用MCP工具:
返回结果示例:
1.6 集成到大模型(如Claude、ChatGPT)
如果你使用支持MCP的大模型(如Claude 3、OpenAI GPT - 4.5 with MCP),你只需将MCP服务器地址注册为工具服务,模型即可通过自然语言调用它。示例Prompt:“请告诉我北京的经纬度”,模型会自动选择geo_lookup工具并返回准确坐标。
2.1 为什么选择FastMCP
极速开发体验:仅需3行代码即可创建具备完整功能的MCP服务器。
原生Python支持:类型注解自动验证输入参数,支持async/await异步处理,无缝集成Pydantic数据模型,兼容Pillow等主流图像库。
企业级协议支持:完整实现Model Context Protocol标准,提供资源(Resources)安全访问控制、工具(Tools)执行审计追踪、上下文(Context)进度管理、图像(Image)自动格式转换。
2.2.1 环境准备
推荐使用uv进行依赖管理:
2.2.2 创建首个MCP服务
新建server.py文件:
2.2.3 部署与测试
2.3.1 资源(Resources)管理
企业数据的安全访问通道:
2.3.2 智能工具(Tools)开发
支持复杂业务逻辑的原子操作:
2.3.3 对话提示(Prompts)模板
标准化LLM交互流程:
2.3.4 图像处理(Images)
多媒体数据无缝集成:
2.3.5 上下文(Context)管理
执行过程全生命周期控制:
2.3.6 多环境部署策略
fastmcp install server.py
2.4 企业级应用案例:智能财务助手
三、谷歌图片搜索MCP Server
在实际业务中,有时需要让AI搜索图片,例如自媒体写公众号、AI写文章批量发布等场景。本案例将指导你如何利用Fastapi - MCP快速搭建一个MCP服务器,以实现谷歌图片搜索功能。
3.2.1 先跑通代码
在谷歌创建项目project:有两种方式,方式1到谷歌云的后台创建,打开网站https://console.cloud.google.com/apis/credentials点「Create project」;方式2(推荐)直接新建一个Gemini的api key,会自动创建Project,网站https://aistudio.google.com/apikey。
获取谷歌搜索的api key:打开网站https://developers.google.com/custom-search/v1/overview?hl=zh - cn#api_key,点获取密钥,选择第一步中创建好的项目。
获取谷歌搜索引擎的id,也是cx:网站https://programmablesearchengine.google.com/controlpanel/create,填写相关信息后点「创建」,就能看到cx的值。 然后让DeepSeek帮你写谷歌图片搜索的代码。
3.2.2 把这个代码封装成Fastapi接口
让Deepseek帮你把之前的代码改成Fastapi代码。
运行python main.py,在浏览器打开端口后添加/docs的地址,就是接口的文档,见到正常的Fastapi部署页面就表示部署成功。
3.2.3 用Fastapi - MCP改造服务端
安装Fastapi - MCP,在上述fastapi代码的基础上添加相关代码。运行后可以通过http://你服务器地址:9797/mcp来访问MCP,注意如果是在本地跑,服务器地址就是localhost。
3.2.4 在AI软件中使用MCP
在Cursor可以直接用url,配置MCP Server,确保「Tools」里有对应的工具。
3.2.5 直接在对话中使用
在AI对话中输入搜索图片的提示词,例如“搜索马斯克的照片”,AI就能正确调用我们的工具。
通过以上几个实战案例,我们可以看到FastMCP在不同场景下的强大应用能力。它可以帮助开发者快速构建MCP服务器和客户端,使得大语言模型能够更好地与外部系统进行交互,获取实时信息,执行特定任务。在实际开发中,你可以根据具体需求选择合适的案例进行参考和扩展。