Skip to main content
Glama

MCP-AppleMusic

A FastMCP server implementation for controlling Apple Music (formerly iTunes) on macOS through AppleScript commands.

Requirements

  • Python 3.13+

  • macOS with Apple Music app installed

  • MCP library ≥1.2.1

Related MCP server: Apple Music MCP Server

Installation

First, ensure you have uv installed:

$ brew install uv

Then, with Claude Desktop, add the following to claude_desktop_config.json:

{
  "mcpServers": {
    "iTunesControlServer": {
      "command": "uvx",
      "args": ["-p", "3.13", "-n", "mcp-applemusic"]
    }
  }
}

Available Commands

The following commands are available through the MCP server:

itunes_play()         # Start playback
itunes_pause()        # Pause playback
itunes_next()         # Skip to next track
itunes_previous()     # Go to previous track
itunes_search(query)  # Search library for tracks
itunes_play_song(song)  # Play specific song
itunes_create_playlist(name, songs)  # Create new playlist
itunes_library()      # Get library statistics

Usage

Start the server:

python server.py

Example interactions:

# Search for a song
results = itunes_search("Hey Jude")

# Create a new playlist
itunes_create_playlist("Beatles Favorites", ["Yesterday", "Hey Jude", "Let It Be"])

# Play a specific song
itunes_play_song("Hey Jude")

Development

  1. Clone the repository:

git clone https://github.com/yourusername/mcp-applemusic.git
cd mcp-applemusic
  1. Install development dependencies:

pip install -e ".[dev]"

Contributing

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Notes

  • This tool only works on macOS systems due to its AppleScript dependency

  • Requires Apple Music (formerly iTunes) to be installed

Available Tools

10 tools
itunes_all_songsB

Get a list of all songs in the Music library. Returns a formatted list of all tracks with their names and artists.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that it 'Returns a formatted list of all tracks with their names and artists,' which adds some context about the output format. However, it fails to disclose critical behavioral traits such as whether this is a read-only operation, potential performance impacts for large libraries, or any rate limits. For a tool with zero annotation coverage, this is insufficient.

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 concise and front-loaded, consisting of two sentences that directly state the purpose and output. There is no wasted text, and it efficiently communicates the essential information. However, it could be slightly improved by integrating usage hints, but as-is, it's well-structured.

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 the tool's low complexity (0 parameters, output schema exists), the description is somewhat complete but has gaps. It explains what the tool does and the return format, but lacks behavioral context and usage guidelines. The output schema likely covers return values, so the description doesn't need to detail them. However, for a tool with no annotations, it should provide more behavioral transparency to be fully adequate.

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 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. A baseline of 4 is applied for zero parameters, as it avoids unnecessary information.

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's purpose: 'Get a list of all songs in the Music library.' It specifies the verb ('Get') and resource ('all songs'), distinguishing it from siblings like itunes_play_song or itunes_search. However, it doesn't explicitly differentiate from itunes_library, which might have overlapping functionality, preventing a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't clarify if this should be used instead of itunes_library for song-specific lists or how it compares to itunes_search for filtered results. This lack of context leaves the agent without clear usage instructions.

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

itunes_create_playlistA

