Skip to main content
Glama
inventer-dev

mcp-internet-speed-test

MCP 인터넷 속도 테스트

⚠️ 실험 버전

이는 인터넷 속도 테스트를 위한 모델 컨텍스트 프로토콜(MCP) 서버의 실험적 구현입니다. AI 모델과 에이전트가 표준화된 인터페이스를 통해 네트워크 성능 지표를 측정, 분석 및 보고할 수 있도록 지원합니다.

Related MCP server: Test MCP Feb4 MCP Server

MCP란 무엇인가요?

모델 컨텍스트 프로토콜(MCP)은 대규모 언어 모델(LLM)이 외부 도구 및 데이터 소스와 상호 작용할 수 있는 표준화된 방식을 제공합니다. "AI 애플리케이션을 위한 USB-C"라고 생각하면 됩니다. AI 시스템이 실제 기능과 정보에 접근할 수 있도록 하는 공통 인터페이스입니다.

특징

  • 다운로드 속도 테스트 : 다운로드 대역폭 측정

  • 업로드 속도 테스트 : 구성 가능한 파일 크기로 업로드 대역폭 측정

  • 지연 테스트 : 다양한 서버에 대한 네트워크 지연 시간 측정

  • 지터 분석 : 지연 시간 변화를 분석하여 네트워크 지터를 계산합니다.

  • 종합 보고 : 자세한 JSON 형식의 보고서 제공

설치

필수 조건

  • Python 3.12 이상

  • uv 패키지 관리자(추천)

옵션 1: uvx 사용(권장)

uvx 명령은 명시적인 설치 없이 Python 패키지를 직접 실행하는 편리한 방법입니다.

지엑스피1

옵션 2: 도커 사용

# 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

구성

이 MCP 서버를 Claude Desktop이나 다른 MCP 클라이언트와 함께 사용하려면 MCP 구성 파일에 추가하세요.

클로드 데스크톱 구성

Claude Desktop MCP 구성 파일을 편집하세요.

{
    "mcpServers": {
        "mcp-internet-speed-test": {
            "command": "uv",
            "args": [
                "--directory",
                "/ABSOLUTE/PATH/TO/mcp-internet-speed-test",
                "run",
                "main.py"
            ]
        }
    }
}

API 도구

MCP 인터넷 속도 테스트는 다음과 같은 도구를 제공합니다.

  1. measure_download_speed : 다운로드 대역폭(Mbps)을 측정합니다.

  2. measure_upload_speed : 업로드 대역폭(Mbps)을 측정합니다.

  3. measure_latency : 네트워크 지연 시간(ms)을 측정합니다.

  4. measure_jitter : 지연 시간 변동을 분석하여 네트워크 지터를 측정합니다.

  5. run_complete_test : 모든 테스트를 실행하고 포괄적인 보고서를 제공합니다.

문제 해결

MCP 서버에 연결하는 데 문제가 있는 경우:

  1. MCP 구성의 경로가 올바른지 확인하세요.

  2. 디렉토리에 필요한 권한이 있는지 확인하세요

  3. Python 3.12 이상이 설치되어 있고 PATH에 있는지 확인하세요.

  4. mcp[cli] 및 requests 패키지가 설치되었는지 확인하세요.

개발

이 프로젝트는 실험적인 프로젝트이므로 여러분의 참여를 환영합니다. 참여 방법은 다음과 같습니다.

  1. 이슈를 열거나 풀 리퀘스트를 제출하세요

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

감사의 말

  • AI 도구 상호 작용을 표준화하기 위한 MCP 프레임워크 유지 관리자

  • 문서 및 예제를 위한 모델 컨텍스트 프로토콜 커뮤니티

Available Tools

6 tools
get_server_infoA
Get server information for any URL without performing speed tests.

Args:
    url_download: URL to download data from
    url_upload: URL to upload data to
    url_latency: URL to measure latency to

Returns:
    Dictionary with servers information including POP location, CDN info, etc.
ParametersJSON Schema
NameRequiredDescriptionDefault
url_downloadNohttps://media.githubusercontent.com/media/inventer-dev/speed-test-files/main/128KB.bin
url_uploadNohttps://httpi.dev/post
url_latencyNohttps://httpi.dev/get

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description explains it returns server info (POP, CDN) and clarifies no speed tests are performed, setting expectations for a read-only operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence plus clear Args/Returns, no superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, parameters, and return value, though lacks explicit sibling differentiation. Sufficient for a low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The Args section in the description adds meaning to each parameter (e.g., 'URL to download data from'), which the schema lacks (0% coverage).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves server information for URLs without speed tests, distinguishing it from sibling tools that measure speeds.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'without performing speed tests', implying when not to use it, but lacks explicit positive guidance or alternative naming.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

