大模型如何调起MCP服务

1,149 阅读1分钟

关键步骤:

  1. MCP服务器配置(在mcp.json中):
{
  "mcpServers": {
      "image-gen": {
          "command": "python",
          "args": [
              "server.py"
          ],
          "cwd": "C:\\Users\\chow\\project\\Coding\\image-gen-server"
      }
  }
}
  1. FastMCP服务器初始化(在server.py中):
from fastmcp import FastMCP
mcp = FastMCP("image-gen-server")  # 创建MCP服务实例
  1. 工具注册和定义:
@mcp.tool("generate_image")  # 注册工具
async def generate_image(prompt: str, file_name: str, ...):
    # 工具实现

调用流程如下:

  1. 服务器启动阶段
    • Cursor IDE 读取mcp.json配置
    • 根据配置启动Python服务器
    • FastMCP服务器初始化并注册工具
  2. 通信建立
    • 大模型通过MCP协议与服务器建立连接
    • 服务器暴露已注册的工具接口
  3. 工具调用
    • 大模型识别到需要生成图片的请求
    • 通过MCP协议调用generate-image工具
    • 传递必要的参数(prompt、文件名等)
  4. 返回结果
    • 服务器处理请求并生成图片
    • 通过MCP协议返回结果给大模型 具体示例代码:
# 大模型调用 MCP 服务的示例
response = await mcp.invoke("generate_image", {
    "prompt": "图片描述文本",
    "file_name": "output.jpg",
    "save_folder": "保存路径",
    "width": 1024,
    "height": 576
})

关键点:

  1. MCP 服务需要先注册工具
  2. 工具需要定义清晰的参数接口
  3. 通信采用异步方式
  4. 返回结果需要符合 MCP 协议规范 这就是为什么当我们之前遇到 "client closed" 或 "failed to create client" 错误时,需要检查:
  5. MCP 服务是否正确启动
  6. 配置文件是否正确 3 .依赖包是否完整安装
  7. 工具是否正确注册 通过这种方式,大模型可以方便地调用外部服务来扩展其功能,比如生成图片、处理文件等。