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= | |
| ` | 将特定路径作为文件系统根进行播发 |
内置命令
内置命令使用 / 前缀。工具名称去掉了前导 / 在清理过程中,用于命名空间分离。
工具
| 命令 | 别名 | 描述 |
|---|---|---|
/list | /l | 列出可用工具 |
/describe | /d | 显示工具的完整架构 |
资源
| 命令 | 别名 | 描述 |
|---|---|---|
/resources | /lr | 列出可用资源 |
/templates | /lt | 列出资源模板 |
/read | /r | 按URI读取资源 |
/subscribe | /sub | 订阅资源更新 |
/unsubscribe | /unsub | 取消订阅资源更新 |
提示
| 命令 | 别名 | 描述 |
|---|---|---|
/prompts | /lp | 列出可用提示 |
/prompt [args] | /p | 获取提示(使用可选键=val参数) |
会话和诊断
| 命令 | 别名 | 描述 |
|---|---|---|
/ping | Ping服务器 | |
/loglevel | /ll | 设置服务器日志级别 |
/roots | 显示根状态 | |
/roots on [path] | 启用根功能(生效于 /reconnect) | |
/roots off | 禁用根功能 | |
/reconnect | /rc | 重新连接到服务器 |
/cache-flush | /cf | 清除缓存的工具/资源/提示,重新获取 |
/trace | /t | 切换JSON-RPC协议跟踪 |
/help | /h | 显示帮助(或 /help 工具帮助) |
/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 发展
uv sync --group dev
uv run ruff check src/
uv run ty check
uv run pytest tests/人工智能披露
LLM开发工具在创建此工具时被广泛使用。
(这是一个探索为LLM设计的服务的工具,你做了什么 期待?)
许可证
ISC——参见 许可证.
