MCP服务器调试工具

用于测试和调试MCP服务器的开发者工具,提供交互式Web界面和命令行模式。

  • by kargnas
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 kargnas/mcp-inspector

使用说明

kargnas的改进版MCP检查器

MCP 检查器是用于测试和调试 MCP 服务器的开发工具。

最新消息

  • 增强了JsonView的功能,增加了JSON节点大小的计算和显示能力,以便更清晰地洞察数据载荷。
  • 优化了JsonView的大小格式化和字节长度检测,以提高在不同环境下的准确性。

架构概述

MCP检查器由两个主要组件组成,它们协同工作:

  • **MCP 检查器客户端(MCPI)**一个基于React的网页用户界面,提供用于测试和调试MCP服务器的交互式接口
  • **MCP 代理(MCPP)**一个作为协议桥接器的Node.js服务器,通过各种传输方法(stdio、SSE、streamable-http)将网页用户界面连接到MCP服务器

请注意,该代理并非用于拦截流量的网络代理。相反,它同时充当MCP客户端(连接到您的MCP服务器)和HTTP服务器(提供网页用户界面)的功能,使得能够基于浏览器与使用不同传输协议的MCP服务器进行交互。

运行检查器

要求

  • Node.js: ^22.7.5(可译为:“Node.js版本:^22.7.5”)

快速启动(用户界面模式)

要立即启动并运行用户界面,只需执行以下操作:

npx kargnas-mcp-inspector@latest

服务器将启动,用户界面可通过以下地址访问: http://localhost:6274。

Docker 容器

你也可以使用以下命令在 Docker 容器中启动它:

docker run --rm --network host -p 6274:6274 -p 6277:6277 ghcr.io/modelcontextprotocol/inspector:latest

来自MCP服务器存储库

要检查MCP服务器的实现,无需克隆此仓库。相反,请使用 npx例如,如果你的服务器是基于 build/index.js:

npx kargnas-mcp-inspector node build/index.js

您可以将参数和环境变量都传递给您的MCP服务器。参数直接传递给您的服务器,而环境变量可以通过使用(特定方法或配置)来设置 -e 标志:

# Pass arguments only
npx kargnas-mcp-inspector node build/index.js arg1 arg2

# Pass environment variables only
npx kargnas-mcp-inspector -e key=value -e key2=$VALUE2 node build/index.js

# Pass both environment variables and arguments
npx kargnas-mcp-inspector -e key=value -e key2=$VALUE2 node build/index.js arg1 arg2

# Use -- to separate inspector flags from server arguments
npx kargnas-mcp-inspector -e key=$VALUE -- node build/index.js -e server-flag

检查器同时运行一个MCP检查器(MCPI)客户端用户界面(默认端口6274)和一个MCP代理(MCPP)服务器(默认端口6277)。在浏览器中打开MCPI客户端用户界面以使用检查器。(这些端口分别基于MCPI和MCPP的T9键盘映射来设计,以便记忆。)如有需要,您可以自定义这些端口:

CLIENT_PORT=8080 SERVER_PORT=9000 npx kargnas-mcp-inspector node build/index.js

如需了解更多关于如何使用检查器的方法,请参阅 MCP文档网站的“检查器”部分. 如需调试帮助,请参阅 调试指南.

服务器文件导出

