今天主要给大家介绍一下如何使用 FastMCP 实战开发 MCP 服务。
01 MCP 和 FastMCP 简介
模型上下文协议(MCP,Model Context Protocol)是一种开放协议,其核心作用是为应用程序向大语言模型(LLM)提供上下文建立标准化规范。可以将 MCP 视为AI应用领域的 USB-C 接口——正如 USB-C 为电子设备与各类外设配件提供了通用连接标准,MCP 同样为 AI 模型与多样化数据源及工具搭建了标准化连接桥梁。
在 AI 应用越来越需要“连接外部工具”的今天,MCP 正逐渐成为行业底层标准。
过去的函数调用(Function Calling),像是给大模型一堆“遥控器”,但每一个都不兼容。而 MCP 的理念,是打通接口,让模型像人一样理解工具、协同执行任务。
MCP 本质上采用客户端-服务器架构,主体应用程序可通过该协议连接多个服务器。
MCP 的核心架构:
-
MCP 主体(Hosts):指需要通过MCP获取数据的程序,例如:Claude桌面应用、集成开发环境(IDE)或其他AI工具;
-
MCP 客户端(Clients):与服务器保持一对一连接的协议客户端程序;
-
MCP 服务器(Servers):轻量级服务程序,通过标准化的模型上下文协议(Model Context Protocol)提供特定功能;
-
本地数据源(Local Data Sources):MCP 服务器可安全访问的计算机本地文件、数据库及服务;
-
远程服务(Remote Services):MCP 服务器可通过互联网连接的外部系统(例如:通过API访问的服务)。
FastMCP 是用于模型上下文协议(Model Context Protocol)的标准开发框架。2024 年发布的 FastMCP 1.0 已被正式纳入 MCP Python SDK。
FastMCP 能够以简洁直观的方式构建 MCP 服务器和客户端,开发者可通过符合 Python 风格的代码轻松实现以下功能:
-
创建工具(Tools):以装饰器定义可执行函数,支持复杂计算或 API 调用;
-
暴露资源(Resources):通过 URI 模板安全地提供静态或动态数据;
-
定义提示(Prompts):设计可复用的交互模板,优化与大语言模型的协作;
-
扩展功能:支持上下文管理、服务器组合等高级特性。
我们将使用最新版的 FastMCP 2.0 进行 MCP 开发实战。
在正式实战前,我们可以使用 pip 的方式安装 FastMCP:
pip install fastmcp -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
02 MCP 服务端
MCP 服务端代码 fastmcp_server.py:
import os
from fastmcp import FastMCP
CURRENT_PATH = os.getcwd()
mcp = FastMCP(name="StockMCPServer")
@mcp.tool()
def get_stock_info(code: str) -> str:
"""
工具:根据股票代码获取股票信息
:param code:
:return:
"""
if code == "09988":
returnf"阿里巴巴-W,港股,股票代码为{code}"
elif code == "00700":
returnf"腾讯控股,港股,股票代码为{code}"
else:
returnf"未找到股票代码{code}对应的股票信息"
@mcp.tool()
def get_stock_price(code: str) -> float:
"""
工具:根据股票代码获取股票价格
:param code:
:return:
"""
stock_price_dict = {
"09988": 111.6,
"00700": 500.5
}
return stock_price_dict.get(code, 0.0)
@mcp.resource("config://app-version")
def get_app_version() -> str:
"""
资源:返回应用版本
:return:
"""
app_version = "v1.0.0"
return app_version
@mcp.resource("db://stocks/{code}/name")
asyncdef get_stock_name(code: str) -> str:
"""
资源:根据股票代码获取股票名称
:param code:
:return:
"""
stock_name_dict = {
"09988": "阿里巴巴-W",
"00700": "腾讯控股"
}
return stock_name_dict.get(code, "未知股票")
@mcp.resource("data://stock-codes")
def get_stock_codes() -> list[str]:
"""
资源:获取所有股票代码列表
:return:
"""
stock_code_list = ["09988", "00700"]
return stock_code_list
@mcp.prompt
def introduce_stock(code: str) -> str:
"""
提示:根据股票代码介绍股票信息
:param code:
:return:
"""
prompt = f"你能帮忙介绍一下股票代码为{code}的详细信息吗?"
return prompt
if __name__ == "__main__":
mcp.run(transport="sse", host="0.0.0.0", port=8090)
使用 IDE(如:PyCharm)将 MCP 服务端代码 fastmcp_server.py 运行起来。
03 MCP 客户端
MCP 客户端代码 fastmcp_client.py:
import asyncio
from fastmcp import Client
asyncdef run_client():
"""
运行客户端
:return:
"""
asyncwith Client("http://localhost:8090/sse") as client:
tools = await client.list_tools()
print(f"可用的工具列表: {tools}")
resources = await client.list_resources()
print(f"可用的资源列表: {resources}")
get_stock_info_result = await client.call_tool("get_stock_info", {"code": "00700"})
print(f"调用工具 get_stock_info 返回的结果 : {get_stock_info_result}")
app_version_result = await client.read_resource("config://app-version")
print(f"读取资源 config://app-version 返回的结果 : {app_version_result}")
stock_codes_result = await client.read_resource("data://stock-codes")
print(f"读取资源 data://stock-codes 返回的结果 : {stock_codes_result}")
introduce_stock_result = await client.get_prompt("introduce_stock", {"code": "00700"})
print(f"获取提示 introduce_stock 返回的结果 : {introduce_stock_result}")
if __name__ == "__main__":
asyncio.run(run_client())
使用 IDE(如:PyCharm)运行 MCP 客户端代码 fastmcp_client.py。
04 结语
相信你现在已经知道如何使用 FastMCP 实战开发 MCP 服务 。建议你不妨亲自动手去实践,体验一下开发 MCP 服务的乐趣。
05 如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