Skip to main content
Glama
voho

midi-composer-mcp

by voho

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation5/5

    Each tool has a clearly distinct purpose: chord/scale retrieval, matching, progression building, and MIDI writing. No two tools overlap in functionality.

    Naming Consistency5/5

    All tool names follow either a verb_noun pattern (get_chord, list_scales) or a noun_to_noun pattern (chords_to_midi), with consistent snake_case throughout.

    Tool Count5/5

    13 tools cover a broad range of music composition tasks without being overwhelming. Each tool serves a specific need, fitting well within the optimal 3-15 range.

    Completeness5/5

    The set covers music theory retrieval (scales, chords), progression building, random generation, and MIDI output (notes, chords, combined tracks). No obvious gaps for its stated purpose.

  • Average 4/5 across 13 of 13 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 8 commits in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior4/5

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

    The description covers behavior without annotations: chord input format, octave voicing, beats per chord, tempo, arpeggiation, velocity, program, file naming, and return values. Minor gaps like file overwrite behavior or error handling.

    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?

    Three concise sentences, front-loaded with main action. Could be more structured (e.g., listing parameters), but no wasted words.

    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?

    Given 9 parameters and no output schema, description explains input types, defaults, behavior, and return info. Missing details like file overwrite policy or edge cases, but sufficient for typical use.

    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?

    Schema coverage is 0%, but description adds meaning for most parameters (beats_per_chord, tempo, octave, arpeggiate, velocity, program, file_name, output_dir). Not all parameters fully explained, but adds substantial value beyond raw schema.

    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 the tool writes chord sequences to MIDI files, with block or arpeggiated modes. It distinguishes from siblings like notes_to_midi and degrees_to_chords by specifying chord-level input, but lacks explicit sibling differentiation.

    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 vs alternatives (e.g., notes_to_midi, song_to_midi). No prerequisites, context, or conditionals provided.

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

  • Behavior3/5

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

    With no annotations, the description carries full burden. It discloses that octaves are ignored, inversion notation is used, and partial matches include missing_notes. But it does not describe return format, performance, or potential edge cases.

    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 clear first sentence stating the purpose, followed by explanations of the two modes. It is not overly verbose, though could be slightly tightened.

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

    Completeness2/5

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

    Given no output schema and low parameter coverage, the description should be more complete. It lacks details on the note input format and the return value structure (what exact information is returned for each chord). The 'limit' parameter is unmentioned.

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

    Parameters2/5

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

    Schema coverage is 0%, so description must compensate. It explains the meaning of 'include_partial' through the mode descriptions, but does not specify the note format (e.g., 'C', 'C#') nor explain the 'limit' parameter at all. This is insufficient for a tool with 3 parameters.

    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 the tool finds chords matching given notes, with exact and partial modes explained. It distinguishes from siblings like get_chord (gets a specific chord by name) and list_chords (lists all chords) by focusing on matching input notes.

    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?

    The description provides clear guidance on when to use exact vs partial matches, explaining behavior for inversions and missing notes. However, it does not explicitly compare to alternatives like match_scales or other sibling tools.

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

  • Behavior3/5

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

    The description explains the two-track structure, alignment logic, and instrument selection, but does not disclose output behavior (e.g., whether it saves to file or returns MIDI data), side effects, or permissions. With no annotations, more transparency is needed.

    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 a single, well-structured paragraph that front-loads the main purpose. The alignment example adds clarity but could be seen as slightly verbose; overall it is efficient.

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

    Completeness2/5

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

    With 18 parameters, no schema descriptions, and no output schema, a complete description should cover most parameters and return behavior. This description only covers a fraction of the parameters and omits output details, making it insufficient for a complex tool.

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

    Parameters2/5

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

    Schema coverage is 0%, so the description must compensate. It explains melody_notes, melody_rhythm, chords, beats_per_chord, and program numbers, but leaves 13 out of 18 parameters (e.g., step_beats, tempo, octaves, velocities, sustain, file_name) completely unexplained.

    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 writes a melody plus chord accompaniment into a two-track MIDI file, and distinguishes from sibling tools by mentioning 'same rules as notes_to_midi' and 'same formats as chords_to_midi', indicating it combines both functionalities.

    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?

    The description provides a clear context for use, including alignment guidance with an example ('a melody over 4 chords of 4 beats with 0.5-beat steps needs a 32-step rhythm/notes'). However, it does not explicitly state when to use this tool versus alternatives like using notes_to_midi and chords_to_midi separately.

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

  • Behavior3/5

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

    No annotations provided, so description carries full burden. It explains input parameters and output format (chord symbol + notes). Lacks details on idempotency, error handling, or authorization, but covers basic behavior.

    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?

    Two paragraphs with essential information. First sentence states purpose, then lists formats, output, and limitation. No fluff, but could be slightly more streamlined.

    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?

    Covers mapping logic and output format adequately for a simple tool. Missing details on valid root/scale_type values and error cases, but given no output schema, it provides necessary context.

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

    Parameters2/5

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

    Schema coverage is 0%. The description explains 'degrees' format in detail but does not elaborate on 'root' and 'scale_type' valid values (e.g., note names, major/minor). 'Sevenths' is briefly described.

    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 the tool resolves chord-degree sequences into concrete chords, with examples and output format. It distinguishes from siblings like 'diatonic_chords' and 'get_chord' by focusing on mapping a sequence.

    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?

    The description says 'This tool only maps degrees to chords; choosing and ordering the degrees is up to you,' implying when to use it. It doesn't explicitly exclude alternatives but provides clear context.

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

  • Behavior3/5

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

    With no annotations, the description carries full burden. It discloses output format (roman numerals, degree names, harmonic functions) and special behavior for octave roots (MIDI numbers). However, it does not specify valid scale_type values, error handling, or limitations (e.g., only seven-note scales get full output).

    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 front-loaded with the purpose and includes a clear example. The second paragraph adds useful context but is slightly verbose. Overall, it is efficient for the complexity of the tool.

    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 no output schema and moderate complexity, the description covers return values and a workflow. However, it lacks details on edge cases, valid inputs, and errors, which an agent would need for reliable invocation.

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

    Parameters2/5

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

    Schema description coverage is 0%, so description must compensate. It only hints at 'root' and 'scale_type' via example, and 'sevenths' is mentioned but not explicitly described. No valid values or constraints for parameters are provided, leaving ambiguity for an AI agent.

    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 the tool lists chords built on each degree of a scale, with explicit example and mention of return values (roman numerals, degree names, harmonic functions). It distinguishes from sibling degrees_to_chords by describing a workflow.

    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?

    The description implies a usage pattern: use this tool to get diatonic chords as raw material, then resolve with degrees_to_chords. It does not explicitly state when to avoid this tool, but the example and workflow guidance are sufficient for an AI agent to infer its primary use.

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

  • Behavior4/5

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

    The description details that the selection is a 'pure dice roll', octaves are preserved, and the operation is reproducible via a seed which is always returned. This goes beyond mere operation to provide behavioral insight, compensating for the absence of annotations.

    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 short (three sentences) and front-loads the main purpose. It uses clear language but could be slightly more structured with explicit parameter descriptions.

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

    Completeness2/5

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

    With no output schema and no annotations, the description should explain the return value. It only mentions that the seed is returned, but not the format of the random notes themselves. This omission leaves the agent uncertain about the output structure, reducing completeness.

    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 explains 'count' and 'seed' parameters (count controls number of picks, seed for reproducibility). However, 'notes' and 'allow_repeats' are not described; the schema has 0% coverage, so the description should have covered all parameters. It adds partial value but is 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 the tool picks uniformly random notes from a pool, with an example referencing get_scale/get_chord. This distinguishes it from sibling tools like get_chord or get_scale, which produce deterministic outputs.

    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?

    The description indicates the typical source of the pool (get_scale/get_chord) and that this is a random selection. It provides context for when to use this tool but does not explicitly mention when not to use it or suggest alternatives.

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

  • Behavior3/5

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

    Describes the random dice roll behavior, output format, and seed reproducibility. No annotations exist, so description carries burden; however, it lacks details on randomness quality or side effects.

    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?

    Description is concise, front-loaded with the core purpose, and each sentence adds value. No unnecessary words.

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

    Completeness5/5

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

    For a simple random generator tool with no output schema, the description fully explains the return format, how to use results, and all parameters. Completeness is high given the tool's complexity.

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

    Parameters5/5

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

    With 0% schema coverage, the description explains all four parameters (length, density, accent_probability, seed) in clear terms, adding meaning beyond the schema types and defaults.

    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?

    Clearly states it generates a random rhythm pattern of a given length. Distinguishes from siblings by mentioning its output feeds into notes_to_midi/song_to_midi, but does not explicitly differentiate from random_notes.

    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?

    Provides guidance on when to use the tool (generating rhythm for notes_to_midi or song_to_midi) and suggests editing by hand. Does not explicitly state when not to use alternatives.

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

  • Behavior3/5

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

    No annotations are provided, so the description carries the full burden. It describes the return content but does not disclose whether the operation is read-only, how it handles large datasets, or any side effects.

    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?

    Two precise sentences: first states the tool's purpose, second gives usage context. No filler; every sentence earns its place.

    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?

    With zero parameters and no output schema, the description adequately explains the tool's function and how it relates to sibling tools, though it could mention if the list is complete or paginated.

    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?

    There are no parameters, so the description inherently adds value by explaining what the tool returns and how to use the output, which is sufficient beyond the schema.

    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 explicitly states it lists every chord type with intervals, degree labels, symbol suffixes, and aliases, distinguishing itself from sibling tools like 'get_chord' which retrieves a specific chord.

    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?

    The description provides guidance on when to use this tool (to list chord types) and how to use the results with 'get_chord' and chord symbols, though it lacks explicit exclusion of alternatives.

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

  • Behavior3/5

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

    No annotations are provided, so the description carries full burden. It describes the output (list of scales with attributes) but does not mention any side effects, rate limits, or potential performance considerations. For a simple read-only listing, this is adequate but could be improved.

    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?

    Two concise sentences: first defines the action and output, second provides usage context. No unnecessary words or repetition.

    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?

    Given zero parameters and no output schema, the description provides sufficient context: what the list contains and how to use the results with sibling tools. It could mention ordering or limits, but overall it is complete for the tool's simplicity.

    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 tool has zero parameters, so baseline is 4. The description adds no parameter-specific information beyond the schema (which is already 100% covered).

    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 the tool lists every scale type with intervals, degree labels, and aliases. It distinguishes from siblings like get_scale (single) and match_scales (search) by indicating a full listing.

    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?

    The description explicitly tells how to use the output (scale names or aliases) with specific tools like get_scale, match_scales, etc. While it doesn't explicitly state when to use this tool over siblings, the guidance is clear and helpful.

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

  • Behavior4/5

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

    No annotations provided, but the description discloses key behaviors: octave ignorance, input flexibility, match types, sorting. This provides good transparency beyond the bare minimum.

    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?

    Description is exceptionally concise with two sentences plus a brief explanatory block. Every sentence is meaningful, and key information is front-loaded.

    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?

    Given the tool's complexity (3 params, no output schema, no annotations), the description covers purpose, input, matching, and sorting. It could mention return format but is still quite complete.

    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 coverage is 0%, so description must compensate. It explains the 'notes' parameter format well, but 'exact_only' and 'limit' are not explicitly described, though implied by the behavioral context.

    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 the tool finds scales that contain given notes, with specific verb 'find' and resource 'scales'. It distinguishes from siblings like 'match_chords' by focusing on scales.

    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?

    The description explains when to use this tool: to find scales containing given notes. It details matching behavior (exact vs contains) and sorting, but lacks explicit alternatives or when-not-to-use guidance.

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

  • Behavior5/5

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

    With no annotations, the description carries the full burden and delivers thorough behavioral details: note playback order, rhythm pattern (O, o, .), sustain behavior, octave_policy, and return of file path, base64, and event list. No contradictions.

    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 moderately sized and front-loaded with the main action. It includes necessary details on rhythm and octave policy without excessive verbosity, though it could be slightly more compact.

    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?

    With 12 parameters, no output schema, and no annotations, the description provides a solid overview of behavior, key parameters, and return values. It covers the core functionality well but could elaborate on less common parameters or edge cases.

    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?

    Schema description coverage is 0%, so the description must compensate. It explains the key parameters (rhythm, step_beats, octave_policy, velocity, sustain) in context. However, it does not clarify the format of the notes parameter (string vs array) or some defaults like tempo, octave, program, file_name, output_dir.

    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 the tool's purpose: 'Write a note sequence (scale, arpeggio or melody) to a MIDI file.' This is a specific verb+resource combination that distinguishes it from siblings like chords_to_midi and song_to_midi.

    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?

    The description explains how to use the tool (e.g., playing notes per step_beats, rhythm pattern interpretation, octave_policy suggestions) and what output to expect. It does not explicitly state when to avoid using it, but given the sibling tools, the context is clear.

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

  • Behavior4/5

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

    With no annotations, the description bears full burden. It discloses the behavior for each input combination (no root, root, root with octave), the return format, and that the output feeds into other tools. No side effects mentioned, which is appropriate. Lacks details on error handling or limits, but overall transparent for a read-only computation tool.

    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 very concise: one sentence for overall purpose, then clear bullet-like explanations for each mode, and a final note on output usage. Every sentence adds value and the structure is front-loaded.

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

    Completeness5/5

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

    Given no output schema, the description fully explains return values for all input variants. It also mentions how the output integrates with other tools, which is helpful context. No missing information for this tool's complexity.

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

    Parameters5/5

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

    Schema coverage is 0%, so description must add meaning. It explains that scale_type is a scale name (e.g., major), root is optional and affects output: without root returns intervals, with root returns notes, and with octave returns pitches with MIDI numbers. This fully clarifies parameter behavior beyond the schema.

    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 the tool's purpose: 'Describe a scale type; with a root note, generate its notes.' It distinguishes two modes (without root gives intervals, with root gives notes, with octave gives concrete pitches), which differentiates it from sibling tools like list_scales or match_scales.

    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?

    The description provides guidance on when to use each mode: without root for intervals, with root for notes, with octave for concrete pitches. It also mentions integration with other tools. However, it does not explicitly exclude use cases or compare to alternatives like get_chord, but for a scale-focused tool this is sufficient.

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

  • Behavior5/5

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

    Without annotations, the description fully explains behavior: intervals only without root, spelled notes with root, and MIDI numbers with octave. No contradictions or gaps.

    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?

    Four concise sentences, front-loaded with purpose, no redundant information.

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

    Completeness5/5

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

    Despite no output schema, the description explains return values (intervals, notes, MIDI) and notes interoperability with sibling tools, making it 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?

    With 0% schema description coverage, the description explains both parameters well, including the effect of root. Lacks explicit enumeration of chord types but provides illustrative examples.

    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 states the tool's function with specific verbs ('describe', 'generate') and clearly distinguishes from siblings like get_scale and list_chords by focusing on chord types and note generation.

    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?

    Explanation of two modes (with/without root) and mention of output feeding into other tools provides good usage context, but does not explicitly exclude alternative tools.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

midi-composer-mcp MCP server

Copy to your README.md:

Score Badge

midi-composer-mcp MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/voho/midi-composer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server