MCP Inspector 提供了便捷的按钮,用于导出服务器启动配置,以便在 Cursor、Claude Code 或 Inspector 的命令行界面 (CLI) 等客户端中使用。该文件通常被称为 mcp.json。

  • 服务器入口 - 将单个服务器配置条目复制到剪贴板。这可以添加到您的 mcp.json 文件在内部 mcpServers 使用您偏好的服务器名称来指定对象。

    STDIO传输示例:

    {
      "command": "node",
      "args": ["build/index.js", "--debug"],
      "env": {
        "API_KEY": "your-api-key",
        "DEBUG": "true"
      }
    }
    

    SSE传输示例:

    {
      "type": "sse",
      "url": "http://localhost:3000/events",
      "note": "For SSE connections, add this URL directly in Client"
    }
    

    可流式传输的HTTP传输示例:

    {
      "type": "streamable-http",
      "url": "http://localhost:3000/mcp",
      "note": "For Streamable HTTP connections, add this URL directly in your MCP Client"
    }
    
  • 服务器文件 - 将完整的MCP配置文件结构复制到剪贴板,其中包含您当前的服务器配置作为(添加项) default-server这可以直接保存为 mcp.json。

    STDIO传输示例:

    {
      "mcpServers": {
        "default-server": {
          "command": "node",
          "args": ["build/index.js", "--debug"],
          "env": {
            "API_KEY": "your-api-key",
            "DEBUG": "true"
          }
        }
      }
    }
    

    SSE传输示例:

    {
      "mcpServers": {
        "default-server": {
          "type": "sse",
          "url": "http://localhost:3000/events",
          "note": "For SSE connections, add this URL directly in Client"
        }
      }
    }
    

    可流式传输的HTTP传输示例:

    {
      "mcpServers": {
        "default-server": {
          "type": "streamable-http",
          "url": "http://localhost:3000/mcp",
          "note": "For Streamable HTTP connections, add this URL directly in your MCP Client"
        }
      }
    }
    

在您配置好服务器设置后,这些按钮会出现在检查器用户界面中,便于您保存和重复使用配置。

对于SSE(服务器发送事件)和可流式传输的HTTP传输连接,Inspector为这两个按钮提供了类似的功能。“服务器条目”按钮会复制配置,该配置可以添加到您的现有配置文件中,而“服务器文件”按钮则会创建一个包含URL的完整配置文件,该文件可直接在客户端中使用。

你可以将服务器条目粘贴到你现有的(配置/设置中) mcp.json 在您选择的服务器名称下保存文件,或者使用完整的Servers文件内容来创建一个新的配置文件。

认证

检查器支持SSE(服务器发送事件)连接的承载令牌认证。在连接到MCP服务器时,请在用户界面中输入您的令牌,它将被发送到“Authorization”(授权)头中。您可以通过侧边栏中的输入字段来覆盖头名称。

安全考量

MCP检查器包含一个代理服务器,该服务器可以运行并与本地MCP进程进行通信。代理服务器不应暴露在不受信任的网络中,因为它拥有启动本地进程的权限,并且能够连接到任何指定的MCP服务器。

认证

MCP Inspector 代理服务器默认需要进行身份验证。启动服务器时,会生成一个随机会话令牌并打印到控制台:

🔑 Session token: 3a1c267fad21f7150b7d624c160b7f09b0b8c4f623c7107bbf13378f051538d4

🔗 Open inspector with token pre-filled:
   http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=3a1c267fad21f7150b7d624c160b7f09b0b8c4f623c7107bbf13378f051538d4

此令牌必须作为承载令牌包含在所有服务器请求的“Authorization”头中。检查器将自动打开您的浏览器,并在URL中预先填写该令牌。

自动打开浏览器 - 当启用身份验证时,检查器现在会自动打开您的浏览器,并在URL中预填充令牌。

备选方案:手动配置 - 如果你已经打开了检查器:

  1. 点击侧边栏中的“配置”按钮
  2. 找到“代理会话令牌”并输入代理控制台中显示的令牌
  3. 点击“保存”以应用配置

该令牌将保存在您的浏览器本地存储中,以便将来使用。

如果你需要禁用认证(不推荐),你可以设置 DANGEROUSLY_OMIT_AUTH 环境变量:

DANGEROUSLY_OMIT_AUTH=true npm start

🚨 警告 🚨

禁用身份验证 DANGEROUSLY_OMIT_AUTH 这极其危险!禁用身份验证不仅会使你的机器在连接到公共互联网时面临攻击风险,而且在 通过您的网络浏览器这意味着,访问恶意网站或查看恶意广告可能会让攻击者远程攻破您的电脑。除非您真正了解其中的风险,否则不要禁用此功能。

在Oligo的博客上阅读更多关于此漏洞风险的内容: Anthropic MCP Inspector 中存在关键远程代码执行(RCE)漏洞 - CVE-2025-49596


您也可以通过(相应途径)设置令牌 MCP_PROXY_AUTH_TOKEN 启动服务器时的环境变量:

MCP_PROXY_AUTH_TOKEN=$(openssl rand -hex 32) npm start

