Koskamo

Beatwise Metronome MCP

A metronome server for practice with tap tempo, accent patterns, subdivisions, and tempo ramps. It calculates note durations, cycle frequencies, and song lengths, and allows planning practice ladders with CSV downloads.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Beatwise Metronome MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://metronome.zovo.one/mcp
Vendor documentation

What you can do with it

  • Open a metronome with specific BPM and time signature
  • Calculate BPM to milliseconds for note durations
  • Plan tempo practice ladders with CSV export

Source and maintenance

Community listingRegistry 1.0.1

Protocol and capabilities

Server
metronome 1.0.1
MCP protocol
2025-06-18
Tools
3 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Beatwise Metronome supplies an interactive metronome, rational tempo calculations, and practice ladders with CSV downloads. BPM is quarter notes per minute. Use show_metronome for listening, calculate_tempo_values for bpm to ms or note durations to bpm, and plan_tempo_practice for a ladder. Audio starts only when the user presses Start. Share key timing values and the CSV link. The widget runs only while it is on the screen. Audio timing depends on the device. No recording and no pitch detection.

Tools

3 advertised

show_metronome — Show metronome
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a metronome, online metronome, 120 bpm metronome, tap tempo or a metronome for practice. Opens a live beat widget with 20 to 400 quarter-note BPM, 1 to 16 beats per bar, accents, subdivisions and an optional ramp with up to 1000 tempo stages. Reports milliseconds per beat and subdivision. The widget runs only while on screen; audio timing depends on the device. Does not record audio or detect pitch.

