Lazy loaded image
记录-MCP:FastMCP创建server方法(一)
字数 2128阅读时长 6 分钟
2026-5-14
2026-5-17
AI智能摘要
GPT
这里是萌新AI,这篇文章介绍了如何使用 FastMCP 创建 MCP 服务器。文章首先指出 Function Call 存在不同厂商不兼容、迁移困难的问题,然后引出 Anthropic 定义的 MCP 协议,该协议像 HTTP 一样让不同客户端和服务端统一通信。接着,文章详细讲解了通过 FastMCP 创建服务器端的方法,并在编辑器和浏览器插件中进行了测试。
URL
type
Post
status
Published
date
May 14, 2026
slug
mcp_server
summary
MCP server
tags
实用教程
Python
大模型
推荐
category
大模型
icon
password
😀
本篇博客主要用于记录MCP的Python-JDK中FastMCP的使用教程。FastMCP就像已经组装好的小米汽车,用户不需要了解其中的原理,可以直接使用。那么这篇博客,博主会详细讲解通过FastMCP来创建server端,并在编辑器插件和浏览器插件进行测试。
Tips
  • 准备工具
    • vscode
    • uv包管理器
    • vscode插件
      • Lingma - Alibaba Cloud AI Coding Assistant
    • 谷歌浏览器插件
      • MCP Security Inspector (MCP)

📝 MCP简介

在介绍MCP前,不得不先说一下Function cal的概念。Function cal为大模型或者智能体提供了可调用的工具。但是,Function cal存在一些局限性:不同的商家会生产自己的Function call,这种会导致用户很难同时使用不同商家的Function call工具函数。同时,Function call迁移特别困难,如果博主想将一个项目中的Function cal的工具函数迁移到另一个项目,那么需要重新整理Function call的代码。
针对上述的Function cal问题,Anthropic定义了一套协议:MCP。像HTTP协议一样,让不同类型的客户端和服务端都能通过HTTP协议通信。
与HTTP协议一样,MCP也拥有客户端和服务端。服务端部署在远程服务器中,客户端安装在主机电脑上。那么,MCP是由服务端(Server)、客户端(Client)和主机(Host)三个部分组成。主机(Host)承载MCP客户端(Client)。MCP客户端(Client)和MCP服务端(Server)之间通过MCP协议通信。
MCP的客户端和服务端间数据通信是基于JSON-RPC 2.0协议的。伙伴们不需要特别了解这个协议,只需要知道协议的格式是JSON格式即可。
MCP协议就像一个中转站,各种Function call工具部署到MCP服务器,MCP客户端通过MCP协议中转站调用各种工具函数。说的直白一些就是一个转换接口,通过这个转换接口去关联不同类型的函数工具。
notion image

🤗 FastMCP-Server

接下来,博主详细讲解如何通过FastMCP去构建MCP服务,并通过Lingma - Alibaba Cloud AI Coding Assistant和MCP Security Inspector工具进行测试。
FastMCP可以创建三种类型的工具:resource、prompt、tool。其中,resource读取文件资源,prompt读取提供的提示词,tool就是各种函数。大模型(智能体)可以主动调用tool,但是无法主动获取resource和prompt。
开始之前,我们必须要知道:如何引入FastMCP?

resource

resource是文件资源的标记。博主通过FastMCP的resource装饰器来标记函数。装饰器本质就是在原函数的基础上增加额外的功能。
接下来,请随博主一起看一个简单的例子:
看起来,整个代码有点复杂。博主这里分模块为大家讲解:
其中,TransportSecuritySettings这个类是为了解决浏览器中插件无法加载到MCP服务的问题。浏览器插件加载MCP服务的时候会碰到CORS(跨域请求验证)和允许通过的主机名问题。
为什么会有这种问题呢?因为原SDK中默认了CORS和主机允许通过的范围。如下图:
notion image
但是,在实际测试中,我们无法在浏览器中指定origins。如下图:
notion image
从中可以看到,浏览器中MCP Security Inspector插件的CORS(origin)请求值为chrome-extension://opajbcoflmgkjmjafchlgehgllbekgeo。所以,博主使用*来表示允许任意的链接通过。
Starlette这个类主要用于将多个mcp服务同时并一起启动。
uvicorn这个类主要用于异步启动mcp服务。伙伴们不需要详细了解uvicorn,会使用即可。
我们通过MCP Security Inspector插件来看一下测试结果:(填写完成,然后点击连接)
notion image
notion image
notion image
notion image
notion image
到了这里伙伴们会不会有一个疑惑:大模型(智能体)无法直接调用resource,那么我们如何使用MCP的resource服务呢?
其实,resource服务是用于大模型(智能体)前对文本上下文的一个预处理。大家可以理解为:根据用户输入的问题,经过向量检索规则匹配或者关键词匹配获取所需要的上下文文本资源。向量检索是将资源的描述进行向量化,不是资源的文本内容。规则匹配和关键词匹配是将resource做了一个资源映射列表,通过匹配关键字来选择使用哪几个资源。
博主准备完成MCP的client内容后,完成上诉向量检索规则匹配或者关键词匹配的代码测试。

prompt

prompt主要用于大模型(智能体)提示词服务。通过prompt服务获取目标提示词。代码大部分与resource相似,只是@装饰器不同。博主在这里不再讲解重复的模块内容。
注意:hy-tmp/mcp_learn/prompt/{text}这个是提示词的文件地址。其中,text是包含后缀的文件名。
首先,博主创建了两个提示词文件。如下图:
notion image
接着,启动prompt服务。如下图:( MCP_Simples/selectPrompt.py 是代码文件)
notion image
再接着,给MCP Security Inspector插件添加配置信息。如下图:
notion image
最后,输入文件名进行测试。如下图:
notion image

🤗 总结归纳

以上便是FastMCP中server中的resource和prompt的使用方法。大家需要知道大模型(智能体)无法通过语义理解主动筛选调用resource和prompt服务。

📎 参考文章

💡
欢迎您在底部评论区留言,一起交流~
 
上一篇
记录-Docker:pull 和 run镜像备忘录
下一篇
记录-MCP:FastMCP创建server方法(二)

评论
Loading...