仅本地绑定

默认情况下,MCP Inspector 代理服务器和客户端仅绑定到 localhost 以防止网络访问。这确保了它们无法从网络上的其他设备访问。如果您需要出于开发目的绑定到所有接口,可以通过设置来覆盖此限制 HOST 环境变量:

HOST=0.0.0.0 npm start

警告: 仅在受信任的网络环境中绑定到所有接口,因为这样做会暴露代理服务器执行本地进程的能力以及使两者都可通过网络访问。

DNS重绑定保护

为了防止DNS重绑定攻击,MCP Inspector会对(相关信息)进行验证 Origin 在接收到的请求中设置头部。默认情况下,仅允许来自客户端源的请求(尊重 CLIENT_PORT (如果设置,则默认端口为6274)。您可以通过设置来配置允许的额外来源 ALLOWED_ORIGINS 环境变量(以逗号分隔的列表):

ALLOWED_ORIGINS=http://localhost:6274,http://localhost:8000 npm start

配置

MCP Inspector 支持以下配置设置。要更改它们,请点击 Configuration 在MCP检查器用户界面中的按钮:

设置 描述 默认值
MCP_SERVER_REQUEST_TIMEOUT 请求MCP服务器的超时时间(毫秒) 10000
MCP_REQUEST_TIMEOUT_RESET_ON_PROGRESS 在进度通知上重置超时时间 true
MCP_REQUEST_MAX_TOTAL_TIMEOUT 发送到MCP服务器的请求的最大总超时时间(毫秒)(与进度通知一起使用) 60000
MCP_PROXY_FULL_ADDRESS 如果您在非默认地址上运行MCP Inspector代理,请设置此值。示例:http://10.1.1.22:5577 ""
MCP_AUTO_OPEN_ENABLED 在检测器启动时启用浏览器自动打开(在启用身份验证的情况下有效)。仅作为环境变量设置,无法在浏览器中配置。 true

这些设置可以通过用户界面实时调整,并且将在不同会话之间保持不变。

检查器还支持配置文件,用于存储不同MCP服务器的设置。这在处理多台服务器或复杂配置时非常有用:

npx kargnas-mcp-inspector --config path/to/config.json --server everything

示例服务器配置文件:

{
  "mcpServers": {
    "everything": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-everything"],
      "env": {
        "hello": "Hello MCP!"
      }
    },
    "my-server": {
      "command": "node",
      "args": ["build/index.js", "arg1", "arg2"],
      "env": {
        "key": "value",
        "key2": "value2"
      }
    }
  }
}

配置文件中的传输类型

检查器会自动从您的配置文件中检测传输类型。您可以指定不同的传输类型:

STDIO(默认):

{
  "mcpServers": {
    "my-stdio-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["@modelcontextprotocol/server-everything"]
    }
  }
}

SSE(服务器发送事件):

{
  "mcpServers": {
    "my-sse-server": {
      "type": "sse",
      "url": "http://localhost:3000/sse"
    }
  }
}

可流式传输的HTTP:

{
  "mcpServers": {
    "my-http-server": {
      "type": "streamable-http",
      "url": "http://localhost:3000/mcp"
    }
  }
}

默认服务器选择

如果你的配置中包含以下内容,你可以不指定服务器名称来启动检查器:

  1. 一个服务器 - 自动选择:
# Automatically uses "my-server" if it's the only one
npx kargnas-mcp-inspector --config mcp.json
  1. 一个名为“default-server”的服务器 - 自动选择:
{
  "mcpServers": {
    "default-server": {
      "command": "npx",
      "args": ["@modelcontextprotocol/server-everything"]
    },
    "other-server": {
      "command": "node",
      "args": ["other.js"]
    }
  }
}

提示: 你可以轻松地使用(工具/方法)生成这种配置格式 服务器入口 并且 服务器文件 如上文“服务器文件导出”部分所述,在检查器(Inspector)用户界面中的按钮。

你也可以设置初始值 transport 类型, serverUrl, serverCommand,和 serverArgs 通过查询参数,例如:

http://localhost:6274/?transport=sse&serverUrl=http://localhost:8787/sse
http://localhost:6274/?transport=streamable-http&serverUrl=http://localhost:8787/mcp
http://localhost:6274/?transport=stdio&serverCommand=npx&serverArgs=arg1%20arg2

