微信扫码
添加专属顾问
我要投稿
MCP服务端调试的高效工具,简化开发流程,提升调试效率。 核心内容: 1. MCP Inspector工具介绍及其对MCP服务器调试的重要性 2. 如何安装和启动Inspector工具,包括npx命令行工具的使用 3. 使用Inspector调试MCP服务器端的命令和参数传递方法
MCP Inspector 是专为 Model Context Protocol(MCP)服务器设计的交互式调试工具,支持开发者通过多种方式快速测试与优化服务端功能。
Inspector 直接通过npx运行,无需安装:
npx @modelcontextprotocol/inspector <command>
npx @modelcontextprotocol/inspector <command> <arg1> <arg2>
npx是Node.js的一个命令行工具,用于直接运行 npm 包中的命令,无需全局安装或显式指定路径。
安装nodejs就默认自带这个工具了。
https://nodejs.org/zh-cn
npx 的核心价值在于 简化开发流程,通过临时安装、版本指定和依赖隔离,解决了全局包污染和版本冲突问题。
@ 符号表示这是一个 作用域包,用于明确包的归属组织或用途。
@modelcontextprotocol 是组织名,inspector 是包名。
作用域包常见于企业级工具、框架官方包(如 @angular、@vue)或避免命名冲突的场景。
这个包在 https://www.npmjs.com/package/@modelcontextprotocol/inspector
通过 npx @modelcontextprotocol/inspector
自动临时下载运行这个包。
这里的 <command> 是指让MCP服务器端执行起来的命令。
比如你是通过 node build/index.js
执行MCP服务器端的命令,则可以用下面方式启动调试:
npx @modelcontextprotocol/inspector node build/index.js
MCP服务器启动需要参数和环境变量,也可以通过下面方式传递:
# 传递参数 arg1 arg2
npx @modelcontextprotocol/inspector build/index.js arg1 arg2
# 传递环境变量 KEY=value KEY2=$VALUE2
npx @modelcontextprotocol/inspector -eKEY=value -eKEY2=$VALUE2 node build/index.js
# 同时传递环境变量和参数
npx @modelcontextprotocol/inspector -eKEY=value -eKEY2=$VALUE2 node build/index.js arg1 arg2
# Use -- to separate inspector flags from server arguments
npx @modelcontextprotocol/inspector -eKEY=$VALUE -- node build/index.js -e server-flag
inspector会缓存最后的命令、参数、环境变量,不带这些参数,则用的是最后使用的。
Inspector 运行起来后,会启动两个服务:
在浏览器中打开 http://localhost:5173 即可使用。
当然您也可以根据需要自定义端口:
CLIENT_PORT=8080 SERVER_PORT=9000 npx @modelcontextprotocol/inspector node build/index.js
之前我们谈过:MCP的通信机制,有两种默认标准传输机制:
这里的端口3000的MCP proxy server,就是对stdio传输机制的封装,让它暴露成 HTTP with SSE 方式。
上图每个方块是一个进程,通过MCP Proxy Server启动服务端子进程(stdio 传输机制的MCP Server),这样就把stdio服务变成HTTP服务。
当使用 stdio 传输机制时,需要配置 命令、参数、运行环境变量,如下图:
注意环境变量,有些服务启动不起来,就是缺失必要的环境变量,比如PATH中缺失,导致找不到对应命令。
当使用 SSE 传输机制时,需要配置 URL地址,认证信息(目前支持的是token认证),如下图:
不论是哪种方式,点击 Connect 就可以连上MCP服务端。
我们以官方的 Fetch MCP Server 这个提取网页内容的MCP服务器来看如何使用。
https://github.com/modelcontextprotocol/servers/tree/main/src/fetch
这个工具支持将提取的网页内容转换成markdown格式,同时支持分块读取网页。
uvx mcp-server-fetch
uvx 是 uv 工具链的扩展命令
uv 是一个用 Rust 编写的极快的 Python 包和项目管理器。
https://github.com/astral-sh/uv
uvx( uv tool run
的别名)用于在临时环境中运行工具,无需安装即可调用工具。
https://docs.astral.sh/uv/guides/tools/
通过下面方式启动调试Fetch:
npx @modelcontextprotocol/inspector uvx mcp-server-fetch
Starting MCP inspector...
Proxy server listening on port 3000
? MCP Inspector is up and running at http://localhost:5173 ?
连接后,我们就可以调用这个MCP服务端的Tools、Prompts等功能了。
在 History 这里,可以看到传递的信息。
上图是 列出prompts功能返回的,可以看出发送了信息:
{
"method": "prompts/list",
"params": {}
}
真正传递的信息不止这些,还有协议版本、请求ID等信息,这个信息需要借助 Chrome 的开发者工具来看了。
使用开发者工具查看时要点:
我们用的是 SSE 协议, 发送的信息和接受的信息不在一起。
比如,Connect 的请求内容是:
{
"method":"initialize",
"params":{
"protocolVersion":"2024-11-05",
"capabilities":{
"sampling":{},
"roots":{
"listChanged":true
}
},
"clientInfo":{
"name":"mcp-inspector",
"version":"0.0.1"
}
},
"jsonrpc":"2.0",
"id":0
}
list tools 发送的命令是
{
"method": "tools/list",
"params": {},
"jsonrpc": "2.0",
"id": 1
}
调用具体函数的请求:
{
"method":"tools/call",
"params":{
"name":"fetch",
"arguments":{
"url":"https://www.weather.com.cn/weather1d/101010100.shtml"
},
"_meta":{
"progressToken":0
}
},
"jsonrpc":"2.0",
"id":2
}
上面这些都是在一个个message的请求中的,可以看到,实际的请求JSON RPC内容包含协议版本、请求ID(每次请求这个ID一定要不一样),以及不同Method特有的参数。
message的参数 sessionId 是标识不同客户端的。
返回的内容在 sse 接口,这是一个服务器端主动推的长连接接口。
随着 message 接受到不同的请求,这里会推送不同的内容。
上面是 2024-11-05 版协议的通讯方式, 按照 Replace HTTP+SSE with new "Streamable HTTP" transport
https://github.com/modelcontextprotocol/specification/pull/206
新的协议方案,过段时间,通过Chrome开发工具监控到的网络请求又会变化了。
下面是目前MCP协议的规范,我们可以在MCP Inspector调试MCP服务时看到这些。
按照 2024-11-05 版的协议
https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/
MCP 客户端与服务器之间的所有消息必须遵循 JSON-RPC 2.0规范(https://www.jsonrpc.org/specification)。
有三种基本类型的传输消息:
Responses 进一步细分为成功或错误,成功可以遵循任何 JSON 对象结构,而错误必须至少包含错误代码和消息。
协议使用基于字符串的版本标识符,格式 YYYY-MM-DD ,表示最后一次进行向后不兼容更改的日期。
当前协议版本为 2024-11-05
https://spec.modelcontextprotocol.io/specification/2024-11-05/basic/versioning/
在 initialization 时,客户端和服务器端进行版本协商,客户端和服务器可以同时支持多个协议版本,但它们 必须就会话中使用的单一版本达成一致。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-29
DeepSeek-R1本地化部署全流程
2025-03-28
他因选DeepSeek 70B 体验差,被开除
2025-03-28
AI训练平台终极构建指南:结合RoCE/IB网络、3FS存储与HAI平台
2025-03-28
微调篇「数据集构建」保姆级教程来了!
2025-03-27
olmOCR-7B:文档提取专用模型
2025-03-27
如何用 deepseek v3-0324 最新版,附常见问题和解决方案
2025-03-27
大模型微调数据生成工具Easy Dataset及KBLaM知识注入框架评析
2025-03-26
从SFT到RFT:AI模型训练的进化之路
2025-02-04
2025-02-04
2024-09-18
2024-07-11
2024-07-09
2024-07-11
2024-07-26
2025-02-05
2025-01-27
2025-02-01
2025-03-20
2025-03-16
2025-03-16
2025-03-13
2025-03-13
2025-03-11
2025-03-07
2025-03-05