mcp-fastmcp

📅 发布时间:2026/7/8 10:58:58 👁️ 浏览次数:
mcp-fastmcp
文章目录一、MCP 是否一般使用fasemcp库二、fasemcp 的通行用法1. 完整示例代码2. 通行用法核心要点三、MCP的三种核心连接方式三种方式的极简示例核心差异四、MCP 面试高频考点补充内容1. 基础概念类2. 实践设计类3. 对比类高频4. 场景类总结你现在正在学习Agent相关的MCPModel Context Protocol想了解它的常用库、通行用法、三种连接方式以及面试中可能问到的核心知识点我会从基础到进阶帮你梳理清楚。一、MCP 是否一般使用fasemcp库结论fasemcp更规范的写法是fase-mcp是目前生态中最主流、最成熟的MCP实现库之一但并非唯一只是工业界和开源社区的首选。MCP本身是OpenAI定义的一套标准化协议用于Agent与工具/外部系统的通信而fasemcp是基于该协议实现的高性能、易扩展的Python库由国内开发者维护对中文场景和主流Agent框架如LangChain、AgentScope兼容性极好因此成为通行选择。其他可选库openai-mcpOpenAI官方轻量实现、langchain-mcpLangChain集成版但功能完整性和易用性远不如fasemcp。二、fasemcp 的通行用法fasemcp的核心是“定义工具→封装为MCP服务→Agent调用服务”以下是可直接运行的最简示例前置条件Python 3.9安装pip install fase-mcp1. 完整示例代码fromfasemcpimportMCPServer,MCPClient,ToolfrompydanticimportBaseModel,Field# -------------------------- 步骤1定义MCP工具业务逻辑 --------------------------# 定义工具入参用Pydantic做参数校验MCP协议要求结构化参数classCalculatorParams(BaseModel):a:floatField(description第一个数字)b:floatField(description第二个数字)op:strField(description运算类型可选 -*/)# 定义工具函数defcalculator_tool(params:CalculatorParams):简单的计算器工具实现加减乘除ifparams.op:returnparams.aparams.belifparams.op-:returnparams.a-params.belifparams.op*:returnparams.a*params.belifparams.op/:ifparams.b0:return错误除数不能为0returnparams.a/params.belse:return错误不支持的运算类型# -------------------------- 步骤2启动MCP服务端 --------------------------defstart_mcp_server():# 创建MCP服务器实例serverMCPServer()# 注册工具name是Agent调用时的标识description用于Agent理解工具用途server.register_tool(Tool(namecalculator,description用于执行加减乘除运算的工具,funccalculator_tool,params_modelCalculatorParams))# 启动服务器默认端口8000支持HTTP/JSON-RPC协议server.run(host0.0.0.0,port8000)# -------------------------- 步骤3Agent端客户端调用MCP服务 --------------------------defagent_call_mcp():# 创建MCP客户端clientMCPClient(base_urlhttp://localhost:8000)# 调用工具结构化参数传递resultclient.call_tool(tool_namecalculator,params{a:10,b:5,op:})print(f调用结果{result})# 输出调用结果15.0# 运行示例先启动服务再调用实际中服务和Agent可部署在不同机器if__name____main__:# 注意需分开运行比如先运行server再开新终端运行client# start_mcp_server() # 第一步启动服务# agent_call_mcp() # 第二步Agent调用2. 通行用法核心要点工具标准化所有工具必须通过Tool类封装入参用Pydantic模型定义保证参数结构化、可校验这是MCP协议的核心要求。服务化部署MCP工具以独立服务运行而非嵌入Agent解耦Agent逻辑和工具实现便于维护和扩展。Agent无感知调用Agent只需通过MCPClient调用工具名称和参数无需关心工具的具体实现比如计算器工具可替换为远程APIAgent代码无需修改。主流集成方式实际项目中fasemcp常与LangChain/AgentScope结合将MCP工具注册为Agent的“工具集”示例fromagentscopeimportAgent,Toolkit# 将MCP工具封装为AgentScope的Toolkitmcp_toolkitToolkit.from_mcp_client(MCPClient(base_urlhttp://localhost:8000))# 创建Agent并绑定工具agentAgent(namecalc_agent,toolkits[mcp_toolkit])三、MCP的三种核心连接方式MCP的连接方式本质是“Agent与MCP服务端的通信协议/部署形态”主流有三种连接方式核心原理适用场景优缺点1. HTTP/JSON-RPC基于HTTP协议以JSON-RPC格式传输请求/响应fasemcp默认方式大部分生产环境、跨语言调用优点简单、易调试、跨平台缺点性能略低相比RPC、无长连接2. gRPC基于Protobuf的二进制RPC协议fasemcp可通过扩展支持高并发、低延迟的内部服务优点性能高、二进制传输省带宽缺点调试复杂、跨语言需生成Protobuf文件3. 本地进程调用MCP服务与Agent运行在同一进程通过函数调用而非网络fasemcp支持本地模式开发调试、轻量Agent场景优点无网络开销、调试方便缺点无法解耦部署、不支持分布式三种方式的极简示例核心差异# 1. HTTP/JSON-RPC默认已在上面示例中展示clientMCPClient(base_urlhttp://localhost:8000)# 2. gRPC方式需先安装依赖pip install grpcio grpcio-toolsfromfasemcp.grpcimportGRPCMCPClient clientGRPCMCPClient(server_addresslocalhost:50051)# gRPC默认端口50051# 3. 本地进程调用无需启动服务直接绑定工具fromfasemcpimportLocalMCPClient local_clientLocalMCPClient()local_client.register_tool(Tool(namecalculator,funccalculator_tool,params_modelCalculatorParams))resultlocal_client.call_tool(calculator,{a:10,b:5,op:*})四、MCP 面试高频考点补充内容以下是面试中最可能问到的核心问题覆盖定义、设计、场景、对比等维度1. 基础概念类问题1MCPModel Context Protocol的核心定义和解决的问题答MCP是OpenAI提出的标准化协议用于Agent与外部工具/服务的通信交互解决传统Agent工具调用的“协议不统一、耦合度高、扩展性差”问题——比如不同工具计算器、数据库、API的调用方式统一Agent无需适配不同工具的接口。问题2MCP的核心设计原则答① 工具服务化解耦Agent和工具② 参数结构化基于Schema/Pydantic校验③ 协议标准化跨语言/跨框架兼容④ 上下文传递支持工具调用的上下文关联。2. 实践设计类问题1使用MCP设计Agent工具时如何保证工具调用的安全性答① 参数校验通过Pydantic限制参数类型/范围防止恶意输入② 权限控制MCP服务端增加鉴权比如API Key、Token③ 超时控制客户端设置调用超时避免阻塞Agent④ 异常捕获工具函数内捕获异常返回结构化错误信息。问题2MCP服务的高可用设计方案答① 多实例部署负载均衡HTTP/gRPC方式② 熔断降级Agent端对MCP调用增加熔断逻辑避免工具故障导致Agent挂掉③ 监控告警监控MCP服务的调用成功率、延迟④ 本地缓存高频工具结果缓存减少调用次数。3. 对比类高频问题1MCP 与传统的Agent工具调用比如LangChain原生Tool的区别答维度传统LangChain ToolMCP耦合度工具与Agent代码耦合同进程工具服务化与Agent解耦协议兼容性仅支持LangChain生态跨框架/跨语言Python/Java/Go扩展性新增工具需修改Agent代码新增工具只需部署MCP服务Agent无感知调试难度需调试Agent整体可独立调试MCP服务问题2MCP 与 OpenAPI/Swagger 的区别答OpenAPI是面向“人类开发者”的API文档协议MCP是面向“Agent”的工具调用协议——MCP更关注“Agent能否理解工具用途、正确传递参数”比如工具的description用于Agent的意图识别而OpenAPI更关注“开发者如何调用API”此外MCP支持上下文传递OpenAPI不支持。4. 场景类问题哪些场景适合用MCP哪些不适合答✅ 适合场景① 多Agent共用一套工具② 工具需要独立部署/迭代比如频繁更新的业务工具③ 跨语言开发Agent用Python工具用Java④ 大规模Agent集群的工具管理。❌ 不适合场景① 轻量原型开发本地调用即可无需服务化② 极低延迟要求比如微秒级响应本地调用更优③ 简单工具无结构化参数无需校验。总结核心库MCP主流使用fasemcp库其优势是易用、兼容主流Agent框架核心用法是“定义结构化工具→启动MCP服务→Agent客户端调用”。连接方式HTTP/JSON-RPC通用、gRPC高性能、本地调用调试是MCP的三种核心方式按需选择部署形态。面试重点需掌握MCP的核心定义、设计原则、与传统工具调用的区别、安全性/高可用设计以及适用场景这些是面试高频考点。