211 lines
6.7 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# MCP Commands Script
# This script contains various MCP commands for testing AgentCore Gateway
# Get the directory where this script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "MCP Gateway Commands"
echo "==================="
echo ""
# Check if required files exist in script directory
if [ ! -f "${SCRIPT_DIR}/.access_token" ]; then
echo "❌ Error: .access_token file not found in ${SCRIPT_DIR}"
echo "Run generate_token.py or create_gateway.sh first"
exit 1
fi
if [ ! -f "${SCRIPT_DIR}/.gateway_uri" ]; then
echo "❌ Error: .gateway_uri file not found in ${SCRIPT_DIR}"
echo "Run create_gateway.sh first to create a gateway"
exit 1
fi
echo "✅ Found .access_token and .gateway_uri files"
echo ""
# List available tools
echo "📋 Listing available tools..."
TOOLS_RESPONSE=$(curl -vvv -sS --request POST --header 'Content-Type: application/json' \
--header "Authorization: Bearer $(cat ${SCRIPT_DIR}/.access_token)" \
--data '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}' \
"$(cat ${SCRIPT_DIR}/.gateway_uri)/mcp")
echo "$TOOLS_RESPONSE" | jq .
# Parse and display tool summary
echo ""
echo "🔧 Tool Summary:"
echo "================"
# Extract tools array and count
TOOLS_COUNT=$(echo "$TOOLS_RESPONSE" | jq -r '.result.tools | length // 0')
echo "📊 Total Tools Found: $TOOLS_COUNT"
if [ "$TOOLS_COUNT" -gt 0 ]; then
echo ""
echo "📝 Tool Names:"
# Extract and display each tool name
echo "$TOOLS_RESPONSE" | jq -r '.result.tools[]?.name // empty' | while IFS= read -r tool_name; do
if [ -n "$tool_name" ]; then
echo "$tool_name"
fi
done
else
echo "❌ No tools found in the response"
fi
echo ""
# Extract and call a specific tool - get_pod_status
echo "🔨 Testing get_pod_status Tool:"
echo "================================"
# Extract the get_pod_status tool name from the tools list
GET_POD_STATUS_TOOL=$(echo "$TOOLS_RESPONSE" | jq -r '.result.tools[]? | select(.name | contains("get_pod_status")) | .name // empty' | head -1)
if [ -n "$GET_POD_STATUS_TOOL" ]; then
echo "✅ Found tool: $GET_POD_STATUS_TOOL"
echo ""
# Call get_pod_status with parameters based on OpenAPI spec
# Parameters: namespace (optional), pod_name (optional)
echo "📤 Calling $GET_POD_STATUS_TOOL with namespace='production'..."
POD_STATUS_RESPONSE=$(curl -vvv -sS --request POST --header 'Content-Type: application/json' \
--header "Authorization: Bearer $(cat ${SCRIPT_DIR}/.access_token)" \
--data '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "'"$GET_POD_STATUS_TOOL"'",
"arguments": {
"namespace": "production"
}
}
}' \
"$(cat ${SCRIPT_DIR}/.gateway_uri)/mcp")
echo "📥 Response:"
echo "$POD_STATUS_RESPONSE" | jq .
# Try another call with a specific pod name
echo ""
echo "📤 Calling $GET_POD_STATUS_TOOL with pod_name='web-app-deployment-5c8d7f9b6d-k2n8p'..."
SPECIFIC_POD_RESPONSE=$(curl -sS --request POST --header 'Content-Type: application/json' \
--header "Authorization: Bearer $(cat ${SCRIPT_DIR}/.access_token)" \
--data '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "'"$GET_POD_STATUS_TOOL"'",
"arguments": {
"pod_name": "web-app-deployment-5c8d7f9b6d-k2n8p"
}
}
}' \
"$(cat ${SCRIPT_DIR}/.gateway_uri)/mcp")
echo "📥 Response:"
echo "$SPECIFIC_POD_RESPONSE" | jq .
else
echo "❌ get_pod_status tool not found in the tools list"
fi
echo ""
# Extract and call a specific tool - get_performance_metrics
echo "🔨 Testing get_performance_metrics Tool:"
echo "========================================"
# Extract the get_performance_metrics tool name from the tools list
GET_PERFORMANCE_METRICS_TOOL=$(echo "$TOOLS_RESPONSE" | jq -r '.result.tools[]? | select(.name | contains("get_performance_metrics")) | .name // empty' | head -1)
if [ -n "$GET_PERFORMANCE_METRICS_TOOL" ]; then
echo "✅ Found tool: $GET_PERFORMANCE_METRICS_TOOL"
echo ""
# Test 1: Call get_performance_metrics with metric_type='response_time' and service
echo "📤 Calling $GET_PERFORMANCE_METRICS_TOOL with metric_type='response_time' and service='web-service'..."
PERF_METRICS_RESPONSE_1=$(curl -sS --request POST --header 'Content-Type: application/json' \
--header "Authorization: Bearer $(cat ${SCRIPT_DIR}/.access_token)" \
--data '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "'"$GET_PERFORMANCE_METRICS_TOOL"'",
"arguments": {
"metric_type": "response_time",
"service": "web-service"
}
}
}' \
"$(cat ${SCRIPT_DIR}/.gateway_uri)/mcp")
echo "📥 Response:"
echo "$PERF_METRICS_RESPONSE_1" | jq .
# Test 2: Call get_performance_metrics with metric_type='memory_usage' and time range
echo ""
echo "📤 Calling $GET_PERFORMANCE_METRICS_TOOL with metric_type='memory_usage' and time range..."
PERF_METRICS_RESPONSE_2=$(curl -sS --request POST --header 'Content-Type: application/json' \
--header "Authorization: Bearer $(cat ${SCRIPT_DIR}/.access_token)" \
--data '{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "'"$GET_PERFORMANCE_METRICS_TOOL"'",
"arguments": {
"metric_type": "memory_usage",
"start_time": "2024-01-15T14:00:00Z",
"end_time": "2024-01-15T15:00:00Z"
}
}
}' \
"$(cat ${SCRIPT_DIR}/.gateway_uri)/mcp")
echo "📥 Response:"
echo "$PERF_METRICS_RESPONSE_2" | jq .
# Test 3: Call get_performance_metrics with metric_type='throughput' with service and time range
echo ""
echo "📤 Calling $GET_PERFORMANCE_METRICS_TOOL with metric_type='throughput', service='api-service' and time range..."
PERF_METRICS_RESPONSE_3=$(curl -sS --request POST --header 'Content-Type: application/json' \
--header "Authorization: Bearer $(cat ${SCRIPT_DIR}/.access_token)" \
--data '{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "'"$GET_PERFORMANCE_METRICS_TOOL"'",
"arguments": {
"metric_type": "throughput",
"service": "api-service",
"start_time": "2024-01-15T13:00:00Z",
"end_time": "2024-01-15T14:00:00Z"
}
}
}' \
"$(cat ${SCRIPT_DIR}/.gateway_uri)/mcp")
echo "📥 Response:"
echo "$PERF_METRICS_RESPONSE_3" | jq .
else
echo "❌ get_performance_metrics tool not found in the tools list"
fi
echo ""