measure_download_speedB
Measure download speed using incremental file sizes.

Args:
    size_limit: Maximum file size to test (default: 128MB)
    sustain_time: Duration in seconds for each test (1-8, default: 8)

Returns:
    Dictionary with download speed results
ParametersJSON Schema
NameRequiredDescriptionDefault
size_limitNo128MB
sustain_timeNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description must disclose behavioral traits. It mentions 'incremental file sizes' implying bandwidth usage but does not explicitly state whether the tool is safe, destructive, or has rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Docstring format with Args and Returns sections is structured but the Returns description is vague. Could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With two optional parameters and no output schema, the description covers parameter semantics adequately but the return value is underspecified. For a simple tool, it is somewhat complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Explains size_limit as maximum file size and sustain_time as duration per test (1-8 seconds). The schema has 0% description coverage, so this adds essential meaning beyond types and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool measures download speed using incremental file sizes, distinguishing it from siblings like measure_latency and measure_upload_speed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Sibling tools exist but no comparative information is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

measure_jitterD

Jitter is the variation in latency, so we need multiple measurements.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNohttps://httpi.dev/get
samplesNo

TDQS

D1.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavioral traits. It mentions 'multiple measurements,' but fails to disclose side effects, system impact, or any constraints beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, but it is not concise in a useful way—it provides a definition of jitter rather than a tool description. It under-specifies the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and two parameters with defaults, the description should provide usage context. It is completely inadequate, offering no help for a correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any parameters (url, samples). It adds no semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description defines jitter but does not explicitly state that the tool measures jitter. It says 'we need multiple measurements,' which implies the tool's function but remains vague and indirect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus its siblings (e.g., measure_latency). The description lacks context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

measure_latencyB

Measure the latency using multiple samples and report the minimum.

Takes a number of samples and reports the lowest
value for the most accurate representation of network latency.

Args:
    url (str): The URL to measure latency to
    samples (int): Number of samples to take (default: 10)

Returns:
    Dictionary with latency result (minimum of all samples)
ParametersJSON Schema
NameRequiredDescriptionDefault
urlNohttps://httpi.dev/get
samplesNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only mentions that multiple samples are taken and the minimum is reported, but lacks details on network usage, timeouts, or side effects. It also claims 'most accurate representation' without justification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a summary, elaboration, and parameter/return documentation. It is front-loaded with the main action. However, there is slight redundancy between the first two sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description adequately explains what it does, how it works (multiple samples, minimum), and the inputs/outputs. It lacks potential error handling or network constraints, but overall is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It describes the 'url' and 'samples' parameters in the Args section, including defaults. While this adds basic context, it does not elaborate on format constraints or validation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it measures latency using multiple samples and reports the minimum. The verb 'measure' and resource 'latency' are specific. However, it does not differentiate from sibling tools like measure_jitter, which may measure related metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as measure_jitter or run_complete_test. It only explains the methodology, not the contextual usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

measure_upload_speedB
Measure upload speed using incremental file sizes.

Args:
    url_upload: URL to upload data to
    size_limit: Maximum file size to test (default: 128MB)
    sustain_time: Duration in seconds for each test (1-8, default: 8)

Returns:
    Dictionary with upload speed results
ParametersJSON Schema
NameRequiredDescriptionDefault
url_uploadNohttps://httpi.dev/post
size_limitNo128MB
sustain_timeNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only describes the measurement function. It does not mention whether it sends real data, requires permissions, or has any side effects like network traffic or temporary files.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise at 6 lines with a clear structure: purpose, Args, Returns. It front-loads the main purpose, though the Args section repeats schema information unnecessarily.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and annotations, the description covers basic purpose and parameters but lacks detail on return format specifics, usage context, and behavioral implications of a network-uploading tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful parameter details beyond the schema via the Args section, explaining each parameter's purpose and constraints (e.g., sustain_time range 1-8). However, the size_limit format (e.g., allowed units) is not specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Measure upload speed using incremental file sizes,' providing a specific verb and resource. It distinguishes itself from sibling tools like measure_download_speed, but could be more explicit about what 'incremental file sizes' entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like measure_download_speed or run_complete_test. The description lacks context for appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_complete_testA
Run a complete speed test returning all metrics in a single call.

