# performance_test.py
import asyncio
import time
from client import MCPFileAnalyzerClient
async def measure_tool_performance():
"""Measure actual response times for each tool."""
client = MCPFileAnalyzerClient()
if not await client.connect():
print("Failed to connect")
return
# Test each tool multiple times
tools_to_test = [
("list_data_files", {}),
("summarize_csv", {"file_name": "sample.csv"}),
("analyze_csv", {"file_name": "sample.csv", "operation": "describe"}),
("analyze_csv", {"file_name": "sample.csv", "operation": "head"}),
("comprehensive_analysis", {"file_name": "ecommerce_transactions.csv"}),
]
results = {}
for tool_name, args in tools_to_test:
times = []
for i in range(5): # Run 5 times for average
start = time.time()
result = await client.call_tool(tool_name, args)
end = time.time()
times.append((end - start) * 1000) # Convert to milliseconds
avg_time = sum(times) / len(times)
min_time = min(times)
max_time = max(times)
results[tool_name] = {
"average": avg_time,
"min": min_time,
"max": max_time,
"times": times
}
print(f"{tool_name}: {avg_time:.2f}ms (min: {min_time:.2f}ms, max: {max_time:.2f}ms)")
await client.disconnect()
# Print summary
print("\n=== Performance Summary ===")
for tool, data in results.items():
print(f"{tool}: {data['average']:.2f}ms average")
return results
if __name__ == "__main__":
asyncio.run(measure_tool_performance())