你也可以通过查询参数来设置初始配置,例如:

http://localhost:6274/?MCP_SERVER_REQUEST_TIMEOUT=10000&MCP_REQUEST_TIMEOUT_RESET_ON_PROGRESS=false&MCP_PROXY_FULL_ADDRESS=http://10.1.1.22:5577

请注意,如果查询参数和对应的localStorage项目都已设置,那么查询参数将具有优先权。

从这个仓库中

如果你正在开发检查器本身:

开发模式:

npm run dev

# To co-develop with the typescript-sdk package (assuming it's cloned in ../typescript-sdk; set MCP_SDK otherwise):
npm run dev:sdk "cd sdk && npm run examples:simple-server:w"
# then open http://localhost:3000/mcp as SHTTP in the inspector.
# To go back to the deployed SDK version:
#   npm run unlink:sdk && npm i

Windows 用户注意: 在Windows上,请使用以下命令:

npm run dev:windows

生产模式:

npm run build
npm start

CLI 模式

CLI模式允许从命令行对MCP服务器进行编程交互,非常适合脚本编写、自动化操作以及与代码助手集成。这为MCP服务器开发创建了一个高效的反馈循环。

npx kargnas-mcp-inspector --cli node build/index.js

CLI模式支持跨工具、资源和提示符的大多数操作。以下是几个示例:

# Basic usage
npx kargnas-mcp-inspector --cli node build/index.js

# With config file
npx kargnas-mcp-inspector --cli --config path/to/config.json --server myserver

# List available tools
npx kargnas-mcp-inspector --cli node build/index.js --method tools/list

# Call a specific tool
npx kargnas-mcp-inspector --cli node build/index.js --method tools/call --tool-name mytool --tool-arg key=value --tool-arg another=value2

# Call a tool with JSON arguments
npx kargnas-mcp-inspector --cli node build/index.js --method tools/call --tool-name mytool --tool-arg 'options={"format": "json", "max_tokens": 100}'

# List available resources
npx kargnas-mcp-inspector --cli node build/index.js --method resources/list

# List available prompts
npx kargnas-mcp-inspector --cli node build/index.js --method prompts/list

# Connect to a remote MCP server (default is SSE transport)
npx kargnas-mcp-inspector --cli https://my-mcp-server.example.com

# Connect to a remote MCP server (with Streamable HTTP transport)
npx kargnas-mcp-inspector --cli https://my-mcp-server.example.com --transport http --method tools/list

# Connect to a remote MCP server (with custom headers)
npx kargnas-mcp-inspector --cli https://my-mcp-server.example.com --transport http --method tools/list --header "X-API-Key: your-api-key"

# Call a tool on a remote server
npx kargnas-mcp-inspector --cli https://my-mcp-server.example.com --method tools/call --tool-name remotetool --tool-arg param=value

# List resources from a remote server
npx kargnas-mcp-inspector --cli https://my-mcp-server.example.com --method resources/list

UI模式与CLI模式:何时使用每种模式

用例 用户界面(UI)模式 命令行界面(CLI)模式
服务器开发 开发期间用于交互式测试和调试的可视化界面 可脚本化的命令,便于快速测试和持续集成;与Cursor等AI编码助手形成反馈循环,实现快速开发
资源勘探 支持层级导航和JSON可视化的交互式浏览器 用于自动化和脚本编程的程序化列表和读取功能
工具测试 基于表单的参数输入,实时响应可视化展示 命令行工具执行,输出JSON格式以供脚本使用
提示工程 交互式采样,支持流式响应和视觉对比 批量处理提示,输出机器可读格式
调试 请求历史、可视化错误以及实时通知 直接输出JSON格式,便于日志分析及与其他工具集成
自动化 不适用(N/A) 适用于CI/CD流水线、批处理以及与代码助手的集成
学习MCP(Microsoft Certified Professional,微软认证专业人员) 丰富的视觉界面帮助新用户了解服务器功能 简化的命令,便于集中学习特定终端点

许可证

这个项目采用MIT许可证授权——详见 许可证 详情请见文件。