test_step4.shโข4.98 kB
#!/bin/bash
# Test script for Step 4: MCP Tools Dispatching
echo "๐งช Testing Step 4: MCP Tools Dispatching"
echo "========================================="
# Function to cleanup background processes
cleanup() {
echo "๐งน Cleaning up..."
if [ ! -z "$SERVER_PID" ]; then
kill $SERVER_PID 2>/dev/null
wait $SERVER_PID 2>/dev/null
fi
exit 0
}
# Set trap to cleanup on script exit
trap cleanup EXIT INT TERM
# Start the server in background
echo "๐ Starting Step 4 server..."
uv run step4 &
SERVER_PID=$!
# Wait for server to start
echo "โณ Waiting for server to start..."
sleep 3
# Test health endpoint
echo "๐ Testing health endpoint..."
HEALTH_RESPONSE=$(curl -s http://localhost:9000/health)
if [ $? -eq 0 ]; then
echo "โ
Health endpoint test passed!"
echo "๐ Response: $HEALTH_RESPONSE"
else
echo "โ Health endpoint test failed!"
exit 1
fi
# Test MCP initialize method
echo "๐ Testing MCP initialize method..."
INIT_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "initialize"}')
if [ $? -eq 0 ]; then
echo "โ
MCP initialize test passed!"
echo "๐ Response: $INIT_RESPONSE"
# Check if response contains expected fields
if echo "$INIT_RESPONSE" | grep -q '"protocolVersion"' && echo "$INIT_RESPONSE" | grep -q '"serverInfo"'; then
echo "โ
Initialize response format is correct!"
else
echo "โ Initialize response format is incorrect!"
exit 1
fi
else
echo "โ MCP initialize test failed!"
exit 1
fi
# Test list_tools method
echo "๐ Testing list_tools method..."
TOOLS_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}')
if [ $? -eq 0 ]; then
echo "โ
list_tools test passed!"
echo "๐ Response: $TOOLS_RESPONSE"
# Check if response contains tools
if echo "$TOOLS_RESPONSE" | grep -q '"name":"echo"'; then
echo "โ
Echo tool is listed correctly!"
else
echo "โ Echo tool not found in response!"
exit 1
fi
else
echo "โ list_tools test failed!"
exit 1
fi
# Test call_tool method
echo "๐ Testing call_tool method..."
CALL_TOOL_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "echo", "arguments": {"message": "Hello World", "repeat_count": 3}}}')
if [ $? -eq 0 ]; then
echo "โ
call_tool test passed!"
echo "๐ Response: $CALL_TOOL_RESPONSE"
# Check if response contains the echoed message
if echo "$CALL_TOOL_RESPONSE" | grep -q 'Hello WorldHello WorldHello World'; then
echo "โ
Echo tool works correctly!"
else
echo "โ Echo tool response is incorrect!"
exit 1
fi
else
echo "โ call_tool test failed!"
exit 1
fi
# Test call_tool with different parameters
echo "๐ Testing call_tool with different parameters..."
CALL_TOOL_RESPONSE2=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": {"name": "echo", "arguments": {"message": "Test", "repeat_count": 2}}}')
if [ $? -eq 0 ]; then
echo "โ
call_tool with different params test passed!"
echo "๐ Response: $CALL_TOOL_RESPONSE2"
# Check if response contains the echoed message
if echo "$CALL_TOOL_RESPONSE2" | grep -q 'TestTest'; then
echo "โ
Echo tool with different parameters works correctly!"
else
echo "โ Echo tool with different parameters response is incorrect!"
exit 1
fi
else
echo "โ call_tool with different params test failed!"
exit 1
fi
# Test unsupported method (should return error)
echo "๐ Testing unsupported method..."
ERROR_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 5, "method": "unknown_method"}')
if [ $? -eq 0 ]; then
echo "โ
Unsupported method test passed!"
echo "๐ Response: $ERROR_RESPONSE"
# Check if response contains error
if echo "$ERROR_RESPONSE" | grep -q '"error"' && echo "$ERROR_RESPONSE" | grep -q '"code":-32603'; then
echo "โ
Error handling for unsupported methods works correctly!"
else
echo "โ Error handling for unsupported methods is incorrect!"
exit 1
fi
else
echo "โ Unsupported method test failed!"
exit 1
fi
echo ""
echo "๐ Step 4 tests completed successfully!"
echo "โ
MCP initialize method works correctly"
echo "โ
Tools dispatching is implemented and working"
echo "โ
Echo tool responds correctly with different parameters"
echo "โ
Error handling for unsupported methods works"
echo "โ
JSON-RPC 2.0 format is maintained throughout"