#!/usr/bin/env python3
"""
Test client for simplified MCP server to verify functionality
"""
import asyncio
import json
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def test_mcp_server():
"""Test the simplified MCP server functionality"""
# Server parameters
server_params = StdioServerParameters(
command="python3",
args=["mcp_server.py"],
env=None
)
try:
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# Initialize session
await session.initialize()
print("✓ MCP Server initialized successfully")
# List available tools
tools_response = await session.list_tools()
print(f"✓ Available tools: {[tool.name for tool in tools_response.tools]}")
# Test 1: Calculator - Addition
print("\n--- Test 1: Calculator - Addition ---")
result = await session.call_tool("calculator", {
"operation": "add",
"a": 15,
"b": 25
})
print(f"15 + 25 = {result.content[0].text}")
# Test 2: Calculator - Division
print("\n--- Test 2: Calculator - Division ---")
result = await session.call_tool("calculator", {
"operation": "divide",
"a": 100,
"b": 4
})
print(f"100 ÷ 4 = {result.content[0].text}")
# Test 3: Calculator - Division by zero (error test)
print("\n--- Test 3: Calculator - Division by Zero ---")
result = await session.call_tool("calculator", {
"operation": "divide",
"a": 10,
"b": 0
})
print(f"10 ÷ 0 = {result.content[0].text}")
# Test 4: Greeting - English
print("\n--- Test 4: Greeting - English ---")
result = await session.call_tool("greeting", {
"name": "John",
"language": "english"
})
print(f"English greeting: {result.content[0].text}")
# Test 5: Greeting - Spanish
print("\n--- Test 5: Greeting - Spanish ---")
result = await session.call_tool("greeting", {
"name": "Maria",
"language": "spanish"
})
print(f"Spanish greeting: {result.content[0].text}")
# Test 6: Greeting - Unsupported language (error test)
print("\n--- Test 6: Greeting - Unsupported Language ---")
result = await session.call_tool("greeting", {
"name": "Yuki",
"language": "japanese"
})
print(f"Unsupported language test: {result.content[0].text}")
print("\n✓ All tests completed successfully!")
except Exception as e:
print(f"✗ Error testing MCP server: {e}")
if __name__ == "__main__":
asyncio.run(test_mcp_server())