Skip to main content
mcp-inspector 二进制文件是一个启动器:它读取自身的两个标志,并将所有其他参数转发给三个客户端之一(Web、CLI 或 TUI)。每个客户端定义自己的标志,因此某个标志在一个客户端中有效,在另一个客户端中可能是未知标志(例如,--method 仅适用于 CLI)。本页面按所属客户端对标志和环境变量进行分类。

启动器恰好拥有两项功能

以下内容均属于客户端。
该软件包还会安装一个独立的第二个 bin:mcpdo,即实验性的连接客户端。它不通过启动器访问,也不接受模式标志。

选择服务器

--catalog 与 --config

CLI 和 TUI 通过同一套共享代码解析 --catalog 和 --config,Web 客户端也遵循相同规则,因此每个标志在三个客户端中的含义都相同。两者之间的差异如下表所示。 两者互斥,且都不能与临时目标组合使用。三个客户端对同时传入两者的处理方式完全一致,都会拒绝。Web 客户端有一项更严格的规则:与文件一起传入 --header 或 --protocol-era 也会被拒绝,而 CLI 和 TUI 会将它们应用在文件设置之上。
新初始化的目录内容取决于客户端。 Web 后端会初始化三个示例服务器,因此首次启动时就可以立即连接:
CLI 和 TUI 则会初始化为空的 { "mcpServers": {} }:它们是非交互式或由列表驱动的,因此示例条目只会造成干扰,而不是提供一个起点。无论哪种情况,只有在文件尚不存在时才会进行初始化,而只读的 --config 完全不会被初始化。
当您要让 Inspector 指向一个并非由您编写的配置文件时,应使用 --config:例如同事的配置文件、客户端应用程序的配置文件,或提交到代码仓库中的配置文件。它可以确保 Inspector 不会触碰该文件。

临时目标

您可以不使用文件,而是直接指定一个服务器,可以指定为位置命令(stdio)或 URL:

共享的服务器选择标志

这些标志由 Web、CLI 和 TUI 分别定义,因此三者均可使用,差异如下:

-- 分隔符

Web 和 TUI 客户端会在单独出现的 -- 处分割参数,并将其后的所有内容作为目标命令自身的参数传递。这就是传递 Inspector 原本会截获的标志的方式:
如果没有该分隔符,--config 就会被读取为 Inspector 自己的只读会话标志。 CLI 的分割方向相反:-- 之前的所有内容都是目标,之后的所有内容都是 Inspector 自身的选项。没有 -- 时,CLI 的目标仅是开头连续的不以短横线开头的参数,因此服务器自身需要标志时必须使用分隔符:

仅限 Web 的标志

CLI 和 TUI:OAuth 客户端标志

这五项仅由 CLI 和 TUI 定义。Web 客户端通过其客户端设置对话框获取相同的设置。

仅限 CLI 的标志

整个脚本操作界面都属于 CLI。有关使用方法,请参阅 CLI 客户端。

环境变量

环境变量的分类方式与标志相同:其中两个由启动器本身读取,其余变量属于 CLI 和 TUI、Web 后端,或所有客户端(机密信息存储)。

由启动器读取

CLI 和 TUI

其中一些变量也由 Web 后端读取,如读取方列所示。

Web 后端环境变量

切勿同时使用 DANGEROUSLY_OMIT_AUTH 和 DANGEROUSLY_BIND_ALL_INTERFACES。 Web 后端会生成进程并持有 OAuth 令牌,因此任何能够访问它的人都可以操控它。
令牌的保护范围请参阅Web 后端令牌。

机密信息存储变量

由 Web、CLI、TUI 和 mcpdo 每个客户端读取。它们的组合方式请参阅机密信息存储位置。

机密信息存储位置

Inspector 不会将凭据写入 mcp.json、client.json 和 oauth.json,这样共享、提交或同步这些文件就不会泄露凭据。这些凭据会存入机密信息存储:
  • 已获取的 OAuth 令牌(访问令牌、刷新令牌和 IdP 会话令牌);
  • 每个服务器的 OAuth 客户端密钥,以及客户端设置中的企业 IdP 客户端密钥;
  • 每个 stdio 服务器的 env: 值。保存条目时,env 中的每个键会留在 mcp.json 中并使用空值,真实值会写入存储。
headers 不会移动。 它们会按原样保存到 mcp.json,因此携带凭据的请求头仍会留在文件中。

选择存储方式

