Beatwise Metronome
Keep time, find note durations
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"metronome": {
"url": "https://metronome.zovo.one/mcp"
}
}
}Remote endpoints
https://metronome.zovo.one/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢show_metronome(bpm, beats_per_bar, beat_unit, subdivision, accent_pattern, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"bpm": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 120."
},
"beats_per_bar": {
"description": "Time signature numerator, 1 to 16. Default 4. Example: 6 for 6/8.",
"type": "integer",
"minimum": 1,
"maximum": 16
},
"beat_unit": {
"description": "Time signature denominator. Default 4. BPM remains quarter-note BPM. Example: 8 for 6/8.",
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
},
{
"type": "number",
"const": 4
},
{
"type": "number",
"const": 8
},
{
"type": "number",
"const": 16
}
]
},
"subdivision": {
"description": "Clicks per signature beat: none=1, eighths=2, triplets=3, sixteenths=4. Default none. Example: eighths.",
"type": "string",
"enum": [
"none",
"eighths",
"triplets",
"sixteenths"
]
},
"accent_pattern": {
"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].",
"minItems": 1,
"maxItems": 16,
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 2
}
},
"ramp": {
"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}.",
"type": "object",
"properties": {
"start_bpm": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 80."
},
"end_bpm": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 120."
},
"bars_per_step": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Completed bars before changing tempo. Example: 4."
},
"bpm_per_step": {
"type": "number",
"minimum": 0.001,
"maximum": 380,
"description": "Positive BPM change; direction follows start and end. Up to three decimal places. Example: 5."
}
},
"required": [
"start_bpm",
"end_bpm",
"bars_per_step",
"bpm_per_step"
]
}
},
"required": [
"bpm"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "metronome"
},
"bpm": {
"type": "number"
},
"beats_per_bar": {
"type": "number"
},
"beat_unit": {
"type": "number"
},
"subdivision": {
"type": "string"
},
"accent_pattern": {
"type": "array",
"items": {
"type": "number"
}
},
"quarter_ms": {
"type": "string"
},
"beat_ms": {
"type": "string"
},
"subdivision_ms": {
"type": "string"
},
"ramp": {
"anyOf": [
{
"type": "object",
"properties": {
"start_bpm": {
"type": "number"
},
"end_bpm": {
"type": "number"
},
"bpm_per_step": {
"type": "number"
},
"bars_per_step": {
"type": "number"
}
},
"required": [
"start_bpm",
"end_bpm",
"bpm_per_step",
"bars_per_step"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"limits": {
"type": "string"
}
},
"required": [
"kind",
"bpm",
"beats_per_bar",
"beat_unit",
"subdivision",
"accent_pattern",
"quarter_ms",
"beat_ms",
"subdivision_ms",
"ramp",
"limits"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢calculate_tempo_values(bpm, milliseconds, note_value, modifier, beats_per_bar, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"bpm": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 120."
},
"milliseconds": {
"description": "Duration of the selected note, instead of bpm; resulting BPM must be 20 to 400. Up to three decimal places. Example: 500.",
"type": "number",
"minimum": 0.001,
"maximum": 18000
},
"note_value": {
"description": "Note represented by milliseconds; default quarter. Only use with milliseconds. Example: eighth.",
"type": "string",
"enum": [
"whole",
"half",
"quarter",
"eighth",
"sixteenth",
"thirty_second",
"sixty_fourth"
]
},
"modifier": {
"description": "Modifier for milliseconds: straight (default), dotted, or triplet. Example: dotted.",
"type": "string",
"enum": [
"straight",
"dotted",
"triplet"
]
},
"beats_per_bar": {
"description": "Time signature numerator, 1 to 16. Default 4. Example: 6 for 6/8.",
"type": "integer",
"minimum": 1,
"maximum": 16
},
"beat_unit": {
"description": "Time signature denominator. Default 4. BPM remains quarter-note BPM. Example: 8 for 6/8.",
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 2
},
{
"type": "number",
"const": 4
},
{
"type": "number",
"const": 8
},
{
"type": "number",
"const": 16
}
]
},
"bars": {
"description": "Optional song bar count at this tempo and time signature. Example: 32.",
"type": "integer",
"minimum": 1,
"maximum": 100000
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "tempo"
},
"bpm": {
"type": "string"
},
"bpm_numeric": {
"type": "number"
},
"quarter_ms": {
"type": "string"
},
"bar_ms": {
"type": "string"
},
"beats_per_bar": {
"type": "number"
},
"beat_unit": {
"type": "number"
},
"notes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"modifier": {
"type": "string"
},
"ms": {
"type": "string"
},
"hz": {
"type": "string"
}
},
"required": [
"note",
"modifier",
"ms",
"hz"
],
"additionalProperties": false
}
},
"markings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"min_bpm": {
"type": "number"
},
"max_bpm": {
"type": [
"number",
"null"
]
}
},
"required": [
"name",
"min_bpm",
"max_bpm"
],
"additionalProperties": false
}
},
"marking_note": {
"type": "string"
},
"delay_note": {
"type": "string"
},
"predelays": {
"type": "array",
"items": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"ms": {
"type": "string"
}
},
"required": [
"note",
"ms"
],
"additionalProperties": false
}
},
"song": {
"anyOf": [
{
"type": "object",
"properties": {
"bars": {
"type": "number"
},
"total_ms": {
"type": "string"
},
"total_seconds": {
"type": "string"
},
"minutes": {
"type": "number"
},
"seconds": {
"type": "string"
}
},
"required": [
"bars",
"total_ms",
"total_seconds",
"minutes",
"seconds"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"precision": {
"type": "string"
}
},
"required": [
"kind",
"bpm",
"bpm_numeric",
"quarter_ms",
"bar_ms",
"beats_per_bar",
"beat_unit",
"notes",
"markings",
"marking_note",
"delay_note",
"predelays",
"song",
"precision"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢plan_tempo_practice(start_bpm, target_bpm, step, step_type, minutes_per_step)
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.
Input Schema
{
"type": "object",
"properties": {
"start_bpm": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 80."
},
"target_bpm": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Quarter notes per minute, 20 to 400, up to three decimal places. Example: 120."
},
"step": {
"type": "number",
"minimum": 0.001,
"maximum": 380,
"description": "Positive change per stage, in BPM or percent; percent is limited to 100. Up to three decimal places. Example: 5."
},
"step_type": {
"description": "Step units, default bpm. Percent uses the previous stage with a 0.001 BPM rounding. Example: percent.",
"type": "string",
"enum": [
"bpm",
"percent"
]
},
"minutes_per_step": {
"type": "number",
"minimum": 0.001,
"maximum": 120,
"description": "Minutes spent at each stage, including the target, up to three decimal places. Example: 2."
}
},
"required": [
"start_bpm",
"target_bpm",
"step",
"minutes_per_step"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "practice"
},
"start_bpm": {
"type": "number"
},
"target_bpm": {
"type": "number"
},
"step": {
"type": "number"
},
"step_type": {
"type": "string"
},
"minutes_per_step": {
"type": "number"
},
"stages": {
"type": "number"
},
"total_minutes": {
"type": "string"
},
"rounding": {
"type": "string"
},
"preview": {
"type": "array",
"items": {
"type": "object",
"properties": {
"stage": {
"type": "number"
},
"bpm": {
"type": "number"
},
"minutes": {
"type": "string"
},
"start_minutes": {
"type": "string"
},
"end_minutes": {
"type": "string"
}
},
"required": [
"stage",
"bpm",
"minutes",
"start_minutes",
"end_minutes"
],
"additionalProperties": false
}
},
"downloads": {
"type": "object",
"properties": {
"csv": {
"type": "string"
}
},
"required": [
"csv"
],
"additionalProperties": false
}
},
"required": [
"kind",
"start_bpm",
"target_bpm",
"step",
"step_type",
"minutes_per_step",
"stages",
"total_minutes",
"rounding",
"preview",
"downloads"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Community
Evidence