当前位置: 首页 > news >正文

[智能体-52]:MCP代码示例

一套完整、可运行、带超详细注释MCP 代码示例,包含:

  1. MCP Server(服务端)
  2. MCP Client(客户端)
  3. 基于JSON-RPC 2.0
  4. 实现最核心功能:tools/list、tools/call
  5. 全部中文注释

完全贴合你说的:MCP = 结构化 Web 服务 + 大模型可识别接口


一、MCP Server 代码(Python)

功能:提供一个查询天气的 MCP 标准工具

python

运行

# -*- coding: utf-8 -*- """ MCP Server 示例 作用:对外提供标准化的 MCP 工具(Tools) 遵循:JSON-RPC 2.0 + MCP 应用层协议 """ import json from flask import Flask, request, jsonify app = Flask(__name__) # ====================== 1. MCP 服务端能力定义(核心) ====================== # MCP 标准:必须暴露支持哪些工具,大模型/Agent 会先读取这个列表 MCP_SERVER_CAPABILITIES = { "tools": [ { "name": "get_weather", # 工具名(标准英文) "description": "查询城市天气", # 描述:大模型能看懂这个工具干嘛 "inputSchema": { # 入参结构:大模型自动生成参数 "type": "object", "properties": { "city": { "type": "string", "description": "要查询的城市名称" } }, "required": ["city"] # 必填参数 } } ] } # ====================== 2. 工具实现(业务逻辑) ====================== def get_weather(city: str) -> dict: """实际的工具功能:查询天气""" return { "city": city, "temperature": "25℃", "weather": "晴天", "wind": "微风" } # ====================== 3. MCP 标准路由(JSON-RPC 2.0) ====================== @app.route("/mcp", methods=["POST"]) def mcp_server(): """ MCP 统一入口 所有 MCP Client 都请求这里 遵循 JSON-RPC 2.0 规范 """ # 1. 获取客户端发来的 JSON-RPC 请求 req_data = request.get_json() # 2. 解析 JSON-RPC 基础字段(必须:jsonrpc, id, method) jsonrpc = req_data.get("jsonrpc") req_id = req_data.get("id") method = req_data.get("method") params = req_data.get("params", {}) # ------------------------------ # MCP 标准方法 1:获取工具列表 # ------------------------------ if method == "tools/list": return jsonify({ "jsonrpc": "2.0", "id": req_id, "result": MCP_SERVER_CAPABILITIES }) # ------------------------------ # MCP 标准方法 2:调用工具(核心) # ------------------------------ elif method == "tools/call": tool_name = params.get("name") arguments = params.get("arguments", {}) # 调用我们实现的工具 if tool_name == "get_weather": result = get_weather(**arguments) return jsonify({ "jsonrpc": "2.0", "id": req_id, "result": { "content": [ {"type": "text", "text": json.dumps(result, ensure_ascii=False)} ] } }) # ------------------------------ # 方法不存在(JSON-RPC 标准错误) # ------------------------------ return jsonify({ "jsonrpc": "2.0", "id": req_id, "error": { "code": -32601, "message": f"Method {method} not found" } }) if __name__ == "__main__": print("✅ MCP Server 启动成功:http://127.0.0.1:5000/mcp") app.run(port=5000, debug=True)

二、MCP Client 代码(Python)

功能:调用 MCP Server,模拟 AI Agent 调用外部工具

python

运行

# -*- coding: utf-8 -*- """ MCP Client 示例 作用:模拟 AI Agent / 大模型 调用 MCP 服务 遵循 JSON-RPC 2.0 + MCP 协议 """ import json import requests # MCP Server 地址 MCP_SERVER_URL = "http://127.0.0.1:5000/mcp" def rpc_request(method, params=None, req_id=1): """ 封装 JSON-RPC 2.0 请求 :param method: MCP 方法名(tools/list, tools/call) :param params: 参数 :param req_id: 请求ID(用于匹配请求响应) """ return { "jsonrpc": "2.0", # JSON-RPC 版本固定 "id": req_id, # 唯一ID "method": method, # MCP 标准方法 "params": params or {} } # ====================== 1. 第一步:获取 MCP 工具列表 ====================== print("=" * 50) print("📌 步骤1:Client 获取 Server 工具列表") resp = requests.post(MCP_SERVER_URL, json=rpc_request("tools/list")) tools_data = resp.json() print("工具列表:", json.dumps(tools_data, ensure_ascii=False, indent=2)) # ====================== 2. 第二步:调用 MCP 工具(查询天气) ====================== print("\n" + "=" * 50) print("📌 步骤2:Client 调用 MCP 工具:get_weather") call_params = { "name": "get_weather", "arguments": {"city": "北京"} } resp = requests.post(MCP_SERVER_URL, json=rpc_request("tools/call", call_params)) result = resp.json() print("调用结果:", json.dumps(result, ensure_ascii=False, indent=2))

