关键步骤:
- MCP服务器配置(在mcp.json中):
{
"mcpServers": {
"image-gen": {
"command": "python",
"args": [
"server.py"
],
"cwd": "C:\\Users\\chow\\project\\Coding\\image-gen-server"
}
}
}
- FastMCP服务器初始化(在server.py中):
from fastmcp import FastMCP
mcp = FastMCP("image-gen-server") # 创建MCP服务实例
- 工具注册和定义:
@mcp.tool("generate_image") # 注册工具
async def generate_image(prompt: str, file_name: str, ...):
# 工具实现
调用流程如下:
- 服务器启动阶段
- Cursor IDE 读取mcp.json配置
- 根据配置启动Python服务器
- FastMCP服务器初始化并注册工具
- 通信建立
- 大模型通过MCP协议与服务器建立连接
- 服务器暴露已注册的工具接口
- 工具调用
- 大模型识别到需要生成图片的请求
- 通过MCP协议调用generate-image工具
- 传递必要的参数(prompt、文件名等)
- 返回结果
- 服务器处理请求并生成图片
- 通过MCP协议返回结果给大模型 具体示例代码:
# 大模型调用 MCP 服务的示例
response = await mcp.invoke("generate_image", {
"prompt": "图片描述文本",
"file_name": "output.jpg",
"save_folder": "保存路径",
"width": 1024,
"height": 576
})
关键点:
- MCP 服务需要先注册工具
- 工具需要定义清晰的参数接口
- 通信采用异步方式
- 返回结果需要符合 MCP 协议规范 这就是为什么当我们之前遇到 "client closed" 或 "failed to create client" 错误时,需要检查:
- MCP 服务是否正确启动
- 配置文件是否正确 3 .依赖包是否完整安装
- 工具是否正确注册 通过这种方式,大模型可以方便地调用外部服务来扩展其功能,比如生成图片、处理文件等。