mcpField
M
MCP Internet Speed Test

MCP Internet Speed Test

本地服务
github.com/inventer-dev开发工具1533 周前更新

关于 MCP Internet Speed Test

面向 AI 模型和 Agent 的网络测速 MCP 服务,可测量带宽、延迟和抖动,并提供 CDN 与服务器位置详情,辅助网络诊断。

主要功能

  1. 01渐进式下载测速
  2. 02上传带宽测量
  3. 03延迟与抖动分析
  4. 04CDN 与位置检测
  5. 05包含服务器元数据的综合测试

适用场景

  1. 01检查网络速度与稳定性
  2. 02结合 CDN 位置分析测速结果
  3. 03查看 CDN 缓存状态和响应头

MCP 相关

向 MCP 客户端提供下载和上传测速、延迟与抖动测量、CDN 服务器信息及综合测试工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"internet-speed-test": {
"command": "uvx",
"args": [
"/path/to/mcp-internet-speed-test"
]
}
}
}
启动命令uvx /path/to/mcp-internet-speed-test

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypi/path/to/mcp-internet-speed-test

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Trust Score

MseeP.ai Security Assessment Badge

mcp-internet-speed-test MCP server

MCP Internet Speed Test

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

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

🚀 快速开始:

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

什么是 MCP?

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

功能

  • 智能增量测试:采用 SpeedOf.Me methodology,并以 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 包管理器
选项 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 Desktop 配置

编辑 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 Internet Speed Test 提供以下工具:

测试函数
  1. measure_download_speed:测量下载带宽(单位为 Mbps),并提供服务位置相关信息
  2. measure_upload_speed:测量上传带宽(单位为 Mbps),并提供服务位置相关信息
  3. measure_latency:使用多个样本测量网络延迟(单位为 ms),并报告最小值
  4. measure_jitter:通过分析延迟变化测量网络抖动,并提供服务信息
  5. get_server_info:获取任意 URL 对应的详细 CDN 服务信息,无需运行速度测试
  6. run_complete_test:全面测试所有指标和服务元数据

CDN 服务检测

此速度测试现在会提供为测试提供服务的 CDN 服务的详细信息:

可获得的信息
  • CDN 提供商:识别你连接的是 Fastly、Cloudflare 还是 Amazon CloudFront
  • 地理位置:显示服务器的物理位置(例如,“墨西哥城,墨西哥”)
  • POP 代码:标识接入点(Point of Presence)的三字母代码(例如,“MEX”“QRO”“DFW”)
  • 缓存状态:内容是从缓存提供(HIT)还是从源站获取(MISS)
  • 服务器标头:完整的 HTTP 标头,包括 x-served-by、via 和 x-cache
技术实现
智能测试方法
  • 渐进式测试:从小文件(128KB)开始,并逐步增大文件(按 2 的幂次递增)
  • 基于时间的阈值:使用可配置的 sustain_time(1-8 秒,默认值:8)。样本超过阈值时停止
  • 注重准确性:将耗时 ≥ 8 秒的最后一个样本的速度用作最终测量结果
  • 支持多家服务提供商:针对地理位置分散的端点进行测试
  • 完整方法:参见 SpeedOf.Me 测试方法
CDN 检测能力
  • Fastly:检测 POP 代码,并映射到 50 多个全球位置
  • Cloudflare:识别数据中心和地理区域
  • AWS CloudFront:识别各大洲的边缘位置
  • 标头分析:解析 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)

Fastly 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 CloudFront: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 许可证授权,详情请参阅 LICENSE 文件。

致谢

  • 感谢 MCP Framework 维护者对 AI 工具交互进行标准化
  • 感谢 Model Context Protocol 社区提供文档和示例
  • 感谢 SpeedOf.Me 团队提供递增测试方法(工作原理)。请参阅下方的方法参考
  • 如需使用官方 SpeedOf.Me MCP 服务,请参阅 @speedofme/mcp

SpeedOf.Me 测试方法

来源: SpeedOf.Me — 工作原理

本节保留了本项目引用的 SpeedOf.Me 测试方法。 获取日期:2026 年 3 月 8 日。

点击展开完整方法
概述

SpeedOf.Me 通过下载和上传示例文件来测试互联网连接。它使用单个 HTTP 连接和大型连续文件,反映实际的浏览和下载性能——这与真实网页内容的 传输方式相同。

下载测试
  1. 首先下载最小的示例文件(128 KB)。
  2. 实时测量下载时长。
  3. 如果下载耗时少于 8 秒,则继续使用下一个更大的 示例文件。
  4. 如果下载耗时达到或超过 8 秒,则停止递增。
  5. 最终速度测量值基于最后一个示例文件——即耗时达到或超过 8 秒的文件。
上传测试

下载测试完成后,将采用类似的递增流程向测试服务发送数据:

  1. 从较小的示例文件开始,逐渐增大文件大小。
  2. 持续测试,直到上传一个示例文件耗时超过 8 秒。
  3. 上传速度基于该最后一个示例文件计算。
延迟与抖动
  • 延迟(ping): 数据传输到服务并返回所需的时间。对 10 个样本进行测量,并报告最低值。
  • 抖动: 各延迟样本之间的变化。抖动越低,连接越稳定,这对视频通话和游戏很重要。
自适应测试方法

为确保全面测试互联网连接,带宽会通过多轮测试进行测量。示例文件大小逐渐增加,直到某个文件的下载耗时超过 8 秒。

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

示例文件大小
#大小
1128 KB
2256 KB
3512 KB
41 MB
52 MB
64 MB
78 MB
816 MB
932 MB
1064 MB
11128 MB
测试服务器

SpeedOf.Me 将示例文件托管在 CDN 上。它使用称为 PoP(存在点)的服务器,分布在 106+ 个城市。每个 PoP 可能由多台服务器组成,位于全球关键区域,靠近主要互联网交换点。

测试开始时,SpeedOf.Me 会自动选择最可靠、响应最快的服务器。它不一定是距离最近的服务器——系统会综合多种因素,确定最佳选项。CDN 技术会处理这一过程,以提供最准确、最稳定的测试结果。

准确性

以下关键差异使这种方法更准确:

  1. 单次连续下载 — 下载大型、连续的示例文件,类似网页或媒体文件的典型传输方式。其他测速工具会并行传输小块数据,并通过调整来估算速度。
  2. 多个全球服务器 — 使用位于不同地区的 PoP,得出的结果更贴近实际情况。其他服务通常会选择物理距离最近的服务器(有时位于 ISP 网络内部),这可能会导致结果偏高。
  3. 无需插件 — 测试直接在客户端运行,无需额外软件。
本项目如何实现这种方法
SpeedOf.Me 概念本项目中的实现
增量下载measure_download_speed() 遍历 SIZE_PROGRESSION,当耗时 ≥ sustain_time(默认 8 s)时停止
增量上传measure_upload_speed() 持续传输数据块,当耗时 ≥ sustain_time 时停止
8 秒阈值可通过 sustain_time 参数配置(1–8 s,默认 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。