Skip to main content
Glama

AI Customer Service MCP Server

by yakir-Yang
test-mcp-server.sh9.86 kB
#!/bin/bash # AI智能客服MCP Server 功能测试脚本 # 作者: AI Assistant # 版本: 1.0.0 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' NC='\033[0m' # 日志函数 log_info() { echo -e "${BLUE}[INFO]${NC} $1" } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } log_test() { echo -e "${PURPLE}[TEST]${NC} $1" } # 测试配置 SERVER_URL="http://localhost:3000" TEST_PHONE="17798762697" TEST_LATITUDE=39.946613 TEST_LONGITUDE=116.370503 # 检查服务器是否运行 check_server_running() { log_test "检查MCP Server是否运行..." if curl -s -f "$SERVER_URL/health" > /dev/null 2>&1; then log_success "MCP Server正在运行" return 0 else log_warning "MCP Server未运行,尝试启动..." return 1 fi } # 启动MCP Server start_server() { log_info "启动MCP Server..." # 检查是否已有进程在运行 if pgrep -f "node.*server.js" > /dev/null; then log_warning "检测到MCP Server进程已在运行" return 0 fi # 启动服务器(后台运行) nohup npm start > server.log 2>&1 & SERVER_PID=$! # 等待服务器启动 log_info "等待服务器启动..." for i in {1..30}; do if curl -s -f "$SERVER_URL/health" > /dev/null 2>&1; then log_success "MCP Server启动成功 (PID: $SERVER_PID)" return 0 fi sleep 1 echo -n "." done log_error "MCP Server启动超时" return 1 } # 测试订单查询功能 test_order_query() { log_test "测试订单查询功能..." local test_data='{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "query_order", "arguments": { "phone": "'$TEST_PHONE'" } } }' log_info "查询手机号: $TEST_PHONE" local response=$(curl -s -X POST "$SERVER_URL/tools/call" \ -H "Content-Type: application/json" \ -d "$test_data") if echo "$response" | grep -q "手机号.*$TEST_PHONE"; then log_success "订单查询测试通过" echo "响应内容:" echo "$response" | jq '.' 2>/dev/null || echo "$response" return 0 else log_error "订单查询测试失败" echo "响应内容: $response" return 1 fi } # 测试网点查询功能 test_store_query() { log_test "测试网点查询功能..." local test_data='{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "query_stores", "arguments": { "latitude": '$TEST_LATITUDE', "longitude": '$TEST_LONGITUDE', "limit": 3 } } }' log_info "查询坐标: ($TEST_LATITUDE, $TEST_LONGITUDE)" local response=$(curl -s -X POST "$SERVER_URL/tools/call" \ -H "Content-Type: application/json" \ -d "$test_data") if echo "$response" | grep -q "网点名称"; then log_success "网点查询测试通过" echo "响应内容:" echo "$response" | jq '.' 2>/dev/null || echo "$response" return 0 else log_error "网点查询测试失败" echo "响应内容: $response" return 1 fi } # 测试工具列表功能 test_tools_list() { log_test "测试工具列表功能..." local response=$(curl -s -X POST "$SERVER_URL/tools/list" \ -H "Content-Type: application/json" \ -d '{"jsonrpc": "2.0", "id": 3, "method": "tools/list"}') if echo "$response" | grep -q "query_order\|query_stores"; then log_success "工具列表测试通过" echo "可用工具:" echo "$response" | jq '.result.tools[].name' 2>/dev/null || echo "$response" return 0 else log_error "工具列表测试失败" echo "响应内容: $response" return 1 fi } # 测试错误处理 test_error_handling() { log_test "测试错误处理..." # 测试无效手机号 local invalid_phone_data='{ "jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": { "name": "query_order", "arguments": { "phone": "123" } } }' local response=$(curl -s -X POST "$SERVER_URL/tools/call" \ -H "Content-Type: application/json" \ -d "$invalid_phone_data") if echo "$response" | grep -q "错误\|error\|手机号格式不正确"; then log_success "错误处理测试通过" return 0 else log_warning "错误处理测试未通过预期" echo "响应内容: $response" return 1 fi } # 性能测试 test_performance() { log_test "性能测试..." local start_time=$(date +%s%N) # 执行10次订单查询 for i in {1..10}; do curl -s -X POST "$SERVER_URL/tools/call" \ -H "Content-Type: application/json" \ -d '{"jsonrpc": "2.0", "id": '$i', "method": "tools/call", "params": {"name": "query_order", "arguments": {"phone": "'$TEST_PHONE'"}}}' > /dev/null done local end_time=$(date +%s%N) local duration=$(( (end_time - start_time) / 1000000 )) # 转换为毫秒 log_info "10次查询耗时: ${duration}ms" log_info "平均每次查询: $((duration / 10))ms" if [ $duration -lt 5000 ]; then log_success "性能测试通过" return 0 else log_warning "性能测试警告: 响应时间较慢" return 1 fi } # 生成测试报告 generate_report() { local total_tests=$1 local passed_tests=$2 local failed_tests=$((total_tests - passed_tests)) echo echo -e "${BLUE}==========================================" echo " 测试报告" echo "==========================================${NC}" echo -e "总测试数: ${BLUE}$total_tests${NC}" echo -e "通过测试: ${GREEN}$passed_tests${NC}" echo -e "失败测试: ${RED}$failed_tests${NC}" echo -e "成功率: ${BLUE}$((passed_tests * 100 / total_tests))%${NC}" echo if [ $failed_tests -eq 0 ]; then log_success "🎉 所有测试通过!MCP Server功能正常。" else log_warning "⚠️ 有 $failed_tests 个测试失败,请检查日志。" fi } # 清理函数 cleanup() { log_info "清理测试环境..." # 停止测试启动的服务器 if [ ! -z "$SERVER_PID" ]; then kill $SERVER_PID 2>/dev/null || true log_info "已停止测试服务器" fi # 清理临时文件 rm -f server.log test.log } # 主测试函数 run_tests() { local total_tests=0 local passed_tests=0 echo -e "${BLUE}" echo "==========================================" echo " AI智能客服MCP Server 功能测试" echo "==========================================" echo -e "${NC}" # 设置清理陷阱 trap cleanup EXIT # 检查服务器状态 if ! check_server_running; then if ! start_server; then log_error "无法启动MCP Server,测试终止" exit 1 fi fi # 等待服务器完全启动 sleep 2 # 执行测试 echo log_info "开始执行功能测试..." echo # 测试1: 工具列表 total_tests=$((total_tests + 1)) if test_tools_list; then passed_tests=$((passed_tests + 1)) fi echo # 测试2: 订单查询 total_tests=$((total_tests + 1)) if test_order_query; then passed_tests=$((passed_tests + 1)) fi echo # 测试3: 网点查询 total_tests=$((total_tests + 1)) if test_store_query; then passed_tests=$((passed_tests + 1)) fi echo # 测试4: 错误处理 total_tests=$((total_tests + 1)) if test_error_handling; then passed_tests=$((passed_tests + 1)) fi echo # 测试5: 性能测试 total_tests=$((total_tests + 1)) if test_performance; then passed_tests=$((passed_tests + 1)) fi echo # 生成报告 generate_report $total_tests $passed_tests } # 显示帮助信息 show_help() { echo "AI智能客服MCP Server 测试脚本" echo echo "用法: $0 [选项]" echo echo "选项:" echo " -h, --help 显示帮助信息" echo " -s, --server 指定服务器地址 (默认: http://localhost:3000)" echo " -p, --phone 指定测试手机号 (默认: 17798762697)" echo " -l, --lat 指定测试纬度 (默认: 39.946613)" echo " -g, --lng 指定测试经度 (默认: 116.370503)" echo echo "示例:" echo " $0 # 使用默认参数测试" echo " $0 -s http://192.168.1.100:3000 # 测试远程服务器" echo " $0 -p 13800138000 # 使用指定手机号测试" } # 解析命令行参数 while [[ $# -gt 0 ]]; do case $1 in -h|--help) show_help exit 0 ;; -s|--server) SERVER_URL="$2" shift 2 ;; -p|--phone) TEST_PHONE="$2" shift 2 ;; -l|--lat) TEST_LATITUDE="$2" shift 2 ;; -g|--lng) TEST_LONGITUDE="$2" shift 2 ;; *) log_error "未知参数: $1" show_help exit 1 ;; esac done # 运行测试 run_tests

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yakir-Yang/mcp_demo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server