Zovo Typing Test

Take a typing speed test without leaving the chat.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
95%
命名品質
100%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~1,799Token(工具定義)
~8.9 KB典型回應大小
中等的注意力影響(128k 上下文的 1.41%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "typing-test": {
      "url": "https://typing-test.zovo.one/mcp"
    }
  }
}

遠端端點

https://typing-test.zovo.one/mcpstreamable-http

它能做什麼

工具清單

工具(2)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢calculate_typing_score(target_text, typed_text, seconds, samples, missed_keys, ...)

Use this when a typing test has finished, or when the user gives the target passage, what they typed, and the time taken and wants their typing speed. Compares word by word and computes exact WPM = (correct characters / 5) / minutes, raw WPM (all typed characters), accuracy = correct / (correct + errors), errors (incorrect + extra + skipped letters), consistency and per-second speed (when samples are given), and the weakest keys. Returns a shareable result card (SVG) and a challenge link. Does not run a test or time anything itself; seconds must be between 1 and 3600. Do not use for reading speed or word counts.

輸入結構描述

{
  "type": "object",
  "properties": {
    "target_text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "The passage the user was asked to type, exactly as shown, e.g. 'the quick brown fox'."
    },
    "typed_text": {
      "type": "string",
      "maxLength": 20000,
      "description": "Exactly what the user typed, including mistakes, e.g. 'the quikc brown fox'. May be empty."
    },
    "seconds": {
      "type": "number",
      "description": "Elapsed typing time in seconds, from the first keystroke to the end (the full duration for a timed test), e.g. 60. Must be between 1 and 3600."
    },
    "samples": {
      "description": "Optional, sent by the widget: cumulative count of characters entered at the end of each whole second, e.g. [5, 11, 16]. Used for per-second speed and consistency.",
      "maxItems": 3600,
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 9007199254740991
      }
    },
    "missed_keys": {
      "description": "Optional, sent by the widget: one character per mistyped keystroke, giving the key that was expected (including mistakes later corrected), e.g. 'eet'. Used to find weak keys.",
      "type": "string",
      "maxLength": 4000
    },
    "mode": {
      "description": "Settings of the test from show_typing_test, used to label the result and build a challenge link. Example: timed.",
      "type": "string",
      "enum": [
        "timed",
        "passage"
      ]
    },
    "duration_seconds": {
      "description": "Timed-test length from show_typing_test, e.g. 60.",
      "type": "integer",
      "minimum": 10,
      "maximum": 600
    },
    "difficulty": {
      "description": "Difficulty from show_typing_test, e.g. words.",
      "type": "string",
      "enum": [
        "words",
        "sentences",
        "numbers",
        "code"
      ]
    },
    "seed": {
      "description": "Seed from show_typing_test, e.g. 4821, so a challenge link reproduces the same passage.",
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    },
    "focus_keys": {
      "description": "Drill keys from show_typing_test, e.g. 'eth'.",
      "type": "string",
      "maxLength": 40
    },
    "custom_text": {
      "description": "Sent by the widget for custom-text tests: the full custom text from show_typing_test, e.g. 'The early bird catches the worm.', so the challenge link reproduces the whole passage. Omit otherwise.",
      "type": "string",
      "maxLength": 20000
    }
  },
  "required": [
    "target_text",
    "typed_text",
    "seconds"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "wpm": {
      "type": "number"
    },
    "raw_wpm": {
      "type": "number"
    },
    "accuracy": {
      "type": "number"
    },
    "correct_chars": {
      "type": "number"
    },
    "incorrect_chars": {
      "type": "number"
    },
    "extra_chars": {
      "type": "number"
    },
    "missed_chars": {
      "type": "number"
    },
    "untyped_chars": {
      "type": "number"
    },
    "typed_chars": {
      "type": "number"
    },
    "target_chars": {
      "type": "number"
    },
    "errors": {
      "type": "number"
    },
    "seconds": {
      "type": "number"
    },
    "completed": {
      "type": "boolean"
    },
    "consistency": {
      "type": [
        "number",
        "null"
      ]
    },
    "per_second_wpm": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "weak_keys": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "misses": {
            "type": "number"
          }
        },
        "required": [
          "key",
          "misses"
        ],
        "additionalProperties": false
      }
    },
    "label": {
      "type": "string"
    },
    "settings": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "downloads": {
      "type": "object",
      "properties": {
        "card": {
          "type": "string"
        },
        "challenge": {
          "type": "string"
        }
      },
      "required": [
        "card",
        "challenge"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "kind",
    "summary",
    "wpm",
    "raw_wpm",
    "accuracy",
    "correct_chars",
    "incorrect_chars",
    "extra_chars",
    "missed_chars",
    "untyped_chars",
    "typed_chars",
    "target_chars",
    "errors",
    "seconds",
    "completed",
    "consistency",
    "per_second_wpm",
    "weak_keys",
    "label",
    "settings",
    "downloads"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢show_typing_test(mode, duration_seconds, difficulty, custom_text, focus_keys, ...)

Use this when the user wants to take a typing test, check their typing speed (WPM), practice typing, test on their own paragraph, or drill weak keys. Opens a live test in the widget: the timer starts on the first keystroke, characters are highlighted as typed, and the widget scores the result with calculate_typing_score. Returns the passage settings and a challenge link that opens the same test in a browser. Does not score text by itself and does not save results between conversations. Do not use for counting words in a document or for typing tutorials without a test.

輸入結構描述

{
  "type": "object",
  "properties": {
    "mode": {
      "description": "timed (type until the clock runs out) or passage (type one full passage; time stops at the last character). Defaults to timed, or passage when custom_text is given. Example: timed.",
      "type": "string",
      "enum": [
        "timed",
        "passage"
      ]
    },
    "duration_seconds": {
      "description": "Length of a timed test in seconds, 10-600. Common choices are 15, 30, 60, 120; job tests often use 60, 180 or 300. Default 60. Example: 60.",
      "type": "integer",
      "minimum": 10,
      "maximum": 600
    },
    "difficulty": {
      "description": "Passage style: words (common English words, no punctuation), sentences (prose with capitals and punctuation), numbers (words mixed with numbers, times and dates), code (short code snippets with line breaks). Default words. Example: sentences.",
      "type": "string",
      "enum": [
        "words",
        "sentences",
        "numbers",
        "code"
      ]
    },
    "custom_text": {
      "description": "Text the user wants to be tested on, pasted verbatim, e.g. 'The early bird catches the worm.' Curly quotes and dashes become keyboard characters; whitespace is collapsed (line breaks are kept when difficulty is code). At least 5 characters; text beyond 3,000 characters is cut at a word boundary.",
      "type": "string",
      "maxLength": 20000
    },
    "focus_keys": {
      "description": "Practice drill: the keys to train, e.g. 'eth' or 'q;7' (a list like 'q, z and x' also works). Builds a drill passage from words that use these keys. Usually the weak_keys from a previous result.",
      "type": "string",
      "maxLength": 40
    },
    "seed": {
      "description": "Optional number that picks the passage; the same seed and settings give the same passage (for retakes and fair challenges). Example: 4821.",
      "type": "integer",
      "minimum": 1,
      "maximum": 2147483647
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "mode": {
      "type": "string"
    },
    "duration_seconds": {
      "type": "number"
    },
    "difficulty": {
      "type": "string"
    },
    "difficulty_label": {
      "type": "string"
    },
    "seed": {
      "type": "number"
    },
    "focus_keys": {
      "type": [
        "string",
        "null"
      ]
    },
    "custom": {
      "type": "boolean"
    },
    "char_count": {
      "type": "number"
    },
    "word_count": {
      "type": "number"
    },
    "text": {
      "type": [
        "string",
        "null"
      ]
    },
    "text_preview": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "properties": {
        "challenge": {
          "type": "string"
        }
      },
      "required": [
        "challenge"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "kind",
    "title",
    "mode",
    "duration_seconds",
    "difficulty",
    "difficulty_label",
    "seed",
    "focus_keys",
    "custom",
    "char_count",
    "word_count",
    "text",
    "text_preview",
    "downloads"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本2 個工具