#!/bin/bash
# Test script for Step 3: MCP Tools and Prompts
echo "π§ͺ Testing Step 3: MCP Tools and Prompts"
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 3 server..."
uv run step3 &
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 ping method
echo "π Testing MCP ping method..."
PING_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "ping"}')
if [ $? -eq 0 ]; then
echo "β
MCP ping test passed!"
echo "π Response: $PING_RESPONSE"
else
echo "β MCP ping 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 error (expected since dispatching not implemented)
if echo "$TOOLS_RESPONSE" | grep -q '"error"' && echo "$TOOLS_RESPONSE" | grep -q '"code":-32601'; then
echo "β
Correctly returns 'Method not found' (dispatching not implemented yet)"
else
echo "β Unexpected response format!"
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 error (expected since dispatching not implemented)
if echo "$CALL_TOOL_RESPONSE" | grep -q '"error"' && echo "$CALL_TOOL_RESPONSE" | grep -q '"code":-32601'; then
echo "β
Correctly returns 'Method not found' (dispatching not implemented yet)"
else
echo "β Unexpected response format!"
exit 1
fi
else
echo "β call_tool test failed!"
exit 1
fi
# Test list_prompts method
echo "π Testing list_prompts method..."
PROMPTS_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 4, "method": "prompts/list"}')
if [ $? -eq 0 ]; then
echo "β
list_prompts test passed!"
echo "π Response: $PROMPTS_RESPONSE"
# Check if response contains error (expected since dispatching not implemented)
if echo "$PROMPTS_RESPONSE" | grep -q '"error"' && echo "$PROMPTS_RESPONSE" | grep -q '"code":-32601'; then
echo "β
Correctly returns 'Method not found' (dispatching not implemented yet)"
else
echo "β Unexpected response format!"
exit 1
fi
else
echo "β list_prompts test failed!"
exit 1
fi
# Test get_prompt method
echo "π Testing get_prompt method..."
GET_PROMPT_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 5, "method": "prompts/get", "params": {"name": "echo_prompt", "arguments": {"message": "Test Message"}}}')
if [ $? -eq 0 ]; then
echo "β
get_prompt test passed!"
echo "π Response: $GET_PROMPT_RESPONSE"
# Check if response contains error (expected since dispatching not implemented)
if echo "$GET_PROMPT_RESPONSE" | grep -q '"error"' && echo "$GET_PROMPT_RESPONSE" | grep -q '"code":-32601'; then
echo "β
Correctly returns 'Method not found' (dispatching not implemented yet)"
else
echo "β Unexpected response format!"
exit 1
fi
else
echo "β get_prompt test failed!"
exit 1
fi
echo ""
echo "π Step 3 tests completed successfully!"
echo "β
MCP tools and prompts are defined (but not dispatched yet)"
echo "β
Server correctly returns 'Method not found' for unimplemented methods"
echo "β
JSON-RPC 2.0 error format is maintained"
echo "β
Ready for next step: implementing method dispatching"