网络速度测试工具

MCP Internet Speed Test 是一个基于模型上下文协议(MCP)的网络速度测试工具,允许AI模型和代理通过标准化接口测量、分析和报告网络性能指标。

  • by inventer-dev
  • Python
  • 本地部署
  • 15 星标
  • 更新于
在 GitHub 查看 inventer-dev/mcp-internet-speed-test

使用说明

MCP互联网速度测试

用于互联网速度测试的模型上下文协议(MCP)的实现。它允许AI模型和代理通过标准化的接口测量、分析和报告网络性能指标。

📦 在PyPI上可用: https://pypi.org/project/mcp-internet-speed-test/

🚀 快速入门:

pip install mcp-internet-speed-test
mcp-internet-speed-test

什么是MCP?

模型上下文协议(MCP)为大型语言模型(LLM)提供了一种与外部工具和数据源交互的标准化方法。将其视为“用于人工智能应用的USB-C”——一个允许人工智能系统访问现实世界功能和信息的通用接口。

特性

  • 智能增量测试:用途 速度。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或 紫外线 包管理器

选项1:使用pip从PyPI安装(推荐)

# Install the package globally
pip install mcp-internet-speed-test

# Run the MCP server
mcp-internet-speed-test

选项2:使用uv从PyPI安装

# Install the package globally
uv add mcp-internet-speed-test

# Or run directly without installing
uvx mcp-internet-speed-test

选项3:使用docker

# Build the Docker image
docker build -t mcp-internet-speed-test .

# Run the MCP server in a Docker container
docker run -it --rm -v $(pwd):/app -w /app mcp-internet-speed-test

选项4:开发/本地安装

如果你想贡献或修改代码:

# Clone the repository
git clone https://github.com/inventer-dev/mcp-internet-speed-test.git
cd mcp-internet-speed-test

# Install in development mode
pip install -e .

# Or using uv
uv sync
uv run python -m mcp_internet_speed_test.main

依赖项

软件包会自动安装这些依赖项:

  • mcp[cli]>=1.25.0:带CLI集成的MCP服务器框架
  • httpx>=0.27.0:异步HTTP客户端用于速度测试

配置

要将此MCP服务器与Claude Desktop或其他MCP客户端一起使用,请将其添加到MCP配置文件中。

Claude桌面配置

编辑您的Claude Desktop MCP配置文件:

选项1:使用pip安装包(推荐)

{
    "mcpServers": {
        "mcp-internet-speed-test": {
            "command": "mcp-internet-speed-test"
        }
    }
}

选项2:使用uvx

{
    "mcpServers": {
        "mcp-internet-speed-test": {
            "command": "uvx",
            "args": ["mcp-internet-speed-test"]
        }
    }
}

API工具

MCP互联网速度测试提供以下工具:

测试功能

  1. measure_download_speed:使用服务器位置信息测量下载带宽(单位:Mbps)
  2. measure_upload_speed:使用服务器位置信息测量上传带宽(单位:Mbps)
  3. measure_latency:使用样本测量网络延迟(以毫秒为单位),报告最小值
  4. measure_jitter:通过分析服务器信息的延迟变化来测量网络抖动
  5. get_server_info:无需运行速度测试即可获取任何URL的详细CDN服务器信息
  6. run_complete_test:使用所有指标和服务器元数据进行全面测试

CDN服务器检测

此速度测试现在提供了有关为您的测试提供服务的CDN服务器的详细信息:

所得

  • CDN提供商:标识您是连接到Fastly、Cloudflare还是Amazon CloudFront
  • 地理位置:显示服务器的物理位置(例如,“墨西哥城,墨西哥”)
  • 流行代码:标识存在点的三个字母代码(例如,“MEX”、“QRO”、“DFW”)
  • 缓存状态:内容是从缓存提供(HIT)还是从源获取(MISS)
  • 服务器标头:完整的HTTP标头,包括 x-served-by, via,以及 x-cache

技术实现

智能测试方法

  • 增量方法:从小文件(128KB)开始,然后逐渐增加(2的幂)
  • 基于时间的阈值:使用可配置的sustain_time(1-8秒,默认值:8)。当样本超过阈值时停止
  • 精准聚焦:最后一个采样时间≥8秒的速度用作最终测量值
  • 多提供商支持:对地理分布的端点进行测试
  • 完整的方法论:参见 速度。医用电气测试方法

