MCP测试驱动工具

用于测试任何MCP服务器的交互式REPL工具,支持stdio或HTTP传输,提供命令行自动补全功能。

  • by PennockTech
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 PennockTech/mcp-test-driver

使用说明

mcp测试驱动程序

交互式REPL用于测试任何 主控程序 服务器,通过stdio或HTTP。无需人工智能布线,只需调试。

将其指向命令(stdio)或URL(HTTP),并得到一个提示 工具、参数键和枚举值的选项卡完成。

用法

# Stdio transport — pass the server command and its arguments:
mcp-test-driver aifr mcp
mcp-test-driver character agent mcp
mcp-test-driver nats-lsp mcp-stdio

# HTTP transport — pass a URL:
mcp-test-driver https://unicode.mcp.pennock.tech/mcp

# Enable roots capability (exposes cwd to the server):
mcp-test-driver --roots aifr mcp
mcp-test-driver --roots=/path/to/project https://example.com/mcp

在提示下,键入工具名称及其参数:

mcp> unicode_search query=snowman
mcp> unicode_lookup_char char=✓

CLI选项

选项 描述
-h, --help 显示帮助消息
--trace 启用协议跟踪(默认)
--no-trace 启动时禁用协议跟踪
--roots 将cwd作为文件系统根目录通告给服务器
--roots=<path> 将特定路径作为文件系统根进行播发

内置命令

内置命令使用 / 前缀。工具名称去掉了前导 / 在清理过程中,用于命名空间分离。

工具

命令 别名 描述
/list /l 列出可用工具
/describe <tool> /d 显示工具的完整架构

资源

命令 别名 描述
/resources /lr 列出可用资源
/templates /lt 列出资源模板
/read <uri> /r 按URI读取资源
/subscribe <uri> /sub 订阅资源更新
/unsubscribe <uri> /unsub 取消订阅资源更新

提示

命令 别名 描述
/prompts /lp 列出可用提示
/prompt <name> [args] /p 获取提示(使用可选键=val参数)

会话和诊断

命令 别名 描述
/ping Ping服务器
/loglevel <level> /ll 设置服务器日志级别
/roots 显示根状态
/roots on [path] 启用根功能(生效于 /reconnect)
/roots off 禁用根功能
/reconnect /rc 重新连接到服务器
/cache-flush /cf 清除缓存的工具/资源/提示,重新获取
/trace /t 切换JSON-RPC协议跟踪
/help /h 显示帮助(或 /help <tool> 工具帮助)
/quit /q 退出

按 选项卡 完成命令、工具名称、参数键(key=),以及 枚举值。按 一层楼 或 Esc-H 在任何地方获得上下文相关的帮助 指向一个命令。

客户能力

根

这 --roots 旗帜(或 /roots on 命令)发布广告 根系能力 通知服务器哪些文件系统目录是相关的。

启用后,客户端会响应 roots/list 来自服务器的请求 使用配置的基本路径。这是只读的:它向服务器提示 在哪里查找,但服务器使用自己的机制访问文件。

安全约束:

  • 所有根路径都解析为绝对规范路径(后面有符号链接)
  • 通过添加其他根 RootsHandler.add_root() 必须是后代 基础路径(Path.relative_to() 检查阻止遍历)
  • 启用根时,基本路径必须存在

采样

MCP sampling 能力(服务器要求客户端生成LLM 完成)是 未实现。目前认为这超出了范围。

协议覆盖范围

mcp测试驱动程序实现了以下mcp协议方法:

方法 方向 注释
initialize 客户→ 服务器 从处理程序注册表中公告功能
notifications/initialized 客户→ 服务器
tools/list 客户→ 服务器 分页
tools/call 客户→ 服务器
resources/list 客户→ 服务器 分页;如果服务器通告资源,则获取
resources/templates/list 客户→ 服务器 分页
resources/read 客户→ 服务器
resources/subscribe 客户→ 服务器
resources/unsubscribe 客户→ 服务器
prompts/list 客户→ 服务器 分页;如果服务器通告提示,则获取
prompts/get 客户→ 服务器
ping 双向 客户端处理服务器发起的ping
logging/setLevel 客户→ 服务器
completion/complete 客户→ 服务器
roots/list 服务器→ 客户端 何时 --roots 已启用

已知限制

  • HTTP服务器到客户端请求:服务器发起的请求(如 roots/list)通过HTTP流传输需要长期GET SSE流,尚未实现。服务器请求已满 支持stdio传输。这 --roots 旗帜还在飘扬 HTTP用于初始握手功能,但服务器不能 在会话中期动态查询根。

  • 部分线路stdio超时:The select()-基于读取超时(120秒) 捕获完整的服务器静默,但如果服务器发送的字节没有 换行符, readline() 可能仍然会堵塞。

  • 无OAuth/身份验证MCP规范定义了OAuth 2.1流程,但 作为测试驱动程序,我们不实现auth。使用 Authorization 标头 或基于环境的证书(如果需要)。

  • 未发现DNS:基于SRV/TXT/DANE的MCP服务器发现 (SEP-1959)已被提出,但尚未标准化。

  • 不 .well-known 元数据:OAuth资源元数据(RFC 9728) 也不取出MCP服务器卡(SEP-1649/1960)。

安装

# Install as a tool (recommended for CLI use):
uv tool install .

# Or install into a project:
uv pip install .

# Or run directly from the source tree:
uv run mcp-test-driver <server-command...>

发展

uv sync --group dev
uv run ruff check src/
uv run ty check
uv run pytest tests/

人工智能披露

LLM开发工具在创建此工具时被广泛使用。

(这是一个探索为LLM设计的服务的工具,你做了什么 期待?)

许可证

ISC——参见 许可证.