对于许多在开发 MCP Server 的工程师来说,调试功能常常是一个耗时且效率不高的过程。频繁的请求、响应检查以及问题定位,往往令人感到繁琐。恰巧我最近自己在开发mcp server的过程中,发现了一款能够显著提升开发、调试效率的必备工具:MCP Inspector。它能帮助我们对 MCP 服务器进行快速测试和调试,提高整体开发效率。
在这篇文章中主要介绍MCP Inspector的用法、实用示例以及故障排查技巧,帮助开发者们能够快速掌握并高效利用这款工具。
什么是 MCP Inspector?
MCP Inspector(github仓库地址:github.com/modelcontex…) 是一款专为测试和调试 MCP 服务器设计的开发者工具,它支持以下操作:
- 便捷地向 MCP 服务器发送各类请求。
- 直观地查看服务器返回的响应内容。
- 协助排查 MCP 实现中的潜在问题。
MCP Inspector 最显著的优点之一是提供了直观的 UI 用户界面。这意味着开发者无需从零开始编写复杂的客户端代码或测试脚本,即可轻松地进行 MCP Server 功能的测试与调试。
为什么选择 MCP Inspector?
那么,为什么推荐选择 MCP Inspector 呢?原因在于其带来的诸多优势:
- 简化测试流程:通过图形界面直接执行服务器功能,省去了编写额外测试代码的环节。
- 加速调试过程:提供请求与响应的详细视图,有助于开发者迅速定位问题所在。
- 探索MCP Server的功能:能够清晰列出服务器提供的所有功能或称为“工具”,便于开发者全面了解。
- 加速迭代开发 :在开发过程中,可以即时验证代码改动,加快迭代速度。
- 标准合规:帮助开发者验证其MCP Server的实现是否正确遵循 MCP 协议标准。
MCP Inspector 入门
接下来,我们将介绍如何启动 MCP Inspector、使用服务器参数或环境变量运行它,并通过界面与服务器互动。
前置条件
在使用 MCP Inspector 之前,请确保开发环境中已安装 Node.js,建议版本为 22.7.5 或更高(可通过 node -v 命令检查)。Node.js 是一个用于服务器端 JavaScript 开发的运行时环境。
另外,需要一个可供测试的 MCP 服务器。在这里,我使用 squential-thinking和我自己开发的 cloudflare-r2-mcp-server (github.com/lskun/sprin…
基本启动命令
接下来,通过下面的npx命令启动 MCP Inspector:
npx @modelcontextprotocol/inspector <command_to_start_your_server> <参数1> <参数2>
该命令的作用是:它会同时启动 Inspector 的后端代理(默认端口 6277)和前端用户界面,并启动指定的 MCP Server进程。
访问界面:启动后打开浏览器,访问 http://127.0.0.1:6274(除非自定义了端口),即可进入 MCP Inspector 的操作界面。
使用参数和环境变量运行 MCP Inspector
我们可以在启动命令中为 MCP Server设置参数和环境变量。例如,我们在使用brave-search时,可以通过命令行指定BRAVE_API_KEY
npx @modelcontextprotocol/inspector -e BRAVE_API_KEY=your_api_key npx -y @modelcontextprotocol/server-brave-search
运行 MCP Inspector 时,它会启动两个主要组件:
- MCP Inspector (MCPI) 客户端界面 – 默认端口:6274
- MCP Proxy (MCPP) 服务器 – 默认端口:6277,作为前端界面与指定的 MCP Server之间的通信中介。
如果需要更改默认端口,可以通过设置环境变量来实现:
CLIENT_PORT=8080 SERVER_PORT=9000 npx @modelcontextprotocol/inspector <command_to_start_your_server>
在这里,CLIENT_PORT=8080 表示界面端口为 8080,SERVER_PORT=9000 表示代理服务器端口为 9000。
使用配置文件管理复杂设置
对于涉及多项设置或需要管理多个 MCP 服务器的场景,MCP Inspector 提供了使用配置文件的便利。这在需要频繁切换不同MCP Server配置的场景下很好用。
例如,当我们使用cursor配置mcp server时,可以通过--config指定cursor配置文件的方式启动: npx @modelcontextprotocol/inspector --config ~/.cursor/mcp.json --server cloudflare-r2-mcp-server
注意事项:
- 使用配置文件时,
--server <服务器名称>参数是必填的。 - 每次只能指定一个MCP Server。
- 服务器名称需与配置文件中定义的键名一致(如下面的
fetch或cloudflare-r2-mcp-server)。
以下是我使用的示例cursor mcp.json配置文件:
{
"mcpServers": {
"fetch": {
"command": "uvx",
"args": ["mcp-server-fetch"]
},
"cloudflare-r2-mcp-server": {
"command": "java",
"args": [
"-Dspring.ai.mcp.server.transport=STDIO",
"-jar",
"/path/to/spring-boot-ai-cloudflare-r2-mcp-server-0.0.1-SNAPSHOT.jar"
],
"env": {
"R2_ACCESS_KEY_ID": "your_access_key_id",
"R2_SECRET_ACCESS_KEY": "your_r2_secret_access_key",
"R2_ENDPOINT": "https://your_account_id.r2.cloudflarestorage.com"
}
}
}
}
该配置文件定义了两个服务器配置:一个是fetch MCP Server,另一个是 cloudflare-r2-mcp-server。
启动 Inspector 后,在浏览器中打开界面(http://localhost:6274),接下来让我们通过cloudflare-r2-mcp-server这个mcp的调试过程来了解其主要功能:
演示示例:测试Cloudflare R2对象存储MCP Server
首先,我们通过下面的npx命令启动MCP Inspector
在界面左侧面板中,可以配置与 MCP 服务器的连接:
- 传输类型:选择传输方式(默认是 STDIO)。
- 命令:输入运行命令(如 npx、node、java 等)。
- 参数:指定命令行参数。
- 环境变量:为服务器设置环境变量。
- 配置:访问高级配置选项。
完成设置后,点击“Connect”按钮建立连接。
连接设置 - MCP Inspector
连接成功后,主界面将显示多个选项卡:
- 资源(Resources) :浏览 MCP 服务器上的所有可用资源,查看其元数据(如 MIME 类型),检查资源内容,并测试动态资源的订阅功能。
- 提示模板(Prompts) :查看和测试提示模板及其参数,预览生成的文本,方便快速迭代和调试。
- 工具(Tools) :与服务器提供的工具进行交互和测试。
- Ping:检查MCP Server是否正常响应。
- 采样(Sampling) :当服务器触发 LLM 采样请求时,相关信息会在此处显示,供用户审核与批准。
- 根目录(Roots) :用于配置服务器有权限访问的本地目录。
使用工具选项卡
“Tools”选项卡特别适合测试服务器功能:
- 点击“Tools”选项卡。
- 点击“List Tools”按钮查看可用工具列表。
- 在左侧选择一个工具查看详情。
- 如需输入参数,提供相关内容。
- 点击“Run Tool”执行。
- 查看输出结果。
在点击List Tools后,我们可以看到mcp server提供的所有工具调用方法以及对应的描述:
接下来我们进行功能测试的演示:
- 测试功能1- 列出Cloudflare R2所有的存储桶 :点击Tool List中对应的Tool,点击Run Tool,如下图可以看到工具被正确执行
- 测试功能2- 列出test这个存储桶中所有的存储对象 :在这里我们可以通过参数的指定以及prefix(可以理解为存储的虚拟路径), 这里的方法参数对应我们在Tool具体实现方法中声明的参数。
命令行模式:通过 CLI 使用 MCP Inspector
除了网页界面,MCP Inspector 还提供命令行界面(CLI)模式,可以直接通过终端来调试 MCP server,非常适合自动化任务和脚本编写。
下面这是一个基于CLI模式的启动示例:
npx @modelcontextprotocol/inspector --cli --config ~/.cursor/mcp.json --server cloudflare-r2-mcp-server --method tools/list
注意:在 CLI 模式下,--method 参数是必填的,用于指定要调用的服务器方法,如工具或资源。
调用特定的工具listBuckets
浏览器界面与命令行模式:如何选择?
这两种使用方式各有侧重,我们可以根据具体任务需求进行选择。以下是一个对比建议:
| 任务类型 | 浏览器模式(UI) | 命令行模式(CLI) |
|---|---|---|
| 探索新服务器 | 更好 – 可视化浏览功能 | 较难 – 需熟悉命令 |
| 开发中测试 | 更好 – 视觉反馈便于发现问题 | 一般 – 适合快速检查 |
| 自动化测试 | 不适合 | 最佳 – 可集成到脚本和 CI/CD |
| 学习 MCP 原理 | 更好 – 界面直观展示关系 | 较难 – 需要更多基础知识 |
| 测试服务器功能(工具) | 更好 – 表单引导输入,结果直观清晰 | 一般 – 适合重复测试,输出适于脚本 |
| 调试问题 | 更好 – 历史记录和错误可视化 | 一般 – 日志输出适合记录 |
对于初次接触或需要直观操作的场景,浏览器界面是更好的选择。而对于追求效率、自动化或需要集成到工作流的进阶用户,CLI 模式则提供了强大支持。
使用注意事项
使用 MCP Inspector 时,请注意以下几点:
- 安全性:MCP Inspector 是开发工具,谨慎处理发送的数据和连接的服务器。
- 资源占用:同时运行服务器和 Inspector 可能消耗较多资源,注意内存和 CPU 使用情况。
- 配置管理:管理好配置文件,尤其是在处理多个 MCP 服务器时。
- 网络问题:Inspector 使用本地端口通信,确保端口未被防火墙或其他安全措施阻止。
- 超时处理:若服务器操作耗时较长,可在配置面板调整超时设置。
常见问题解答(FAQ)
MCP Inspector 与普通 MCP 客户端有什么不同?
MCP Inspector 提供可视化界面,专注于调试和测试;而普通客户端通常是程序代码,用于生产环境中与服务器交互。
MCP Inspector 是否适用于所有 MCP 服务器?
是的,MCP Inspector 的设计就是为与任何符合 MCP 协议的服务器实现兼容,不论使用何种编程语言或框架。
UI 模式与 CLI 模式有何不同?
UI 模式提供浏览器中的图形界面,适合交互式探索和视觉反馈;CLI 模式则在终端中运行,更适合自动化、脚本编写以及与其他开发工具的集成。
写在最后
总的来说,MCP Inspector 是 MCP 开发者的实用工具,它通过简洁的界面,极大地简化了对 MCP 服务器的测试、调试和交互过程。通过上述内容,相信你对MCP Inspector 的使用已经有了一定的了解,在进行 MCP Server的相关开发时通过MCP Inspector的使用一定会让你事半功倍。好了,今天的分享就这些,有问题可以在评论区交流~