Create a new playlist with the given name and add tracks to it. 'songs' should be a comma-separated list of exact track names. Returns a confirmation message including the number of tracks added.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
songsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool 'Returns a confirmation message including the number of tracks added,' which adds some context about output behavior. However, it lacks critical details such as whether this operation requires specific permissions, if it's idempotent, what happens on errors (e.g., duplicate playlist names), or any rate limits. For a mutation tool with zero annotation coverage, this is insufficient.

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 front-loaded with the core purpose in the first sentence, followed by specific parameter guidance and return behavior in subsequent sentences. Every sentence adds value without redundancy, making it efficient and easy to parse. No words are wasted.

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 that there is an output schema (which should document the return values), the description doesn't need to explain return details extensively. However, for a mutation tool with no annotations and 0% schema description coverage, the description provides basic purpose and parameter guidance but lacks behavioral context like error handling or prerequisites. It's minimally adequate but has clear gaps in completeness.

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 schema description coverage is 0%, so the description must compensate. It adds meaningful semantics beyond the schema: it explains that 'songs' should be a 'comma-separated list of exact track names,' which clarifies the format and requirement for exact names. However, it doesn't provide similar context for the 'name' parameter (e.g., length limits, allowed characters), leaving some gaps. Given the low schema coverage, this is above baseline but not fully comprehensive.

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 specific action ('Create a new playlist') and resources involved ('with the given name and add tracks to it'), distinguishing it from sibling tools like itunes_play_song (plays existing songs) or itunes_search (finds songs). It provides a complete picture of the tool's function beyond just the name.

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 is provided on when to use this tool versus alternatives. For example, it doesn't mention whether this should be used instead of modifying existing playlists (if such a tool exists) or clarify that it's for creating new playlists specifically, not updating existing ones. The description assumes the context without providing explicit usage boundaries.

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

itunes_current_songB

Get information about the currently playing track. Returns the track name, artist, and album.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/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 of behavioral disclosure. It mentions the return values (track name, artist, album) but doesn't cover critical behaviors: what happens if iTunes isn't running, if no song is playing, error handling, or whether this is a read-only operation. The description adds some context but leaves significant gaps for a tool with zero annotation coverage.

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 extremely concise and front-loaded: two sentences that directly state the purpose and return values without any fluff. Every sentence earns its place by providing essential information. It's appropriately sized for a simple tool with no parameters.

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 the tool's simplicity (0 parameters, output schema exists), the description is adequate but has gaps. It explains the return values, but with no annotations, it should address behavioral aspects like error conditions or dependencies (e.g., iTunes must be active). The output schema likely covers return structure, so the description doesn't need to detail that, but it could better prepare the agent for real-world usage.

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 0 parameters, and schema description coverage is 100% (since there are no parameters to describe). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for tools with no parameters. It appropriately focuses on the tool's function rather than inputs.

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's purpose: 'Get information about the currently playing track.' It specifies the verb ('Get information') and resource ('currently playing track'), distinguishing it from siblings like itunes_play or itunes_pause. However, it doesn't explicitly differentiate from itunes_all_songs or itunes_library, which also retrieve track information but with different scopes.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., iTunes must be running and playing a song), exclusions (e.g., what happens if nothing is playing), or comparisons to siblings like itunes_search or itunes_play_song. Usage is implied by the name but not explicitly stated.

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

itunes_libraryB

Return a summary of the Music library, including total tracks and user playlists.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/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 of behavioral disclosure. It states the tool returns a summary, implying a read-only operation, but doesn't specify whether it requires permissions, has rate limits, or what the output format looks like (though an output schema exists). For a tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, efficient sentence: 'Return a summary of the Music library, including total tracks and user playlists.' It's front-loaded with the core purpose and includes specific details (total tracks, user playlists) without unnecessary words. Every part of the sentence adds value.

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 the tool's simplicity (0 parameters, output schema provided), the description is adequate but has gaps. It clearly states what the tool does, but without annotations, it lacks behavioral context like safety or performance hints. The output schema handles return values, so the description doesn't need to explain those. However, for a read operation with sibling tools, more usage guidance would improve completeness.

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 0 parameters, and schema description coverage is 100%, so the schema fully documents the lack of inputs. The description doesn't need to add parameter details, and it doesn't introduce any confusion. A baseline of 4 is appropriate for a zero-parameter tool with complete schema coverage.

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's purpose: 'Return a summary of the Music library, including total tracks and user playlists.' It specifies the verb ('Return a summary') and resource ('Music library'), and distinguishes it from siblings like 'itunes_all_songs' (which likely lists all songs) and 'itunes_search' (which searches). However, it doesn't explicitly differentiate from 'itunes_current_song' or other playback tools, keeping it at a 4.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'itunes_library' over 'itunes_all_songs' for getting track information or 'itunes_search' for finding specific content. There's no context on prerequisites or exclusions, leaving the agent to infer usage based on tool names alone.

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

