使用说明
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——参见 许可证.