使用Mcp Inspector调试MCP Server

工具的介绍参考这里,使用方式也比较简单。 使用类似的命令,启动服务。 npx @modelcontextprotocol/inspector <command> 我们使用前文提到的 pairec-mcp-demo 作为参考。 启动命令 npx -y @modelcontextprotocol/inspector "/Users/bruceding 1/Projects/go/src/go-echo-mcp/pairec-mcp-demo/pairec-mcp-demo" --log_dir ./log /Users/bruceding 1/Projects/go/src/go-echo-mcp/pairec-mcp-demo/pairec-mcp-demo 是sever 的二进制路径。 --log_dir ./log 中两个是命令行的启动参数。 启动成功后,会出现如下的提示,浏览器打开相应的地址。 在打开的页面中,选择 transport type ,确认 command 和 arguments 没有问题后,点击 connect ,会返回连接成功的信息。 连接成功后,如果测试 Tools 功能,选择 Tools tab, 调用 List Tools 方法,会列出 tools 工具,进行测试即可。

March 30, 2025 · 1 min · 45 words

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 方法,然后进行相应的处理。...

March 27, 2025 · 3 min · 611 words

MCP协议介绍

MCP(Model Context Protocol,模型上下文协议) 是一个开源的协议,提供了一种通用、标准的方式把LLM AI 大模型和不同数据源以及工具连接起来。类似USB HUB 方式。 与传统调用 API 的方式不同,每个工具都有不同的调用方式,不同的AI 应用或者 LLM 调用时,都需要集成一遍。MCP 的出现,本质上来说出现一个中间层,把工具的提供方和工具的调用方进行了解耦,这样AI应用可以灵活的使用现有已经实现的工具,而不需要单独的集成,提供了开发效率。 协议架构 MCP HOSTS 面向终端用户的AI 应用,类似 Claude Desktop, IDEs 等通过MCP 协议来访问数据 MCP Client 协议的客户端,可以和mcp server 1:1 进行连接。他们之间通过 mcp 协议交互。Client 通常被集成到 host 中。 MCP Server 实现了mcp 协议的服务提供方,它会把数据源以及工具的使用通过服务暴露出去。 目前包括两种 transport layer: Stdio transport 通过标准的输入输出进行通讯(stdin, stdout) mcp server 运行在本机的进程中,比如 IDE 中的 AI 助手操作本地的终端,或者管理目录和文件等等 HTTP with SSE transport 使用 SSE 协议进行远程服务通讯 使用http post 请求方式 MCP 的协议是通过 JSON-RPC 2.0的方式来通讯的,具体协议可以参考这里。需要理解消息类型 request/response, 一个请求,正确的相应后返回 response , 具体response 业务数据封装在 result 字段中。 当请求出错的情况下,返回的错误信息封装到 error 字段中。 还有一种特殊的请求叫 Notifications , 这个请求不会带RequestId, 也不需要返回响应数据。 在MCP server 的实现中,需要定义好需要提供哪几类数据到client 使用。...

March 20, 2025 · 3 min · 440 words