MCP究竟是啥?一次很简单的实践

MCP 结构 首先需要一个支持MCP的客户端,可以是vscode,cursor,claude app等等。 然后在本地部署好各种server,比如百度地图,browser use等等,主要是搞一个server.py,采用FastMCP格式,定义好tools,输入参数,函数内就是具体干啥,可以是一堆python代码直接把事干完了,诸如加减乘除操作然后return,也可以是发送一个请求等待接收结果然后return。 请求外部的话,一般比如百度地图,接收请求,返回内容。所以除了自己电脑上server.py,外部工具也需要一个xxx.py来响应请求。 MCP客户端和server之间,最简单就是一个json来关联,诸如cline_mcp_settings.json。写清楚server名,怎么启动。 所以MCP究竟在干啥呢?简单理解或许就是提供了FastMCP的一套标准格式,然后各个工具内部写个xxx.py处理请求。各个用户在本地配置server.py来发送请求。然后这么一套标准化的东西整完,大模型就可以知道有哪些东西可以调用(通过cline_mcp_settings.json)。 Model server x:server.py 本地需要server.py,然后部署(给大模型看的,都会作为prompt的一部分,让大模型知道有什么函数,怎么用) 看起来就是import FastMCP,然后写函数,参数形式,发请求。 MCP客户端和MCP server的桥梁 最最简单,就是个json:cline_mcp_settings.json Remote service x 各个被调用的服务,接收server.py发送的请求,响应,然后返回。 具体例子感受下MCP过程的输入输出 只有一个MCP服务,百度地图。 q=“北京玉渊潭公园逛完还能去哪?请帮我安排一下午的行程” 这个token量看着就恐怖…. ==第一次请求:== ==输入:== 系统prompt: 你是Cline,一名拥有广泛编程语言、框架、设计模式和最佳实践知识的高技能软件工程师。 [讲了一堆工具使用规则,格式,例子] [讲了一堆已有MCP工具,使用规则,例子,把baidu_map的map.py讲了一遍] [执行模式 vs 计划模式,讲了一堆] [规则,讲了一堆] [系统信息] 操作系统:Linux 4.18 默认Shell:/bin/bash 主目录:/root 当前工作目录:/home [目标] 你通过迭代方式完成任务,将其分解为清晰步骤并系统性地完成。 分析用户任务并设定明确、可实现的目标。按逻辑顺序排列这些目标优先级。 按顺序完成这些目标,根据需要逐步使用可用工具。每个目标应对应问题解决过程中的一个独立步骤。 在调用工具前,在标签内进行分析。首先分析environment_details中提供的文件结构以获取上下文。然后思考哪个工具最适合完成任务。接着检查工具所需参数是否已提供或可合理推断。如果所有必需参数都已具备,则使用工具;否则使用ask_followup_question工具询问缺失参数。 完成任务后必须使用attempt_completion工具向用户展示结果。 用户可能提供反馈,可用于改进并重试。但不要进行无意义的来回对话。 ==输出:== 用户要求规划北京玉渊潭公园游玩后的下午行程安排 系统已连接百度地图MCP服务器,可以提供地点搜索、路线规划等功能 需要查找玉渊潭公园附近的景点、餐饮、休闲场所等 需要合理安排时间顺序和交通方式 需要提供具体的地点信息和路线建议 我将使用百度地图MCP服务器的工具来获取相关信息并规划行程。\n\n<use_mcp_tool>\n<server_name>baidu-map</server_name>\n<tool_name>map_search_places</tool_name>\n\n{\n "query": "景点",\n "region": "北京",\n "location": "39.913818,116.363625", // 玉渊潭公园坐标\n "radius": 5000 // 5公里范围内搜索\n}\n\n</use_mcp_tool>" ...

March 30, 2025 · 小茄墩