FindBPM tempo planning MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FindBPM tempo planning MCPAt 128 BPM, what are the beat, eighth, sixteenth, and bar lengths?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FindBPM tempo planning MCP
Local calculations that help use results from FindBPM, the browser-based BPM and key finder. FindBPM analyzes MP3, WAV, FLAC, and M4A audio on your device; this server never receives audio or performs audio analysis.
tempo_timingconverts a known BPM into milliseconds per beat, eighth and sixteenth notes, and bar, plus half/double-time readings.compare_temposcompares two reported rates and checks whether one may be a half/double-time interpretation of the other.camelot_neighborslists common nearby Camelot codes for a known key estimate.get_official_linksreturns the official analyzer.
After you find bpm for a track, tap along to confirm whether the reported pulse is the beat you hear. At 120 BPM, one beat is 500 ms and a four-beat bar is 2 seconds. For a DJ transition, tempo and neighboring Camelot codes can narrow candidates, but listen to phrasing and harmony before using a mix.
Run
Node.js 20.18.1 or newer:
npm install
npm test
node index.mjsConfigure your MCP client to start node /absolute/path/to/findbpm-mcp/index.mjs over stdio. No account, audio file, or network request is needed by this server. MIT license; see LICENSE.
Available Tools
4 toolscamelot_neighborsFind nearby Camelot codesB
List common neighboring Camelot wheel codes for a known key estimate.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'List' implies a read-only lookup, but the description does not explain return format, ordering, or what 'neighboring' means operationally (e.g., adjacent wheel positions, relative major/minor).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is appropriately sized for a one-parameter lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the core operation is conveyed. However, without annotations or an output schema, the description should do more to define 'neighboring' codes and the return format, leaving important context underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must clarify the single parameter. It adds meaningful context by indicating the input is a 'known key estimate' and tying it to Camelot wheel codes, but it does not specify the expected format (e.g., '8A') beyond the schema's maxLength constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('neighboring Camelot wheel codes') scoped to a 'known key estimate.' It is clearly distinct from the unrelated sibling tools, though it does not explicitly differentiate itself from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a known key estimate' implies the usage context, but there is no explicit guidance on when not to use it or what alternative tools might apply. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_temposCompare two temposB
Compare reported BPMs including half-time and double-time interpretations.
| Name | Required | Description | Default |
|---|---|---|---|
| firstBpm | Yes | ||
| secondBpm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the comparison accounts for half-time and double-time interpretations, which is real behavioral context beyond the name. But it never says whether this is a pure read-only computation, whether it returns a boolean match, a ratio, or a ranked set of interpretations, or what tolerance counts as 'equal'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, and the most discriminating information (half-time/double-time handling) is front-loaded. It is efficient, though its brevity is partly the source of the gaps elsewhere rather than a pure virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (two numeric inputs, no output schema), but for a comparison tool the shape of the result is the whole point, and the description says nothing about it. An agent knows what goes in and roughly what the tool reasons about, but not what comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 only mentions 'reported BPMs' in passing; it does not state that the two parameters are the two numeric BPM values being compared, nor anything about the valid 0-500 range or whether order matters. The self-explanatory parameter names (firstBpm, secondBpm) rescue this to a minimum-viable 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (compare) plus specific resource (reported BPMs), and it adds a meaningful qualifier: half-time and double-time interpretations. That qualifier distinguishes it from a plain numeric comparison and plausibly from the sibling tempo_timing, though the description never names the sibling to make the contrast explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'reported BPMs' implies the scenario (reconciling two conflicting tempo readings), but there is no explicit when-to-use, no when-not-to-use, and no reference to tempo_timing as the alternative for single-tempo analysis. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_official_linksOfficial FindBPM linksC
Return the official browser-based audio analyzer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says "Return" and does not clarify whether the operation is read-only, what exactly is returned, or whether any authentication or side effects are involved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a zero-parameter utility tool, though its terseness contributes to ambiguity elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter tool, the description is minimally viable, but it does not resolve the mismatch between the plural "links" in the name/title and the singular "audio analyzer" in the description. With no output schema, the description should more clearly explain what is being returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, which sets the baseline at 4 per the scoring rules. There are no parameter semantics to document or compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb ("Return") and a resource ("official browser-based audio analyzer"), but the resource does not clearly match the tool name/title "get_official_links" / "Official FindBPM links". It gives a vague sense of purpose without explicitly differentiating it from the sibling tempo/Camelot tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any mention of prerequisites or exclusions. An agent must infer its role from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tempo_timingConvert BPM to timingB
Convert a known BPM to beat, subdivision, and bar lengths. Audio is not accessed.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | Yes | ||
| beatsPerBar | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It says audio is not accessed, which is useful, but it does not clarify whether the tool is a pure calculation, whether it has side effects, what permissions are needed, or whether the output is deterministic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and is front-loaded with the action and output quantities. Every clause adds information, including the explicit note that audio is not accessed, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter calculator with no output schema, the description names the return quantities but omits their units or formatting and does not explain the second parameter. It is adequate but leaves meaningful gaps for an agent trying to predict exact input semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 by explaining the parameters. It only implies that 'bpm' is the input and says nothing about 'beatsPerBar', its default value, or how it affects the computed bar length.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it converts BPM into beat, subdivision, and bar lengths. It does not explicitly distinguish itself from the listed siblings, but the output domain is clearly different from compare_tempos, camelot_neighbors, and get_official_links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'known BPM' implies the tool should be used when the tempo is already established, and 'Audio is not accessed' rules out audio analysis. However, it names no alternative tool and gives no explicit when-not guidance, so the usage context remains implied rather than stated.
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.
4 tool updates
v0.1.0- First observed
camelot_neighbors - First observed
compare_tempos - First observed
get_official_links - First observed
tempo_timing
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: timing conversion, BPM comparison, Camelot-neighbor lookup, and official-link retrieval. There is no meaningful overlap that would cause misselection.
All names use snake_case, which is consistent and readable. However, the verb/noun pattern is mixed, with some tools named as noun phrases (tempo_timing, camelot_neighbors) and others as verb phrases (compare_tempos, get_official_links).
Four tools is well scoped for a narrow tempo-planning server. Each tool contributes a distinct planning or reference capability without bloating the surface.
The set covers the core planning workflow: BPM-to-timing conversion, tempo comparison, Camelot-neighbor guidance, and a link to the official analyzer. Minor gaps remain around fuller key/Camelot conversion or additional tempo-planning utilities, but agents can work around them.
Maintenance
Related MCP Connectors
Chords, scales, transposition, capo and tempo maths, with links to free interactive music tools.
Audio features + harmonic set-building for tracks by name/ISRC. Spotify audio-features replacement.
Read-only music guides, chord transposition, piano chord spelling and guitar-tab pitch mapping.
Free deterministic tools for math, data transforms, dates, text, statistics, finance, and units.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides atomic music-theory and MIDI tools for composing, enabling LLMs to chain deterministic steps like scale/chord lookups, degree resolution, rhythm generation, and MIDI rendering.131MIT
- AlicenseNot gradedqualityBmaintenanceAnalyzes timing and tempo accuracy of percussion practice recordings via onset detection, reporting per-gap deviations and consistency stats to MCP clients.MIT
- AlicenseNot gradedqualityBmaintenanceEnables DJs to retrieve BPM, key/Camelot, energy, and other track metadata with provider provenance, score transitions, plan setlists, and control Spotify playlists and playback with staged, revalidated writes for safety.MIT
- AlicenseNot gradedqualityAmaintenanceEnables searching YouTube Music and managing playlists through read and confirmation-gated write tools over STDIO. Supports identity checks, song search, playlist listing/retrieval, and previewed playlist creation, track addition, and exact track removal.MIT