FastMCP 快速入门

一、简介

1.1 FastMCP

FastMCP 是构建 MCP 服务器和客户端的快速、Python 方式。

MCP:Model Context Protocol,是标准化的提供大语言模型上下文和工具的协议。

FastMCP 允许用户使用简单、符合直觉的方式构建 MCP 服务器和客户端。可以使用更简介、Python 风格的代码创建工具、暴露资源、定义提示词:

python 复制代码
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()

1.2 FastMCP 2.0 vs MCP 官方 SDK

官方 MCP 中 Python SDK 中存在 FastMCP,那是基于 FastMCP 1.0 的。

FastMCP 2.0在 1.0 的基础上进行了显著扩展,引入了强大的客户端功能、服务器代理与组合、OpenAPI/FastAPI 集成以及更多高级功能。

FastMCP 2.0 是构建现代、强大的 MCP 应用程序的推荐途径。

1.3 什么是MCP?

MCP 允许你构建服务器以安全、标准化的方式去暴露数据和工具给大语言模型。MCP 通常被描述为 "AI 的USB 接口",提供统一的方式去连接 LLMs 和资源。可以把它看作是专门为 LLM 交互的 API。MCP 服务器可以做:

  • 通过 Resources 暴露数据(可以看作是一堆 GET 接口,用来加载信息给大模型上下文)
  • 通过 Tools 提供工具(可以看作一堆 POST 接口,用来执行代码或产生一些作用)
  • 通过 Prompts 定义提示词模板(可复用的模板)

二、安装

2.1 安装FastMCP

推荐使用 uv 安装和管理 FastMCP。

如果想在项目中使用 FastMCP,可以通过下面代码添加依赖:

bash 复制代码
uv add fastmcp

或者可以用 pip 或者 uv pip 安装

bash 复制代码
uv pip install fastmcp

2.1.1 验证安装

可以通过下面命令验证是否安装成功:

bash 复制代码
fastmcp version

你应该会看到如下输出:

bash 复制代码
% fastmcp version
FastMCP version:                                                     2.3.4
MCP version:                                                         1.8.1
Python version:                                                     3.12.2
Platform:                                     macOS-15.4.1-arm64-arm-64bit
FastMCP root path: /path/to/fastmcp

2.2 从官方SDK更新

从官方 SDK 的 FastMCP 1.0更新到 FastMCP 2.0 很简单。将导包从from mcp.server.fastmcp import FastMCP改为from fastmcp import FastMCP就可以了。

python 复制代码
# 之前
# from mcp.server.fastmcp import FastMCP

# 现在
from fastmcp import FastMCP

mcp = FastMCP("My MCP Server")

三、快速开始

3.1 创建MCP服务器

一个MCP服务器就是工具、资源和其他MCP组件的集合。创建MCP服务器需要用到FastMCP类。

创建一个文件my_server.py然后添加如下代码:

python 复制代码
from fastmcp import FastMCP

mcp = FastMCP("My MCP Server")

这样就创建了一个MCP服务器了,下面来添加一些工具。

3.2 添加工具

下面添加一个打招呼的工具,编写一个函数,然后使用@mcp.tool装饰器:

python 复制代码
from fastmcp import FastMCP

mcp = FastMCP("My MCP Server")


@mcp.tool()
def greet(name: str) -> str:
  return f"Hello, {name}"

3.3 测试服务器

创建MCP客户端,并指向刚刚创建的服务器:

python 复制代码
import asyncio
from fastmcp import FastMCP, Client

mcp = FastMCP("My MCP Server")

@mcp.tool()
def greet(name: str) -> str:
    return f"Hello, {name}!"

client = Client(mcp)

async def call_tool(name: str):
    async with client:
        result = await client.call_tool("greet", {"name": name})
        print(result)

asyncio.run(call_tool("Ford"))

这里需要注意几点:

  • 客户端是异步的。
  • 在使用客户端前,需要使用 async with client 进入客户端上下文,在一个客户端可以调用多次 call。

3.4 运行服务器

为了用 Python 运行 MCP 服务器,需要添加 run 语句在__main__中:

python 复制代码
from fastmcp import FastMCP

mcp = FastMCP("My MCP Server")

@mcp.tool()
def greet(name: str) -> str:
    return f"Hello, {name}!"

if __name__ == "__main__":
    mcp.run()

这样我们就可以使用python my_server.py运行 MCP 服务器。

3.4.1 用Python与服务器交互

现在可以像和其他第三方 MCP 服务器一样进行交互。

创建客户端并指向服务器文件:

python 复制代码
import asyncio
from fastmcp import Client

client = Client("my_server.py")

async def call_tool(name: str):
    async with client:
        result = await client.call_tool("greet", {"name": name})
        print(result)

asyncio.run(call_tool("Ford"))
相关推荐
xrlfreedom10 小时前
MCP 面试高频考点:本地 MCP Server 改造成远程服务,安全与 Tools 设计怎么落地
tools·mcp·提示注入防护·python mcp sdk
星云低代码开发平台10 小时前
AI 连接器运行健康度:指标、异常恢复和联调清单
大数据·运维·网络·数据库·人工智能·mcp
po_potato12 小时前
Hermes Agent 安装与 MCP 配置教程
教程·开发工具·mcp·hermes agent
goehou12 小时前
MCP 传输方式实战:stdio、Streamable HTTP、WebSocket 该选哪个
python·llm·agent·教程·mcp
xrlfreedom12 小时前
MCP 面试高频考点:给远程 Server 加日志、指标、追踪,OAuth 与 JSON Schema 怎么落地
docker·json schema·mcp·oauth 2.1
goehou1 天前
MCP 查数实战:让 LLM 安全地查数据库(只读账号、SQL 校验、参数漂移)
数据库·ai·llm·教程·mcp·function calling
网络毒刘1 天前
国庆后开工第一周:用一张 Cursor 能力地图安排学习路径(Rules→MCP→工作流)
cursor·工作流·rules·mcp·学习路径
code2cat1 天前
【随笔】MCP输入Schema:把参数错误拦在工具执行之前
python·json schema·ai agent·mcp
iwgh2 天前
XiaoMate功能介绍: 待办提醒 - 私人事务,不上云才安心
mcp·xiaomate·小美同学·提醒待办
xrlfreedom2 天前
MCP 面试高频考点:如何为 stdio 传输的 MCP 服务编写可重复执行的 Prompts 集成测试
prompts·mcp·stdio 传输