每个进程只在第一次需要时选择一次存储方式:Web 后端在启动时选择,CLI 和 TUI 在首次使用时选择。所有客户端使用相同顺序:
  1. 如果 MCP_INSPECTOR_SECRET_STORE 设置为 keyring、file 或 memory,则使用该值,不进行探测。
  2. 如果探测成功,则使用操作系统钥匙串:macOS 的 Keychain、Windows 的 Credential Manager、Linux 的 Secret Service(libsecret,例如 GNOME Keyring 或 KWallet)。条目使用服务名 mcp-inspector,大多数桌面安装会停在这一步。
  3. 如果未找到钥匙串,则使用以下后备方式,并在 stderr 上说明:
    • 如果容器中的机密信息目录没有挂载卷,使用 memory,因为容器可写层中的文件无论如何都会丢失;
    • 其他情况下使用 file。
没有钥匙串时,机密信息会写入明文文件,而且不需要你主动选择。 当钥匙串探测失败时(没有 libsecret 或正在运行的 Secret Service 的 Linux、没有 D-Bus 会话的无头服务器或 SSH 会话、Android/Termux),Inspector 会自动将机密信息存储到 ~/.mcp-inspector/secrets.json。除非提供密钥,否则该文件不会加密。权限 0600 可以阻止其他非 root 用户读取,但无法阻止 root、主目录的备份或副本,也无法阻止以你的身份运行的程序(包括 Inspector 启动的 stdio 服务器)。请选择一种方式:
  • **恢复钥匙串:**安装 libsecret 并运行 Secret Service(例如 gnome-keyring),或在桌面会话中运行 Inspector。下次启动时,Inspector 会将文件中的机密信息迁移到钥匙串并删除该文件。
  • **加密文件:**使用 MCP_INSPECTOR_SECRET_KEY_FILE(推荐)或 MCP_INSPECTOR_SECRET_KEY 提供生成的密钥。
  • **完全不写入磁盘:**设置 MCP_INSPECTOR_SECRET_STORE=memory,每次会话重新输入机密信息。
即使经过加密,磁盘上的机密信息仍有中等风险。请参阅文件存储可以防范什么。
mcpdo 不会回退到 memory:它的命令和守护进程是不同的进程,因此使用文件存储。

文件存储

如果设置了 MCP_INSPECTOR_SECRET_FILE,文件位于该路径;否则如果设置了 MCP_STORAGE_DIR,位于其中的 secrets.json;再否则位于 ~/.mcp-inspector/secrets.json。默认位置位于存储目录(~/.mcp-inspector/storage)旁边,而不是其中。
  • 加密是选择性启用的。 提供密钥后,文件使用 AES-256-GCM 加密,口令通过 scrypt 基于随机盐拉伸,每次写入都会重新生成盐。例如,可使用 (umask 077 && openssl rand -base64 32 > ~/.config/mcp-inspector/secret-key) 生成密钥,并将其放在机密文件、备份和任何仓库之外。
  • 之后添加密钥是安全的。 下一次写入会原地升级明文文件。
  • 更换或丢失密钥无法恢复。 无法解密的文件会被视为空,Inspector 会拒绝覆盖它。请恢复密钥,或删除文件并重新输入值。
  • 强制执行权限。 文件以 0600 写入,并在启动时再次收紧权限。如果无法做到(所有者不同或挂载为只读),日志和设置页脚会说明原因。
  • 并发 Inspector 是安全的。 CLI 与 Web 会话同时运行时,会在文件旁的锁上串行化,并通过读回文件验证每次写入。

报告当前存储方式

  • **stderr:**选择存储方式时会输出信息;任何钥匙串回退都会发出警告,文件未加密、权限过宽或不可读时也会发出警告。两者最后都会附上 Inspector 的机密信息存储指南链接。Web 客户端每次启动的横幅还会包含 Secrets: 行。
  • 在 Web 客户端中: 客户端设置、服务器设置和添加/编辑/克隆服务器对话框的页脚会标明正在使用的存储方式,并在其仅存于内存、未加密、权限过宽或无法读取时变为警告。

迁移回钥匙串

在使用文件存储的机器上安装 libsecret(或启动 Secret Service)后,下次启动会选择钥匙串并将文件内容迁移到钥匙串。钥匙串中已有的值优先于文件中的值。只有在所有条目都得到处理后才会删除文件;无法解密的文件会保留。设置 MCP_INSPECTOR_SECRET_STORE=keyring 会触发相同的迁移。选择 file 或 memory 永远不会从钥匙串复制任何内容。

Catalog 文件格式

Catalog 或配置文件采用熟悉的 MCP 客户端配置结构(包含 mcpServers 对象),并在其中为每个服务器配置 Inspector 设置:
Inspector 将文件写回时会省略值等于默认值的字段,从而尽量减少差异。protocolEra(参见协议时代)默认为 legacy,modernLogLevel 默认为 debug。 你不必手动编写这些内容;Web 客户端可以从 Claude Desktop、Cursor、Cline 或 VS Code 导入现有客户端配置,也可以导入注册表中的 server.json。