itunes_nextA

Skip to the next track.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
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. 'Skip to the next track' clearly indicates a mutation action (changing playback state), but doesn't disclose behavioral details like whether this requires iTunes to be running, what happens at the end of a playlist, error conditions, or response format. It states the core action but lacks operational context.

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 a single, perfectly focused sentence with zero wasted words. It's front-loaded with the complete action statement and contains no redundant or unnecessary information. Every word 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?

Given the tool's simplicity (zero parameters, mutation action), the description is reasonably complete. However, with no annotations and a mutation tool, it could benefit from mentioning basic operational constraints. The existence of an output schema means return values are documented elsewhere, reducing the burden on the description.

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, and schema description coverage is 100% (empty schema properly documented). The description doesn't need to explain parameters, so it appropriately focuses on the action. A baseline of 4 is appropriate for zero-parameter tools when the schema is complete.

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 specific action ('Skip to') and target resource ('the next track'), using an unambiguous verb+resource combination. It effectively distinguishes this tool from siblings like 'itunes_play', 'itunes_pause', and 'itunes_previous' by specifying the exact navigation function.

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 usage context (when a user wants to advance to the next track in a playback sequence), but doesn't explicitly state when NOT to use it or name alternatives. It doesn't provide prerequisites or compare with similar tools like 'itunes_previous' or 'itunes_play_song'.

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

itunes_pauseB

