使用说明
MCP测试客户端
用于与MCP测试服务器交互的命令行客户端。此客户端提供交互式和编程方式来测试API、web浏览器和电话UI。
特性
- 🔌 易于连接 -自动连接到MCP服务器
- 📋 工具发现 -列出并探索所有可用工具
- 🎯 交互模式 -用户友好的交互式CLI
- 🚀 快速命令 -常见操作的快捷方式
- 📊 丰富的输出 -使用Rich库获得精美的格式化结果
- 🔧 程序化API -用作Python库
安装
先决条件
- Python 3.8或更高版本
- MCP测试服务器(in
../mcp-server/)
设置
- 导航到客户端目录:
cd mcp-client
- 创建虚拟环境(推荐):
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- 安装依赖项:
pip install -r requirements.txt
- 使客户端可执行:
chmod +x client.py
- 测试连接:
python test_connection.py
用法
交互模式(推荐)
启动交互模式以获得易于使用的界面:
python client.py interactive
或者使用快捷方式:
./client.py interactive
在交互模式下,您可以:
- 类型
list查看所有可用工具 - 类型
show <tool_name>查看工具详细信息 - 类型
call <tool_name>以交互方式调用工具 - 类型
api <url>用于API快速测试 - 类型
browse <url>用于快速浏览浏览器 - 类型
phone <url>用于快速手机UI测试 - 类型
help对于所有命令 - 类型
exit退出
命令行模式
列出所有工具
python client.py list-tools
显示工具详细信息
python client.py show api_test_request
调用工具
python client.py call browser_navigate --args '{"url": "https://example.com"}'
API快速测试
python client.py api https://api.example.com/users
python client.py api https://api.example.com/users --method POST --body '{"name": "John"}'
快速浏览器导航
python client.py browse https://example.com
python client.py browse https://example.com --page-id main
快速手机UI测试
python client.py phone https://example.com
python client.py phone https://example.com --device "iPhone 13"
示例
示例1:测试API端点
# Simple GET request
python client.py api https://jsonplaceholder.typicode.com/posts/1
# POST request with body
python client.py api https://api.example.com/users \
--method POST \
--headers '{"Content-Type": "application/json"}' \
--body '{"name": "John Doe", "email": "john@example.com"}'
示例2:浏览器测试工作流
# Navigate to a page
python client.py browse https://example.com
# In interactive mode, you can then:
# - call browser_click to click elements
# - call browser_type to fill forms
# - call browser_screenshot to capture screenshots
示例3:手机用户界面测试
# Navigate on mobile viewport
python client.py phone https://example.com --device "iPhone 12"
# Then use interactive mode to:
# - call phone_tap to tap elements
# - call phone_swipe to test gestures
# - call phone_screenshot to capture mobile screenshots
示例4:用作Python库
import asyncio
from client import MCPTestingClient
async def test_api():
client = MCPTestingClient("../mcp-server/server.py")
if await client.connect():
# List tools
tools = await client.list_tools()
print(f"Found {len(tools)} tools")
# Call a tool
result = await client.call_tool("api_test_request", {
"url": "https://api.example.com/users",
"method": "GET"
})
print(result)
await client.disconnect()
asyncio.run(test_api())
命令参考
全局选项
--server <path>-MCP服务器脚本的路径(默认值:../mcp-server/server.py)
命令
list-tools
列出服务器上的所有可用工具。
show <tool_name>
显示特定工具的详细信息,包括其输入模式。
call <tool_name> [--args <json>]
使用JSON字符串提供的参数调用工具。
interactive
启动交互模式,实现用户友好的工具交互。
api <url> [options]
API快速测试命令。
--method-HTTP方法(默认:GET)--headers-带标头的JSON字符串--body-带请求正文的JSON字符串
browse <url> [options]
快速浏览器导航命令。
--page-id-页面标识符(默认:默认)
phone <url> [options]
快速手机UI导航命令。
--device-设备预设(默认:iPhone 12)--page-id-页面标识符(默认值:phone_default)
交互模式命令
在交互模式下,您可以使用以下命令:
list-列出所有可用工具show <tool>-显示工具的详细信息call <tool>-以交互方式调用工具(提示参数)api <url>-API快速测试browse <url>-快速浏览器导航phone <url>-快速手机UI导航help-显示帮助消息exit或quit-退出交互模式
配置
您可以使用以下命令指定自定义服务器路径 --server 选项:
python client.py --server /path/to/server.py interactive
或者将其设置为环境变量:
export MCP_SERVER_PATH=/path/to/server.py
python client.py interactive
测试连接
在使用客户端之前,请测试连接:
python test_connection.py
这将验证:
- 服务器可访问
- 可以建立连接
- 可以列出工具
- 基本功能正常
故障排除
“连接失败”
- 确保MCP服务器在指定路径上可访问
- 验证服务器脚本是否可执行:
chmod +x ../mcp-server/server.py - 检查是否安装了所有服务器依赖项
- 跑
python test_connection.py诊断问题
“找不到工具”
- 跑
list-tools查看可用工具 - 检查工具名称拼写(区分大小写)
“JSON无效”
- 确保JSON字符串正确转义
- 在shell中JSON周围使用单引号:
'{"key": "value"}' - 或者使用JSON文件并读取它:
--args "$(cat args.json)"
导入错误
- 确保安装了所有依赖项:
pip install -r requirements.txt - 验证您使用的Python版本是否正确(3.8+)
- 如果使用虚拟环境,请激活您的虚拟环境
与其他工具集成
客户端可以集成到CI/CD管道、测试脚本或其他自动化中:
#!/bin/bash
# Example test script
python client.py api https://api.example.com/health || exit 1
python client.py browse https://app.example.com || exit 1
echo "All tests passed!"
许可证
这是一个用于本地开发的测试工具。
