Katalon MCP样品
Katalon Studio项目演示如何测试 MCP(模型上下文协议) 使用原始HTTP请求和官方MCP Java SDK的服务器。
此项目显示什么
- 使用Katalon的原生WS关键字测试MCP服务器(无外部依赖关系)
- 使用官方MCP Java SDK测试MCP服务器
- MCP服务器验证的BDD/Cucumber测试结构
- 处理MCP协议细节:JSON-RPC 2.0、SSE响应、会话管理
- 在拦截/重新签名TLS流量的透明HTTPS代理后面工作
快速开始
先决条件
- Katalon Studio 10.4.2+(企业版)
- Java 17
设置
- 在Katalon Studio中打开项目
- 安装MCP SDK(基于SDK的测试需要):
./gradlew clean katalonCopyDependencies运行测试
原始HTTP方法(不需要SDK):
- 测试用例:
Test Cases/Katalon MCP Server Test - 测试用例:
Test Cases/MCP Server Tools Test (Raw HTTP) - BDD:
Test Cases/Run Katalon MCP BDD Tests - BDD:
Test Cases/Run MCP BDD Tests (Raw HTTP)
MCP SDK方法(需要安装SDK):
*流式HTTP:*
- 测试用例:
Test Cases/MCP Server Tools Test - 一套:
Test Suites/MCP Server Test Suite
*上海证券交易所*
- 测试用例:
Test Cases/MCP Server Tools Test (SSE) - 一套:
Test Suites/MCP Server Test Suite - SSE
*stdio(本地服务器):*
- 测试用例:
Test Cases/MCP Server Tools Test (stdio) - 一套:
Test Suites/MCP Server Test Suite - stdio - 还需要:
go install github.com/mark3labs/mcp-filesystem-server@latest
透明代理测试(需要安装SDK):
- 测试用例:
Test Cases/Transparent Proxy/MCP Server Tools Test (SSE)--带飞行前代理检测和SSL旁路的SSE传输 - 测试用例:
Test Cases/Transparent Proxy/SSL Certificate Test--验证SslHelper反对 badssl.com 端点
测试覆盖率
Katalon公共MCP服务器(https://mcp.katalon.com/mcp)
| 场景 | 描述 |
|---|---|
| 连接 | 初始化MCP客户端,验证服务器信息 |
| 功能 | 检查工具/资源/提示支持 |
| 工具列表 | 检索和验证可用工具(获取、搜索、搜索_目录_文档_带过滤器) |
| 工具模式 | 验证工具参数(必需/可选) |
| 工具执行 | 执行搜索工具并验证结果 |
mcp获取服务器(https://remote.mcpservers.org/fetch/mcp)
| 场景 | 描述 |
|---|---|
| 连接 | 初始化MCP客户端,验证服务器信息 |
| 功能 | 检查工具/资源/提示支持 |
| 工具列表 | 检索和验证可用工具 |
| 工具模式 | 验证工具参数(必需/可选) |
项目结构
├── Test Cases/ # Test case definitions
├── Scripts/ # Groovy test scripts
├── Test Suites/ # Test suite configurations
├── Include/
│ ├── features/ # BDD feature files
│ └── scripts/groovy/
│ └── stepDefinitions/ # Cucumber step definitions
├── Drivers/ # External JARs (from Gradle)
├── build.gradle # Dependencies
├── CLAUDE.md # Detailed technical documentation (→ AGENTS.md)
└── README.md # This fileSSL助手
Include/scripts/groovy/com/katalon/mcp/utils/SslHelper.groovy 为MCP SDK传输提供SSL旁路(java.net.http.HttpClient)在透明HTTPS代理后面运行时。
import com.katalon.mcp.utils.SslHelper
// Pass to any MCP SDK transport builder
def transport = HttpClientSseClientTransport.builder(url)
.clientBuilder(SslHelper.createTrustAllClientBuilder())
.build()透明代理测试脚本还包括 预检 在连接之前检测代理拦截,因此测试输出清楚地指示是否存在代理。
注: 对于Katalon WS.sendRequest() (原始HTTP测试),SSL旁路由Katalon Studio项目设置控制,而不是代码。
支持的MCP传输
| 运输 | 状态 | 备注 |
|---|---|---|
| 流式HTTP | ✅ 支持 | 原始HTTP或MCP SDK 0.15.0 HttpClientStreamableHttpTransport |
| 上海证券交易所✅ 支持 | MCP SDK 0.15.0 HttpClientSseClientTransport | |
| stdio | ✅ 支持 | MCP SDK 0.15.0 StdioClientTransport (本地服务器) |
两种测试方法
原始HTTP(工作)
使用Katalon的内置 WS 使用手动JSON-RPC构造的关键字。没有外部依赖关系。
def body = JsonOutput.toJson([
jsonrpc: "2.0", id: 1, method: "initialize",
params: [protocolVersion: "2024-11-05", capabilities: [:],
clientInfo: [name: "katalon-mcp-test", version: "1.0.0"]]
])
RequestObject request = new RequestObject()
request.setRestUrl("https://remote.mcpservers.org/fetch/mcp")
request.setRestRequestMethod("POST")
// ... send with WS.sendRequest(request)MCP Java SDK(工作)
官方SDK(io.modelcontextprotocol.sdk:mcp)版本0.15.0支持所有传输:
- 流式HTTP:
HttpClientStreamableHttpTransport - 上海证券交易所:
HttpClientSseClientTransport - 标准:
StdioClientTransport
注: SDK 0.16.0+需要 json-schema-validator:2.0.0 这与Katalon捆绑的1.5.7相冲突。使用0.15.0。
故障排除
MCP-SDK NoClassDefFoundError: Dialects
MCP SDK 0.16.0+需要 json-schema-validator 2.0.0+与Katalon的捆绑版本1.5.7冲突。使用SDK 0.15.0,它可以在没有这种冲突的情况下工作。
400后续通话中的错误请求
确保您正在提取和发送 mcp-session-id 初始化响应中的标头。
文档
看 CLAUDE.md 详细的技术文档,包括:
- 完成步骤定义模式
- MCP协议参考
- 故障排除指南
- 实现细节
许可证
该项目根据 Apache许可证2.0.
