使用说明
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互联网速度测试提供以下工具:
测试功能
measure_download_speed:使用服务器位置信息测量下载带宽(单位:Mbps)measure_upload_speed:使用服务器位置信息测量上传带宽(单位:Mbps)measure_latency:使用样本测量网络延迟(以毫秒为单位),报告最小值measure_jitter:通过分析服务器信息的延迟变化来测量网络抖动get_server_info:无需运行速度测试即可获取任何URL的详细CDN服务器信息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
上传端点优先级
- Cloudflare Workers (httpi.dev)-全局分发,最高优先级
- 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服务器连接
- 路径配置:确保在MCP配置中使用绝对路径
- 目录权限:验证项目目录的读取/执行权限
- Python版本:需要支持异步的Python 3.12+
- 依赖项:安装
mcp[cli]和httpx包裹
速度测试问题
- GitHub存储库访问:确保
inventer-dev/speed-test-files可访问的 - 防火墙/代理:检查公司防火墙是否阻止测试端点
- CDN路由:一些ISP可能会以不同的方式路由到CDN
- 网络稳定性:抖动测试需要稳定的连接
性能考量
- 文件大小限制:连接速度较慢时,大文件(>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"
贡献
这是一个实验项目,欢迎投稿:
- 问题:报告错误或请求功能
- 拉取请求:提交代码改进
- 文档:帮助改进此README
- 测试:使用不同的网络条件和CDN进行测试
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
致谢
- 用于标准化AI工具交互的MCP框架维护者
- 用于文档和示例的模型上下文协议社区
- 速度。我 团队的增量测试方法(运作原理).看 方法参考如下
- 对于官方的SpeedOf。Me MCP服务器,请参阅 @速度fme/mcp
速度。医用电气测试方法
来源: 速度。我——它是如何工作的
此部分保留SpeedOf。参考的Me测试方法 通过这个项目。2026年3月8日取回。
Click to expand full methodology
概述
速度。我通过下载和上传样本来测试互联网连接 文件夹。它通过使用单个 HTTP连接和大型连续文件——就像真实的网络内容一样 交付。
下载测试
- 首先下载 最小样本量 (128kb)。
- 实时测量下载持续时间。
- 如果下载需要 少于8秒,移动到 下一个更大 样本量.
- 如果下载需要 8秒或更长时间,停止进展。
- 这 最终速度测量 基于 最后一个样本 --那个 这花了8秒或更长时间。
上传测试
下载测试完成后,使用类似的增量过程 将数据发送回测试服务器:
- 从a开始 小样本 并且尺寸逐渐增大。
- 继续,直到上传样本为止 超过8秒.
- 上传速度基于最终样本。
延迟和抖动
- 延迟(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技术处理此过程 以提供最准确和一致的测试结果。
准确度
使这种方法准确的关键差异:
- 单次连续下载 --下载大型连续示例文件, 类似于网页或媒体文件的典型交付方式。其他速度 测试使用并行传输的小块,并对其进行调整 估计速度。
- 多个全局服务器 --在不同地区使用PoP,生产更多 现实的结果。其他服务通常选择最近的物理服务器 (有时在ISP网络内部),这可能会产生夸大的结果。
- 无需插件 --测试直接从客户端运行,无需额外 软件。
本项目如何实施方法论
| 速度。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 |