做期货苯乙烯的网站,多合一网站建设,郑州模板建站定制网站,个人网站的内容引言#xff1a;MCP协议与FastMCP框架
Model Context Protocol#xff08;MCP#xff09;是连接AI模型与外部服务的标准化协议#xff0c;允许LLM#xff08;如Claude、Gemini#xff09;调用工具、访问数据。然而#xff0c;直接实现MCP协议需要处理JSON-RPC、会话管理…引言MCP协议与FastMCP框架
Model Context ProtocolMCP是连接AI模型与外部服务的标准化协议允许LLM如Claude、Gemini调用工具、访问数据。然而直接实现MCP协议需要处理JSON-RPC、会话管理等繁琐细节。FastMCP作为Python框架封装了这些底层逻辑让开发者专注于业务功能。本文将通过分步实战从零构建一个完整的MCP服务器涵盖工具、资源、动态模板等核心功能。
一、环境准备安装FastMCP
首先确保安装FastMCP框架推荐使用pip
pip install fastmcp二、Step 1创建基础服务器
所有FastMCP应用的起点是FastMCP类实例它作为工具、资源的容器。
代码示例
# my_mcp_server.py
from fastmcp import FastMCP# 初始化MCP服务器指定名称用于标识服务
mcp FastMCP(nameMy First MCP Server)说明
这行代码创建了一个空的MCP服务器暂时不包含任何功能。名称参数name用于区分不同服务器便于客户端识别。
三、Step 2添加工具Tools
工具是LLM可调用的函数如计算、数据处理通过mcp.tool装饰器定义。
代码示例
from fastmcp import FastMCPmcp FastMCP(nameMy First MCP Server)mcp.tool
def add(a: int, b: int) - int:Adds two integer numbers together.return a bFastMCP自动处理的细节
工具名称默认使用函数名如add。描述从函数文档字符串docstring提取供LLM理解用途。输入 schema通过类型注解a: int、b: int生成JSON schema确保LLM传入正确类型的参数。
优势无需手动定义协议格式专注函数逻辑即可。
四、Step 3添加静态资源Resources
资源是LLM可访问的只读数据如配置、知识库通过mcp.resource装饰器定义并绑定唯一URI。
代码示例
mcp.resource(resource://config)
def get_config() - dict:Provides the applications configuration.return {version: 1.0, author: MyTeam}说明
URIresource://config是资源的唯一标识客户端通过该路径访问。懒加载函数get_config仅在客户端请求时执行避免不必要的计算。返回格式支持字典、字符串等FastMCP自动序列化为JSON返回给客户端。
五、Step 4添加动态资源模板Resource Templates
资源模板允许通过URI参数生成动态内容URI中的占位符如{name}会映射为函数参数。
代码示例
mcp.resource(greetings://{name})
def personalized_greeting(name: str) - str:Generates a personalized greeting for the given name.return fHello, {name}! Welcome to the MCP server.使用方式
客户端请求greetings://Alice时FastMCP自动调用personalized_greeting(nameAlice)返回Hello, Alice!...。占位符与函数参数名必须一致如{name}对应name: str支持多个参数如greetings://{name}/{title}。
六、Step 5运行服务器
通过mcp.run()启动服务器默认使用STDIO传输适合本地客户端如Claude Desktop。
完整代码
from fastmcp import FastMCP# 1. 初始化服务器
mcp FastMCP(nameMy First MCP Server)# 2. 添加工具
mcp.tool
def add(a: int, b: int) - int:Adds two integer numbers together.return a b# 3. 添加静态资源
mcp.resource(resource://config)
def get_config() - dict:Provides the applications configuration.return {version: 1.0, author: MyTeam}# 4. 添加动态资源模板
mcp.resource(greetings://{name})
def personalized_greeting(name: str) - str:Generates a personalized greeting for the given name.return fHello, {name}! Welcome to the MCP server.# 5. 启动服务器
if __name__ __main__:mcp.run()启动命令
python my_mcp_server.py传输方式扩展
默认STDIO传输适用于本地客户端。如需HTTP服务可通过mcp.http_app()创建ASGI应用搭配uvicorn运行详见FastMCP部署文档。
七、服务器功能验证
客户端如Claude Desktop可通过以下方式交互
调用工具请求调用add工具传入a3、b5返回8。访问静态资源请求resource://config返回配置字典。访问动态资源请求greetings://Bob返回Hello, Bob!...。
八、总结FastMCP的核心优势
极简开发用Python函数装饰器定义工具和资源无需关注协议细节。自动适配自动生成schema、处理序列化确保与MCP客户端兼容。灵活扩展支持静态资源、动态模板、多传输方式STDIO/HTTP。
通过本文的步骤你已构建了一个功能完整的MCP服务器。后续可扩展更复杂的工具如数据库查询、API调用和资源如实时数据为LLM提供更强大的外部能力。