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服务器的工具来获取相关信息并规划行程。
==第二次请求==
==输入:==多轮对话的格式,看起来是mcp调用格式不对,它在自我修正后再次请求
第一次的输入
assistant:
user:"[use_mcp_tool for ‘baidu-map’] Result:" ;“The tool execution failed with the following error:\n
==输出:==
==第三次请求:==
==输入:==前几次的拼接
==输出:==
操作指南
vscode:首先安装cline插件
Cloudflare
借助AI Gateway看看大模型api的输入输出都干了什么
openrputer获取api key
官网获取模型
填入vscode cline插件中
MCP服务以百度地图为例
首先需要在本地有配置好这个MCP server
# 按照百度地图MCP教程,在本地配置即可
uv python install 3.11
uv init baidu_map_mcp_server
uv add "mcp[cli]"
uv run mcp
# 下载百度MCP Server源码,把map.py放到文件夹内
uv run --with mcp[cli] mcp run {替换成您的路径}/baidu_map_mcp_server/map.py
# 如果没有报错则MCP Server启动成功
然后在vscode中把这个server配置进去,就是一个大json里面写着各种server的调用方式