CDN检测功能

  • 快速地:检测POP代码并映射到50多个全球位置
  • 云耀:标识数据中心和地理区域
  • AWS云前端:识别各大洲的边缘位置
  • 标题分析:解析 x-served-by, via, x-cache,以及自定义CDN标头

为什么这很重要

  • 网络诊断:了解实际为您的测试提供服务的服务器
  • 性能分析:将速度结果与服务器距离相关联
  • CDN优化:确定ISP的路由是否最佳
  • 地理意识:知道测试是否在您预期的区域运行
  • 故障排除:识别路由问题和CDN配置错误

服务器信息输出示例

{
  "cdn_provider": "Fastly",
  "pop_code": "MEX",
  "pop_location": "Mexico City, Mexico",
  "served_by": "cache-mex4329-MEX",
  "cache_status": "HIT",
  "x_cache": "HIT, HIT"
}

技术配置

默认测试文件存储库

GitHub Repository: inventer-dev/speed-test-files
Branch: main
URL: https://media.githubusercontent.com/media/inventer-dev/speed-test-files/main/
File Sizes: 128KB, 256KB, 512KB, 1MB, 2MB, 4MB, 8MB, 16MB, 32MB, 64MB, 128MB
Storage: Git LFS

上传端点优先级

  1. Cloudflare Workers (httpi.dev)-全局分发,最高优先级
  2. HTTPBin (httpbin.org)-基于AWS的辅助端点

支持的CDN位置(150+POP)

持久性有机污染物:MEX、QRO、DFW、LAX、NYC、MIA、LHR、FRA、AMS、CDG、NRT、SIN、SYD、GRU、SCL、BOG、MAD、MIL。..

Cloudflare中心:DFW、LAX、SJC、SEA、ORD、MCI、IAD、ATL、MIA、YYZ、LHR、FRA、AMS、CDG、ARN、STO。..

AWS云前端:ATL、BOS、ORD、CMH、DFW、DEN、IAD、LAX、MIA、MSP、JFK、SEA、SJC、AMS、ATH、TXL。..

性能阈值

  • 测试持续时间阈值:8.0秒(当样本超过此值时停止)
  • 最大文件大小:可配置(默认值:128MB)
  • 延迟样本:至少10次测量,报告(可配置)
  • 抖动样本:5个测量值(可配置)
  • 维持时间:1-8秒(可配置,默认值:8)

故障排除

常见问题

MCP服务器连接

  1. 路径配置:确保在MCP配置中使用绝对路径
  2. 目录权限:验证项目目录的读取/执行权限
  3. Python版本:需要支持异步的Python 3.12+
  4. 依赖项:安装 mcp[cli] 和 httpx 包裹

速度测试问题

  1. GitHub存储库访问:确保 inventer-dev/speed-test-files 可访问的
  2. 防火墙/代理:检查公司防火墙是否阻止测试端点
  3. CDN路由:一些ISP可能会以不同的方式路由到CDN
  4. 网络稳定性:抖动测试需要稳定的连接

性能考量

  • 文件大小限制:连接速度较慢时,大文件(>50MB)可能会超时
  • 上传端点:如果主端点失败,则自动回退
  • 地理精度:POP检测取决于CDN标头的一致性

发展

项目结构

mcp-internet-speed-test/
├── mcp_internet_speed_test/  # Main package directory
│   ├── __init__.py      # Package initialization
│   └── main.py          # MCP server implementation
├── README.md           # This documentation (includes methodology reference)
├── Dockerfile          # Container configuration
└── pyproject.toml      # Python project configuration

关键组件

配置常数

  • GITHUB_MEDIA_URL:测试文件存储库的基本URL(Git LFS媒体端点)
  • UPLOAD_ENDPOINTS:上传测试端点的优先级列表
  • SIZE_PROGRESSION:增量测试文件大小的有序列表(2的幂)
  • *_POP_LOCATIONS:CDN代码到地理位置的映射

核心功能

  • extract_server_info():解析HTTP标头以识别CDN提供商
  • measure_*():针对不同指标的单独测试功能
  • run_complete_test():编排全面的测试套件

配置定制

您可以在中自定义以下内容 mcp_internet_speed_test/main.py 如果克隆存储库:

