用途
mcp-internet-speed-test 是一个专门的 Model Context Protocol(MCP)服务器实现,用于互联网速度测试。它让 AI 模型和智能体能够通过标准化接口测量、分析和报告网络性能指标。MCP 被描述为“AI 应用的 USB-C”,即为大语言模型(LLM)提供与外部工具和数据源交互的通用接口。
主要能力
- 智能增量测试:采用 SpeedOf.Me 方法论,以 8 秒阈值为准,追求最佳准确性。
- 下载速度测试:使用来自 GitHub 仓库(Git LFS)的 128KB 至 128MB 文件测量带宽。
- 上传速度测试:使用 128KB 至 128MB 的流式数据测试上传带宽。
- 延迟测试:使用多个样本测量网络延迟,并报告最小值。
- 抖动分析:通过多个延迟样本(默认 5 个)计算网络稳定性。
- 多 CDN 支持:检测并提供 Fastly、Cloudflare 和 AWS CloudFront 的信息。
- 地理位置:将 POP 代码映射到物理位置(全球 50 多个位置)。
- 缓存分析:检测 HIT/MISS 状态和缓存头。
- 服务器元数据:提取详细 CDN 头,包括 x-served-by、via、x-cache。
- 综合测试:通过单一函数运行所有测试并获取完整指标。
使用方式
环境要求为 Python 3.12 或更高版本(异步支持所需),以及 pip 或 uv 包管理器。安装方式包括:从 PyPI 使用 pip 安装(推荐)、从 PyPI 使用 uv 安装、使用 Docker,或用于贡献/修改代码的开发/本地安装。
该 MCP 服务器提供以下工具:
测试函数:
- measure_download_speed:测量下载带宽(Mbps),包含服务器位置信息。
- measure_upload_speed:测量上传带宽(Mbps),包含服务器位置信息。
- measure_latency:使用样本测量网络延迟(ms),报告最小值。
- measure_jitter:通过分析延迟变化测量网络抖动,包含服务器信息。
- get_server_info:无需运行速度测试即可获取任意 URL 的详细 CDN 服务器信息。
- run_complete_test:包含全部指标和服务器元数据的综合测试。
要在 Claude Desktop 或其他 MCP 客户端中使用此 MCP 服务器,需将其添加到 MCP 配置文件中(例如编辑 Claude Desktop 的 MCP 配置文件)。
项目中包含的具体安装命令、配置示例与代码片段请参见项目页面原文。
适用场景
- 网络诊断:了解实际为测试提供服务的服务器。
- 性能分析:将速度结果与服务器地理距离相关联。
- CDN 优化:识别 ISP 的路由是否最优。
- 地理感知:了解测试是否在预期的区域运行。
- 故障排查:识别路由问题和 CDN 配置错误。
限制与技术细节
- 测试时长阈值:8.0 秒(样本超过此值时停止)。
- 最大文件大小:可配置(默认 128MB)。
- 延迟样本:10 次测量,报告最小值(可配置)。
- 抖动样本:5 次测量(可配置)。
- sustain_time:1-8 秒(可配置,默认 8)。
技术实现上采用增量方法:从 128KB 小文件开始,按 2 的幂次逐步增大;使用基于时间的阈值(可配置 sustain_time 1-8 秒,默认 8),当某样本超过阈值时停止;最终测量速度取自耗时 ≥ 8 秒的最后一个样本。CDN 提供商检测包括 Fastly、Cloudflare 和 AWS CloudFront,通过解析 x-served-by、via、x-cache 及自定义 CDN 头进行分析。测试端点包括 Cloudflare Workers (httpi.dev) 作为最高优先级,以及 HTTPBin (httpbin.org) 作为基于 AWS 的次选端点。
常见问题排查提示:确保 MCP 配置中使用绝对路径;验证项目目录的读/执行权限;需要 Python 3.12+ 及异步支持;安装 mcp[cli] 和 httpx;确保 GitHub 仓库 inventer-dev/speed-test-files 可访问;检查企业防火墙/代理是否拦截测试端点;部分 ISP 到 CDN 的路由可能不同;抖动测试需要稳定连接;大文件(>50MB)在慢速连接上可能超时;主上传端点失败时会自动回退;POP 检测依赖 CDN 头的一致性。
该项目为实验性项目,采用 MIT 许可证。