This test uses the smart incremental approach inspired by SpeedOf.Me:
- First measures download speed with gradually increasing file sizes
- Then measures upload speed with gradually increasing data sizes
- Measures latency and jitter
- Returns comprehensive results with real-time data

Args:
    max_size: Maximum file size to test (default: 128MB)
    url_upload: URL for upload testing
    url_latency: URL for latency testing
    sustain_time: Duration in seconds for each test (1-8, default: 8)

Returns:
    Complete test results including download, upload, latency and jitter metrics
ParametersJSON Schema
NameRequiredDescriptionDefault
max_sizeNo128MB
url_uploadNohttps://httpi.dev/post
url_latencyNohttps://httpi.dev/get
sustain_timeNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should fully disclose behavior. It outlines the test steps (download, upload, latency, jitter) and the incremental approach, but lacks details on potential side effects, time consumption, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a brief title, a paragraph on approach, and an Args/Returns section. Some phrases (e.g., 'inspired by SpeedOf.Me') are slightly extraneous, but overall concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description should fully explain return values. It mentions 'download, upload, latency and jitter metrics' but lacks details on format, units, or structure. Parameter documentation is adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds basic meaning to parameters (e.g., 'max_size: Maximum file size to test') but does not cover all nuances (e.g., format of max_size string). With 0% schema coverage, it partially compensates but remains incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Run a complete speed test returning all metrics in a single call', specifying the action and resource. It distinguishes itself from siblings like 'measure_download_speed' by emphasizing comprehensiveness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for obtaining all metrics at once but does not explicitly state when to choose this over individual measurement tools or provide exclusion criteria. Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.4
    • Changedget_server_info1 field changed
      • changedInput schema / properties / url_download / default
        Previous value: -"https://raw.githubusercontent.com/inventer-dev/speed-test-files/main/128KB.bin"New value: +"https://media.githubusercontent.com/media/inventer-dev/speed-test-files/main/128KB.bin"
    • Changedmeasure_download_speed2 fields changed
      • changedInput schema / properties / size_limit / default
        Previous value: -"100MB"New value: +"128MB"
      • addedInput schema / properties / sustain_time
        Added value: +{
        +  "default": 8,
        +  "title": "Sustain Time",
        +  "type": "integer"
        +}
    • Changedmeasure_latency1 field changed
      • addedInput schema / properties / samples
        Added value: +{
        +  "default": 10,
        +  "title": "Samples",
        +  "type": "integer"
        +}
    • Changedmeasure_upload_speed2 fields changed
      • changedInput schema / properties / size_limit / default
        Previous value: -"100MB"New value: +"128MB"
      • addedInput schema / properties / sustain_time
        Added value: +{
        +  "default": 8,
        +  "title": "Sustain Time",
        +  "type": "integer"
        +}
    • Changedrun_complete_test2 fields changed
      • changedInput schema / properties / max_size / default
        Previous value: -"100MB"New value: +"128MB"
      • addedInput schema / properties / sustain_time
        Added value: +{
        +  "default": 8,
        +  "title": "Sustain Time",
        +  "type": "integer"
        +}
  2. 6 tool updates
    • First observedget_server_info
    • First observedmeasure_download_speed
    • First observedmeasure_jitter
    • First observedmeasure_latency
    • First observedmeasure_upload_speed
    • First observedrun_complete_test

TDQS

B3.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: server info, download speed, jitter, latency, upload speed, and a combined test. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (get_, measure_, run_). Even though 'measure' appears multiple times, the nouns are distinct.

Tool Count5/5

6 tools is ideal for an internet speed test server, covering all key metrics plus a combined test and server info without bloat.

Completeness5/5

The set covers all standard speed test metrics: download, upload, latency, jitter, and server info. A combined test is also provided. No obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

  • MCP server for building and testing AI agents with multi-model experimentation and insights.

  • The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.

  • The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.

  • The OpenMesh MCP Server provides decentralized, permissionless cloud infrastructure that integrates AI assistants with Web2 and Web3 applications without middlemen. It offers intelligent service discovery to identify MCP servers, acts as a universal proxy for routing requests to discovered services, implements performance optimization through usage feedback, and provides automatic fault tolerance with alternative services when servers become unavailable.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that allows users to ping other hosts to check network connectivity and diagnostic information. It enables LLMs to perform network latency tests and host availability checks through a standardized interface.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides standardized tools for AI agents to interact with the Test MCP Feb4 API. It enables LLMs to access API endpoints through asynchronous operations and standardized Model Context Protocol tools.
    -