# GitHub repository settings
GITHUB_USERNAME = "your-username"
GITHUB_REPO = "your-speed-test-files"
GITHUB_BRANCH = "main"

# Test duration threshold
DEFAULT_TEST_DURATION = 8.0  # seconds

# Default endpoints
DEFAULT_UPLOAD_URL = "your-upload-endpoint"
DEFAULT_LATENCY_URL = "your-latency-endpoint"

贡献

这是一个实验项目,欢迎投稿:

  1. 问题:报告错误或请求功能
  2. 拉取请求:提交代码改进
  3. 文档:帮助改进此README
  4. 测试:使用不同的网络条件和CDN进行测试

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

致谢


速度。医用电气测试方法

来源: 速度。我——它是如何工作的

此部分保留SpeedOf。参考的Me测试方法 通过这个项目。2026年3月8日取回。

Click to expand full methodology

概述

速度。我通过下载和上传样本来测试互联网连接 文件夹。它通过使用单个 HTTP连接和大型连续文件——就像真实的网络内容一样 交付。

下载测试

  1. 首先下载 最小样本量 (128kb)。
  2. 实时测量下载持续时间。
  3. 如果下载需要 少于8秒,移动到 下一个更大 样本量.
  4. 如果下载需要 8秒或更长时间,停止进展。
  5. 这 最终速度测量 基于 最后一个样本 --那个 这花了8秒或更长时间。

上传测试

下载测试完成后,使用类似的增量过程 将数据发送回测试服务器:

  1. 从a开始 小样本 并且尺寸逐渐增大。
  2. 继续,直到上传样本为止 超过8秒.
  3. 上传速度基于最终样本。

延迟和抖动

  • 延迟(ping): 数据传输到服务器所需的时间 < 返回测量超过 10个样品 随着 报告的最低值.
  • 抖动: 延迟样本之间的差异。较低的抖动意味着 稳定的连接,这对视频通话和游戏很重要。

自适应测试方法

为确保互联网连接经过彻底测试,带宽以 几次传球.样本文件大小逐渐增加,直到需要更长的时间 下载时间超过8秒。

这种方法会自动测量从非常慢到非常慢的连接速度 移动网络(10 Kbps GPRS/2G)到千兆光纤连接(1 Gbps或 更多)。

示例文件大小

# 大小
1 128 KB
2 256 KB
3 512 KB
4 1 MB
5 2 MB
6 4 MB
7 8 MB
8 16 MB
9 32 MB
10 64 MB
11 128 MB

测试服务器

速度。我将其示例文件托管在 内容分发网络。它使用服务器 被称为 流行音乐 (要点 存在) 106+个城市每个PoP可能由多个服务器组成 位于世界各地的关键地区,靠近主要的互联网交换点。

测试开始时,SpeedOf。我 自动选择最可靠和 响应式服务器这可能不是最接近的一个——考虑了几个因素 以确定最佳选择。CDN技术处理此过程 以提供最准确和一致的测试结果。

准确度

使这种方法准确的关键差异:

  1. 单次连续下载 --下载大型连续示例文件, 类似于网页或媒体文件的典型交付方式。其他速度 测试使用并行传输的小块,并对其进行调整 估计速度。
  2. 多个全局服务器 --在不同地区使用PoP,生产更多 现实的结果。其他服务通常选择最近的物理服务器 (有时在ISP网络内部),这可能会产生夸大的结果。
  3. 无需插件 --测试直接从客户端运行,无需额外 软件。

本项目如何实施方法论

速度。Me概念 在本项目中的实施
增量下载 measure_download_speed() 迭代 SIZE_PROGRESSION,经过时中断≥ sustain_time (默认8秒)
增量上传 measure_upload_speed() 流块和中断时间≥ sustain_time
8秒阈值 可通过配置 sustain_time 参数(1–8秒,默认值8)
延迟——10个样本,分钟 measure_latency(samples=10) 报告 min_latency
抖动——变化 measure_jitter(samples=5) 报告平均偏差
带PoP的CDN 通过Fastly CDN从GitHub下载文件;通过Cloudflare Workers上传
示例文件大小(2的幂次方) 128 KB→ 128 MB存储在 inventer-dev/speed-test-files (Git LFS)
自动服务器选择 CDN处理地理路由;从响应标头中检测到PoP