Mcp协议解析
从上文 中,介绍了MCP 协议的基本内容,如何使用以及如何基于 stdio transport 开发mcp server 。 本文主要介绍下mcp协议的实现细节。通过从0开始开发一个mcp server, 并且通过日志的方式记录mcp client 和 mcp server 之间的数据是如何交互的。 开发思路是通过 stdio 进行数据读取,然后写入到日志中。注册到 cline 中这样就能接受到 mcp client 的请求了。 通过mcp 协议规范,处理请求,然后返回respone 数据。 处理完一种请求后,不断的更新服务,不断的和mcp client 进行交互,进入下一轮请求,循环往复,直至一个完整的链路完成。 MCP 协议使用 JSON-RPC格式,具体的request,response schema 可以参考这里。 全部的源码参考这里。 还是使用 Tools 走通整个链路。 下图中可以看出 Server 启动时,client 就是发起初始化请求,Server 要把相应的能力高速 Client (Resource, Promot, Tool)。 假设如果只支持 Tool 能力,client 会发起 tools/list 请求,把所有的工具信息获取到。包括 名称、参数列表、描述等等。 如果用户发起了请求, Client 会把用户的提示 + tools 列表信息给到 LLM LLM 会选择格式的工具,并组装请求高速 Client Client 发起tools/call 调用, mcp server 执行相应的工具功能 返回请求后,client 把结果告诉LLM, LLM 进行总结后,输出到客户。 我们看下核心的代码功能。 实际就是监听标准的输入,解析出 method 方法,然后进行相应的处理。...