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://myserver.com")  
 mcp = FastMCP("Secure Server", auth=auth)

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

 async with Client("https://secure-server.com/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://avoid.overfit.cn/post/381e204d3caf43edb11439d93c377cf0

作者:Manish Shivanandhan

目录
相关文章
|
9月前
|
数据库 Python
15 分钟用 FastMCP 搭建你的第一个 MCP Server(附完整代码)
Model Context Protocol(MCP)是一个轻量开放标准,让LLM能统一、可靠地调用外部工具。无需手写解析逻辑或维护胶水代码。核心仅三概念:Server(暴露工具)、Tool(带装饰器的函数)、Client(调用方)。FastMCP框架15分钟即可上手,支持stdio快速测试、HTTP生产部署,真正实现“写一次,随处调用”。
1417 5
15 分钟用 FastMCP 搭建你的第一个 MCP Server(附完整代码)
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
3047 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
人工智能 API 开发者
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
FastAPI-MCP是一款能将FastAPI应用端点自动转换为符合模型上下文协议(MCP)的开源工具,支持零配置自动发现接口并保留完整文档和模式定义。
6623 113
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
|
JSON JavaScript Linux
【MCP教程系列】Node.js+TypeScript搭建NPX MCP服务并自定义部署至阿里云百炼
本文介绍如何将阿里云百炼的工作流封装成MCP服务并部署,随后引入到智能体中使用。主要步骤包括:1) 封装MCP服务;2) 发布到npm官方平台;3) 在阿里云百炼平台创建自定义MCP服务;4) 在智能体中添加自定义MCP服务。通过这些步骤,用户可以轻松将工作流转化为MCP服务,并在智能体中调用。
5028 0
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
2025 1
|
人工智能 安全 Docker
打造自己的 Claude Code:LangGraph + MCP 搭建一个极简的 AI 编码助手
本文通过构建一个极简CLI编码代理,探索LangGraph与MCP服务器的底层机制。摒弃商业代理的复杂封装,验证“裸机”LLM代理在无限循环中调用工具的可行性。集成文件操作、网络搜索、GitHub交互等MCP工具,结合Pytest自动化测试与SQLite状态持久化,实现可观察、可调试的智能编码工作流,揭示模型上下文协议的核心价值与实践挑战。
2540 1
打造自己的 Claude Code:LangGraph + MCP 搭建一个极简的 AI 编码助手