show_metronome input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "bpm"
  ],
  "properties": {
    "bpm": {
      "type": "number",
      "maximum": 400,
      "minimum": 20,
      "description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 120."
    },
    "ramp": {
      "type": "object",
      "required": [
        "start_bpm",
        "end_bpm",
        "bars_per_step",
        "bpm_per_step"
      ],
      "properties": {
        "end_bpm": {
          "type": "number",
          "maximum": 400,
          "minimum": 20,
          "description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 120."
        },
        "start_bpm": {
          "type": "number",
          "maximum": 400,
          "minimum": 20,
          "description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 80."
        },
        "bpm_per_step": {
          "type": "number",
          "maximum": 380,
          "minimum": 0.001,
          "description": "Positive BPM change; direction follows start and end. Up to three decimal places. Example: 5."
        },
        "bars_per_step": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Completed bars before changing tempo. Example: 4."
        }
      },
      "description": "Optional bar-based ramp; start must match bpm. The target then holds. Example: {start_bpm:80,end_bpm:120,bars_per_step:4,bpm_per_step:5}."
    },
    "beat_unit": {
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        },
        {
          "type": "number",
          "const": 4
        },
        {
          "type": "number",
          "const": 8
        },
        {
          "type": "number",
          "const": 16
        }
      ],
      "description": "Time signature denominator. Default 4. BPM remains quarter-note BPM. Example: 8 for 6/8."
    },
    "subdivision": {
      "enum": [
        "none",
        "eighths",
        "triplets",
        "sixteenths"
      ],
      "type": "string",
      "description": "Clicks per signature beat: none=1, eighths=2, triplets=3, sixteenths=4. Default none. Example: eighths."
    },
    "beats_per_bar": {
      "type": "integer",
      "maximum": 16,
      "minimum": 1,
      "description": "Time signature numerator, 1 to 16. Default 4. Example: 6 for 6/8."
    },
    "accent_pattern": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 2,
        "minimum": 0
      },
      "maxItems": 16,
      "minItems": 1,
      "description": "One level per beat: 0 silent (including its subdivisions), 1 normal, 2 accented. Defaults to an accented first beat. Example: [2,1,1,1]."
    }
  }
}
show_metronome output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "bpm",
    "beats_per_bar",
    "beat_unit",
    "subdivision",
    "accent_pattern",
    "quarter_ms",
    "beat_ms",
    "subdivision_ms",
    "ramp",
    "limits"
  ],
  "properties": {
    "bpm": {
      "type": "number"
    },
    "kind": {
      "type": "string",
      "const": "metronome"
    },
    "ramp": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "start_bpm",
            "end_bpm",
            "bpm_per_step",
            "bars_per_step"
          ],
          "properties": {
            "end_bpm": {
              "type": "number"
            },
            "start_bpm": {
              "type": "number"
            },
            "bpm_per_step": {
              "type": "number"
            },
            "bars_per_step": {
              "type": "number"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "limits": {
      "type": "string"
    },
    "beat_ms": {
      "type": "string"
    },
    "beat_unit": {
      "type": "number"
    },
    "quarter_ms": {
      "type": "string"
    },
    "subdivision": {
      "type": "string"
    },
    "beats_per_bar": {
      "type": "number"
    },
    "accent_pattern": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "subdivision_ms": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
show_metronome annotations
{
  "title": "Show metronome",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
calculate_tempo_values — Calculate tempo values
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants bpm to ms, a delay time calculator, tempo calculator, note cycle hertz, milliseconds to beats per minute, bar length or song length. Accepts BPM or a note duration and returns whole to sixty-fourth values, dotted and triplet, pre-delay suggestions and approximate Italian marking ranges. BPM is quarter notes per minute, 20 to 400; up to 100000 song bars. Hertz is rhythmic repetition, not pitch. Does not record audio or detect pitch.

calculate_tempo_values input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "bpm": {
      "type": "number",
      "maximum": 400,
      "minimum": 20,
      "description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 120."
    },
    "bars": {
      "type": "integer",
      "maximum": 100000,
      "minimum": 1,
      "description": "Optional song bar count at this tempo and time signature. Example: 32."
    },
    "modifier": {
      "enum": [
        "straight",
        "dotted",
        "triplet"
      ],
      "type": "string",
      "description": "Modifier for milliseconds: straight (default), dotted, or triplet. Example: dotted."
    },
    "beat_unit": {
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        },
        {
          "type": "number",
          "const": 4
        },
        {
          "type": "number",
          "const": 8
        },
        {
          "type": "number",
          "const": 16
        }
      ],
      "description": "Time signature denominator. Default 4. BPM remains quarter-note BPM. Example: 8 for 6/8."
    },
    "note_value": {
      "enum": [
        "whole",
        "half",
        "quarter",
        "eighth",
        "sixteenth",
        "thirty_second",
        "sixty_fourth"
      ],
      "type": "string",
      "description": "Note represented by milliseconds; default quarter. Only use with milliseconds. Example: eighth."
    },
    "milliseconds": {
      "type": "number",
      "maximum": 18000,
      "minimum": 0.001,
      "description": "Duration of the selected note, instead of bpm; resulting BPM must be 20 to 400. Up to three decimal places. Example: 500."
    },
    "beats_per_bar": {
      "type": "integer",
      "maximum": 16,
      "minimum": 1,
      "description": "Time signature numerator, 1 to 16. Default 4. Example: 6 for 6/8."
    }
  }
}
calculate_tempo_values output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "bpm",
    "bpm_numeric",
    "quarter_ms",
    "bar_ms",
    "beats_per_bar",
    "beat_unit",
    "notes",
    "markings",
    "marking_note",
    "delay_note",
    "predelays",
    "song",
    "precision"
  ],
  "properties": {
    "bpm": {
      "type": "string"
    },
    "kind": {
      "type": "string",
      "const": "tempo"
    },
    "song": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "bars",
            "total_ms",
            "total_seconds",
            "minutes",
            "seconds"
          ],
          "properties": {
            "bars": {
              "type": "number"
            },
            "minutes": {
              "type": "number"
            },
            "seconds": {
              "type": "string"
            },
            "total_ms": {
              "type": "string"
            },
            "total_seconds": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "note",
          "modifier",
          "ms",
          "hz"
        ],
        "properties": {
          "hz": {
            "type": "string"
          },
          "ms": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "modifier": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "bar_ms": {
      "type": "string"
    },
    "markings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "min_bpm",
          "max_bpm"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "max_bpm": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_bpm": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "beat_unit": {
      "type": "number"
    },
    "precision": {
      "type": "string"
    },
    "predelays": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "note",
          "ms"
        ],
        "properties": {
          "ms": {
            "type": "string"
          },
          "note": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "delay_note": {
      "type": "string"
    },
    "quarter_ms": {
      "type": "string"
    },
    "bpm_numeric": {
      "type": "number"
    },
    "marking_note": {
      "type": "string"
    },
    "beats_per_bar": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
calculate_tempo_values annotations
{
  "title": "Calculate tempo values",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
plan_tempo_practice — Plan tempo practice
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a metronome for practice with a tempo ladder from start to target BPM, a BPM or percent step and minutes per stage. Returns the ladder table, total time and CSV download. Supports ascending or descending 20 to 400 BPM with up to 200 stages; percent steps round to 0.001 BPM and target gets the full stage time. Does not track sessions or record audio.

plan_tempo_practice input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start_bpm",
    "target_bpm",
    "step",
    "minutes_per_step"
  ],
  "properties": {
    "step": {
      "type": "number",
      "maximum": 380,
      "minimum": 0.001,
      "description": "Positive change per stage, in BPM or percent; percent is limited to 100. Up to three decimal places. Example: 5."
    },
    "start_bpm": {
      "type": "number",
      "maximum": 400,
      "minimum": 20,
      "description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 80."
    },
    "step_type": {
      "enum": [
        "bpm",
        "percent"
      ],
      "type": "string",
      "description": "Step units, default bpm. Percent uses the previous stage with a 0.001 BPM rounding. Example: percent."
    },
    "target_bpm": {
      "type": "number",
      "maximum": 400,
      "minimum": 20,
      "description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 120."
    },
    "minutes_per_step": {
      "type": "number",
      "maximum": 120,
      "minimum": 0.001,
      "description": "Minutes spent at each stage, including the target, up to three decimal places. Example: 2."
    }
  }
}
plan_tempo_practice output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "start_bpm",
    "target_bpm",
    "step",
    "step_type",
    "minutes_per_step",
    "stages",
    "total_minutes",
    "rounding",
    "preview",
    "downloads"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "practice"
    },
    "step": {
      "type": "number"
    },
    "stages": {
      "type": "number"
    },
    "preview": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "stage",
          "bpm",
          "minutes",
          "start_minutes",
          "end_minutes"
        ],
        "properties": {
          "bpm": {
            "type": "number"
          },
          "stage": {
            "type": "number"
          },
          "minutes": {
            "type": "string"
          },
          "end_minutes": {
            "type": "string"
          },
          "start_minutes": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "rounding": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "required": [
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "start_bpm": {
      "type": "number"
    },
    "step_type": {
      "type": "string"
    },
    "target_bpm": {
      "type": "number"
    },
    "total_minutes": {
      "type": "string"
    },
    "minutes_per_step": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
plan_tempo_practice annotations
{
  "title": "Plan tempo practice",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

metronome-widget — Beatwise Metronome view

Advertised by the server during the last successful anonymous check.

Interactive view for Beatwise Metronome.

metronome-widget URI
ui://widget/metronome-v6-1.0.1-65ca554a5ae10d88846cb34af83f741f0797170207d3577728efca4d541abe7e.html

MIME type: text/html;profile=mcp-app

metronome-widget-legacy — Beatwise Metronome view (previous versions)

Advertised by the server during the last successful anonymous check.

metronome-widget-legacy URI template
ui://widget/metronome-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
495 ms
95th percentile latency
495 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 495 ms · metadata changed · 3 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http beatwise-metronome-mcp https://metronome.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add beatwise-metronome-mcp --url https://metronome.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable beatwise-metronome-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "beatwise-metronome-mcp": {
      "url": "https://metronome.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "beatwise-metronome-mcp": {
      "type": "streamableHttp",
      "url": "https://metronome.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start beatwise-metronome-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "beatwise-metronome-mcp": {
      "type": "http",
      "url": "https://metronome.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http beatwise-metronome-mcp https://metronome.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "beatwise-metronome-mcp": {
      "url": "https://metronome.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "beatwise-metronome-mcp": {
      "serverUrl": "https://metronome.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Beatwise Metronome MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.