三、运行结果(一看就懂 MCP 机制)

1. 获取工具列表(Agent / 模型先读这个)

json

{ "jsonrpc": "2.0", "id": 1, "result": { "tools": [ { "name": "get_weather", "description": "查询城市天气", "inputSchema": { "type": "object", "properties": { "city": { "type": "string", "description": "要查询的城市名称" } }, "required": ["city"] } } ] } }

2. 调用工具返回

json

{ "jsonrpc": "2.0", "id": 1, "result": { "content": [ { "type": "text", "text": "{\"city\":\"北京\",\"temperature\":\"25℃\",\"weather\":\"晴天\",\"wind\":\"微风\"}" } ] } }

四、这段代码告诉你 MCP 的本质

  1. MCP Server = 标准化 Web 服务
  2. 接口 = JSON-RPC 2.0
  3. 内容 =大模型能看懂的结构化工具
    • 工具名
    • 描述
    • 入参格式
  4. 调用 = 统一格式 tools/call

完全符合你说的:MCP 是一个结构化、标准化、可被大模型识别的 Web 服务接口。

http://www.jsqmd.com/news/887772/

相关文章:

  • 无线回散射技术与电压分复用架构在物联网传感中的应用
  • 别再让SSD越用越慢了!手把手教你检查并开启Windows/Linux/macOS的Trim功能
  • 星盘接口开发文档:星座语料接口指南
  • ARM SPE技术:硬件级性能分析与优化实践
  • 为什么苏州工厂老板都会选择响课教育做GEO优化?一文深度解读!
  • 告别黑盒:用xNIDS给深度学习入侵检测模型做个‘CT扫描’,自动生成防火墙规则
  • DeepSeek技术方案生成:从“能跑通”到“可交付”的5级成熟度跃迁路径(含Gartner对标矩阵)
  • 别再问OpenCV能干啥了!用Python+OpenCV 4.x,5分钟搞定你的第一个图像处理小程序
  • 【回眸】小红书新手运营实战指南:从账号搭建到权重引流
  • 编程语言、存储技术、数据结构、数学矩阵和系统可靠性设计范畴
  • ARM调试寄存器架构与内存映射访问机制详解
  • 别再只用ARIMA了!当数据少得可怜时,试试灰色预测GM(1,1)模型(附Python/R代码对比)
  • 避坑指南:Unity 2018/2019 WebGL透明背景设置全流程,解决PostProcess颜色异常
  • 当工控系统遇上APT:用Python模拟Stuxnet对西门子S7-315 PLC的读写攻击逻辑
  • ARM内存映射与定时器架构解析
  • Shift-JIS编码探秘:从Windows 10实战到编码原理深度解析
  • 从‘公开’到‘私有’:深入理解虚幻蓝图变量权限,打造更健壮的交互逻辑
  • ELKStack高效部署与架构解析
  • ARM架构调试寄存器HTRFCR与TRFCR详解
  • TVA 登顶工业视觉的 “iPhone 时刻”(2)
  • 低延迟可解释AI模型架构设计与边缘计算优化
  • 别再死记硬背Floyd算法了!用动态规划思想拆解‘多源最短路径’问题(附Java/Python代码)
  • C语言指针01
  • 告别Unity默认Text!手把手教你用TextMeshPro打造炫酷UI文字(附中文字体制作避坑指南)
  • ARMv8虚拟化核心:HCRX_EL2寄存器架构与配置详解
  • 用XGBoost和SHAP搞定多分类预测:一份Python 3.7下的实战避坑指南
  • 具身智能的发展面临哪些挑战?
  • Spine动画在Unity里卡顿?性能优化实战:从Draw Call、材质实例化到网格合并
  • ARM调试状态核心机制与PSTATE处理详解
  • 你的模型结果总飘忽不定?可能是异常值在捣鬼:实战对比缩尾、截尾与RobustScaler