kshitijthakkar/mcp-server-bench-gradio-optimized
๐ฌ Gradio vs FastMCP Benchmark Report Generated: 2026-03-02T13:04:10.857215 Total scenarios: 48 Executive Summary echo: Fastmcp wins (96.6 vs 176.5 RPS, 1.83x difference) Gradio best config: concurrency_limit=nan fibonacci: Fastmcp wins (43.5 vs 57.1 RPS, 1.31x difference) Gradio best config: concurrency_limit=nan async_sleep: Gradio wins (93.1 vs 80.2 RPS, 1.16x difference) Gradio best config: concurrency_limit=nan payload_echo: Fastmcp wins (82.5 vs 164.8โฆ See the full description on the dataset page: https://huggingface.co/datasets/kshitijthakkar/mcp-server-bench-gradio-optimized.
๐ฌ Gradio vs FastMCP Benchmark Report
Generated: 2026-03-02T13:04:10.857215
Total scenarios: 48
Executive Summary
- echo: Fastmcp wins (96.6 vs 176.5 RPS, 1.83x difference)
- Gradio best config: concurrency_limit=nan
- fibonacci: Fastmcp wins (43.5 vs 57.1 RPS, 1.31x difference)
- Gradio best config: concurrency_limit=nan
- async_sleep: Gradio wins (93.1 vs 80.2 RPS, 1.16x difference)
- Gradio best config: concurrency_limit=nan
- payload_echo: Fastmcp wins (82.5 vs 164.8 RPS, 2.0x difference)
- Gradio best config: concurrency_limit=nan
Throughput (Requests/Second)
Latency p50 (ms)
Gradio concurrency_limit Scaling
How does Gradio's throughput change as concurrency_limit increases?
Protocol Overhead: HTTP API vs MCP
Comparing latency of the same tool called via REST API vs MCP protocol:
Error Rates
All scenarios completed with 0% error rate. โ
Resource Usage
Benchmark Charts
Methodology
- Both servers use identical tool implementations (imported from shared_tools.py)
- Each scenario runs in an isolated server subprocess
- Warmup period excluded from measurements
- Load generated by async httpx workers (not external tools)
- MCP tests use full protocol lifecycle (initialize โ call_tool)
- System metrics sampled every 1s via psutil
Benchmarks generated by [mcp-server-bench](https://github.com/Mandark-droid/mcp-server-bench)
