MCP测试客户端

一个用于与MCP测试服务器交互的命令行客户端,提供交互式和编程式测试API、网页浏览器和手机UI的功能。

  • by siddikshaikh-haptiq
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 siddikshaikh-haptiq/mcp-client

使用说明

MCP测试客户端

用于与MCP测试服务器交互的命令行客户端。此客户端提供交互式和编程方式来测试API、web浏览器和电话UI。

特性

  • 🔌 易于连接 -自动连接到MCP服务器
  • 📋 工具发现 -列出并探索所有可用工具
  • 🎯 交互模式 -用户友好的交互式CLI
  • 🚀 快速命令 -常见操作的快捷方式
  • 📊 丰富的输出 -使用Rich库获得精美的格式化结果
  • 🔧 程序化API -用作Python库

安装

先决条件

  • Python 3.8或更高版本
  • MCP测试服务器(in ../mcp-server/)

设置

  1. 导航到客户端目录:
cd mcp-client
  1. 创建虚拟环境(推荐):
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt
  1. 使客户端可执行:
chmod +x client.py
  1. 测试连接:
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!"

许可证

这是一个用于本地开发的测试工具。