这篇笔记我们记录: 我们使用FastMCP新建一个MCP server, 并在Cursor IDE里调用的过程。主要分为2部分

  • 使用FastMCP新建一个MCP server
  • 在Cursor里调用我们写的MCP server

会有一些概念,MCPFastMCPMCP Host(主机)MCP Client(客户端)MCP Server(服务端)),还有uvpython的新型包管理工具,@tool、@resource、@prompt 是 FastMCP(以及整个 MCP 协议生态)中最核心的三个服务器端装饰器,需要了解。

文档主要介绍实际操作的过程,没去介绍那些概念(感兴趣多查下MCP官网),希望通过操作的成果来反过来理解 这些概念,也更生动一点。

使用FastMCP新建一个MCP server
  • 使用uv新建项目
uv init mcp-server-demo

使用 uv 工具初始化一个名为 mcp-server-demo 的全新 Python 项目,会自动创建项目目录、标准化的配置文件和基础的项目结构,替代传统的手动创建 pyproject.toml、虚拟环境等操作。

  • 安装FastMcp
uv add fastmcp

安装FastMcp依赖 可以看到我用的是 最新稳定版Python 3.14.2 安装依赖后自动创建了虚拟环境, 安装FastMCP会自动安装MCP

uv 给我们初始化的项目结构截图

打开main.py, 复制如下代码,这就是我们的mcp server 代码了

# server.py 或你的主文件
from fastmcp import FastMCP

mcp = FastMCP("演示 ")


@mcp.tool()
def add(a: int, b: int) -> int:
    """将两个数字相加"""
    return a + b


@mcp.tool()
def greet(name: str, style: str = "friendly") -> str:
    """按照选择的语气向某人问好"""
    style_key = (style or "friendly").strip().lower()

    if style_key == "formal":
        return f"{name},您好!祝您一切顺利,工作生活皆如意。"
    if style_key == "casual":
        return f"{name},嘿!祝你今天心情超好,啥事都顺!"

    # 默认:友好风格
    return f"{name},你好!很高兴见到你,愿你今天平安喜乐、心想事成。"


@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """获取个性化的问候语"""
    return f"你好,{name}!"


@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
    """生成问候提示词"""
    styles = {
        "friendly": "请写一段温暖、友好的问候语",
        "formal": "请写一段正式、专业的问候语",
        "casual": "请写一段轻松、随意的问候语",
    }
    return f"{styles.get(style, styles['friendly'])},对方名字是 {name}。"


if __name__ == "__main__":
    # mcp.run(transport="streamable-http", json_response=True)
    # 或者本地调试最常用:
    mcp.run(transport="stdio")

上面的代码中,我有一个tool 问候,还有一个prompt 问候,tool问候会严格按照我的传参、定义的内容返回,prompt会由大模型自由发挥。

执行下面命令

uv run python main.py

是通过 uv 工具在项目的虚拟环境中执行 python main.py 命令,核心作用是保证脚本运行时使用的是项目专属的 Python 解释器和依赖环境,避免全局环境的依赖冲突。

我们的FastMCP
启动成功:️
当前运行中:️(只要终端没关闭、没报错退出)
通信方式:通过 stdio(命令行输入输出),适合本地快速测试 版本:在用 2.14.4(3.0 还没正式发布,提示先 pin < 3 版本以保证生产稳定)

在Cursor里调用我们写的MCP server

Cursor 调用server.py(里面有 mcp = FastMCP(...) 和各种 @tool / @prompt), 打开Cursor 找到MCP 配置

在mcp.json里写如下代码

{
  "mcpServers": {
    "demo-mcp-local": {
      "name": "Demo MCP (Local uv run)",
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "/Users/gongzemin/Documents/playground/mcp-server-demo",
        "run",
        "main.py"
      ],
      "description": "我的 FastMCP 本地演示服务器(包含加法、问候、提示模板等工具)",
      "isActive": true,
      "env": {
        "PYTHONIOENCODING": "utf-8",
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

看到我们这个MCP配置的灯是绿色的 就表示配置成功了

新建一个对话框,选择agent,提问

使用demo-mcp-local 友好的方式问候刘亦菲

就会调用我们写好的mcp-server里面@tool 这个方法,并且能识别出参数 name是刘亦菲 style是友好的

@mcp.tool()
def greet(name: str, style: str = "friendly") -> str:
    """按照选择的语气向某人问好"""
    style_key = (style or "friendly").strip().lower()

    if style_key == "formal":
        return f"{name},您好!祝您一切顺利,工作生活皆如意。"
    if style_key == "casual":
        return f"{name},嘿!祝你今天心情超好,啥事都顺!"

    # 默认:友好风格
    return f"{name},你好!很高兴见到你,愿你今天平安喜乐、心想事成。"

可以接着提问,都不用说使用demo-mcp-local

再调用下我们那个求和工具

user-demo-mcp-local 计算1109+10

我们就成功的新建了MCP server, 并在Cursor调用~

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:alixiixcom@163.com