Pause playback in Music (iTunes).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions pausing playback but doesn't specify what happens if playback isn't active (e.g., error behavior), whether it affects other media apps, or if it requires specific permissions. This leaves significant gaps in understanding the tool's behavior.

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 a single, efficient sentence that directly states the tool's action without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured for quick understanding.

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 the tool's simplicity (0 parameters, no annotations, but has an output schema), the description is minimally adequate. It states the basic action but lacks details on behavioral context (e.g., error handling) and doesn't leverage the output schema to explain return values. For a straightforward tool, it meets the minimum but could be more informative.

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 0 parameters, and the input schema has 100% description coverage, so there are no parameters to document. The description doesn't need to add parameter semantics, and a baseline score of 4 is appropriate as it avoids redundancy while being complete for a parameterless tool.

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 verb ('Pause') and resource ('playback in Music (iTunes)'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'itunes_play' or 'itunes_next', which would require more specific context about when pausing is appropriate versus other playback controls.

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?

The description provides no guidance on when to use this tool versus alternatives like 'itunes_play' or 'itunes_next', nor does it mention prerequisites such as requiring playback to be active. It simply states what the tool does without contextual usage instructions.

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

itunes_playB

Start playback in Music (iTunes).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden but provides minimal behavioral insight. It states the action ('Start playback') but doesn't disclose what happens if playback is already active, whether it requires specific permissions, or what the expected outcome is. This leaves significant gaps for a mutation 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 a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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 the tool has no parameters and an output schema exists, the description doesn't need to cover those aspects. However, as a mutation tool with no annotations, it should provide more behavioral context (e.g., what 'Start playback' entails, error conditions). The current description is minimal but not fully complete for safe 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?

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not adding unnecessary information.

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 action ('Start playback') and target resource ('Music (iTunes)'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'itunes_play_song', which suggests a similar playback function with song-specific parameters.

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 is provided on when to use this tool versus alternatives like 'itunes_play_song' or 'itunes_pause'. The description implies it initiates playback, but doesn't specify context (e.g., resuming paused playback vs. starting a new track) or prerequisites.

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

itunes_play_songA

Play the first track whose name exactly matches the given song name. Returns a confirmation message.

ParametersJSON Schema
NameRequiredDescriptionDefault
songYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
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 key behavior: plays the first exact match and returns a confirmation message. However, it doesn't mention error handling (e.g., if no match found), permissions, or side effects like interrupting current playback. It adds value but lacks comprehensive behavioral context.

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 sentences, zero waste. The first sentence states the action and matching logic; the second specifies the return. It's front-loaded with the core functionality and appropriately sized for a simple tool.

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 low complexity (1 parameter, simple action), an output schema exists (so return values are covered), and no annotations, the description is mostly complete. It covers purpose, basic behavior, and parameter use. Minor gaps include lack of error cases or playback context, but it's sufficient for effective 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 description coverage is 0%, so the description must compensate. It adds meaning by explaining that the 'song' parameter is used for exact name matching and triggers playback of the first match. This clarifies the parameter's purpose beyond the schema's basic string type. However, it doesn't detail format constraints (e.g., case sensitivity).

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 specific action ('Play'), the resource ('first track whose name exactly matches the given song name'), and distinguishes it from siblings like 'itunes_play' (general play) or 'itunes_search' (search without playing). It precisely defines the matching behavior as exact name match and first result.

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 usage context: when you want to play a specific song by exact name. It doesn't explicitly state when not to use it or name alternatives, but the sibling tools provide clear alternatives (e.g., use 'itunes_search' for broader search, 'itunes_play' for general playback). The guidance is clear but not exhaustive.

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

itunes_previousB

Return to the previous track.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/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 states the action ('Return to the previous track') but lacks behavioral details: it doesn't specify what happens if no previous track exists, whether playback automatically resumes, if it affects playlists or queues, or any error conditions. This leaves significant gaps for a mutation 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 a single, efficient sentence with no wasted words. It's front-loaded with the core action, making it immediately clear. Every word earns its place by conveying the essential purpose without redundancy.

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 the tool's complexity (simple navigation with 0 parameters) and the presence of an output schema (which handles return values), the description is minimally adequate. However, as a mutation tool with no annotations, it should provide more behavioral context (e.g., what happens on error or edge cases) to be fully 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?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to add parameter information, and it correctly doesn't mention any parameters, aligning with the schema. Baseline 4 is appropriate for zero-parameter tools.

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 action ('Return to') and target resource ('the previous track'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'itunes_next' or 'itunes_play_song', but the verb 'return to' implies navigation rather than playback initiation.

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 is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., requires iTunes to be playing), exclusions, or relationships with sibling tools like 'itunes_next' for forward navigation or 'itunes_play' for resuming playback.

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.

  1. 10 tool updates
    • First observeditunes_all_songs
    • First observeditunes_create_playlist
    • First observeditunes_current_song
    • First observeditunes_library
    • First observeditunes_next
    • First observeditunes_pause
    • First observeditunes_play
    • First observeditunes_play_song
    • First observeditunes_previous
    • First observeditunes_search

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between itunes_play and itunes_play_song, as both involve starting playback. However, itunes_play is a general playback start, while itunes_play_song targets a specific song, which helps differentiate them. All other tools are clearly distinct in function.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with the prefix 'itunes_' and a descriptive verb or noun phrase. This uniformity makes the tool set predictable and easy to understand, with no deviations in naming style.

Tool Count5/5

With 10 tools, the server is well-scoped for managing an Apple Music library, covering essential operations like playback control, library queries, playlist creation, and song search. Each tool serves a clear purpose without redundancy, making the count appropriate for the domain.

Completeness4/5

The tool set provides good coverage for core music library management, including playback, search, and playlist creation. However, there are minor gaps, such as the inability to delete or modify existing playlists, which could limit some agent workflows. Overall, it supports most common tasks effectively.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Allows controlling Apple Music on macOS through an MCP server that supports playback control, volume adjustment, and music search functionality.
    2
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Integrates Apple Music with MCP clients to search the global catalog, manage personal playlists, and access library data. It enables users to perform actions like creating playlists, adding tracks, and viewing recommendations through natural language commands.
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Apple Music playback control, library search, playlist management, and queue operations via MCP.
    2
    MIT