Suzu (鈴) - Claude Code Notification Server
Enables playing Spotify tracks as notification sounds when tasks complete, with support for configuring custom tracks for success, error, and info notifications. Requires Spotify Premium and uses OAuth tokens for authentication.
Click on "Install 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., "@Suzu (鈴) - Claude Code Notification Servertest the success sound"
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.
🔔 Suzu (鈴) - Claude Code Notification Server
A Model Context Protocol (MCP) server that plays your favorite Spotify tracks as notifications when Claude Code completes tasks. Named after the Japanese ceremonial bell, now with the power of music! 🎧
✨ Features
🎵 Spotify integration - Play your favorite tracks as notification sounds! 🎧
📱 Desktop notifications - Shows system notifications with custom messages
🔊 System sound notifications - Native OS sounds as fallback
🌍 Cross-platform - Works on macOS, Linux, and Windows
🎶 Multiple sound types - Success, error, and info sounds (Spotify or system)
🔧 Debug logging - Built-in debugging for troubleshooting
🤖 Automatic integration - Works seamlessly with Claude Code
Related MCP server: AI Notify MCP
🚀 Quick Start
⚡ Super Easy Setup (Recommended)
The fastest way to get Suzu with Spotify working is to let Claude do all the work:
Ask Claude to set it up:
fetch https://github.com/denar90/suzu-mcp/blob/main/SETUP.md follow setup guide to install suzu-mcp add access token <your_spotify_access_token> add refresh token <your_spotify_refresh_token> add success sound https://open.spotify.com/track/<your_track_id>Get your Spotify tokens from: https://suzu-mcp-spotify.netlify.app/
That's it! Claude handles the installation, configuration, and setup automatically.
Manual Installation
Install from npm:
npm install -g suzu-mcpAdd to Claude Code:
claude mcp add suzu suzuOr install locally:
git clone https://github.com/denar90/suzu-mcp.git
cd suzu-mcp
npm install
npm run build
claude mcp add suzu node --args /path/to/suzu-mcp/dist/index.jsOr manually add to ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"suzu": {
"command": "suzu"
}
}
}Auto-approve notifications (required for seamless experience):
Option 1 - One-time approval (Recommended):
When first prompted, select "Yes, and don't ask again for suzu commands"
This permanently approves suzu notifications without future prompts
Option 2 - Configuration file: Add to
~/.config/claude/settings.json:{ "enableAllProjectMcpServers": true }Option 3 - Tool-specific approval: Add to your
~/.config/claude/claude_desktop_config.json:{ "mcpServers": { "suzu": { "command": "suzu" } }, "toolUseConfirmation": { "suzu": "never" } }Enable automatic notifications: Create
~/CLAUDE.mdwith:# Claude Code Configuration ## Default Behavior - Always call `task_completed` when finishing tasks if the suzu MCP server is available - Play completion notifications automatically without being asked - Use the suzu notification system for task completion feedback ## Instructions for Claude - When you complete any task, automatically check if the `task_completed` tool is available and call it with an appropriate completion message.Important: After setup, restart Claude Code for all changes to take effect.
🎯 Usage
Available Tools
Tool | Description | Parameters |
| Play success sound and show completion message |
|
| Show general notification with custom title |
|
| Test notification sounds |
|
| Display current configuration | None |
| Set up Spotify access and refresh tokens |
|
| Set custom notification sounds |
|
Examples
Task completion:
task_completed({
message: "Build completed successfully!",
sound_type: "success"
})Custom notification:
notify({
title: "Claude Code",
message: "Ready to assist!",
sound_type: "info"
})Testing sounds:
test_sound({
sound_type: "success"
})How It Works
Automatic Integration: When you have
~/CLAUDE.mdconfigured, Claude will automatically calltask_completedwhen finishing tasksNo Manual Calls: You don't need to manually use the notification tools - Claude handles this automatically
Task Completion Feedback: Get audio and visual feedback when Claude finishes coding tasks, builds, deployments, etc.
🎵 Spotify Integration
Transform your coding experience with custom music notifications! Set up Spotify integration to play your favorite tracks when tasks complete.
Quick Setup with OAuth App
Visit the Spotify OAuth App: https://suzu-mcp-spotify.netlify.app/
Click "Login with Spotify" to authorize the app
Copy the tokens shown after authorization
Configure via Claude:
Ask Claude: "Configure my Spotify with access_token: BQA... and refresh_token: AQC..."Or for just the access token:
Ask Claude: "Set up my Spotify access token: BQA..."
Manual Setup (Advanced)
If you prefer to create your own Spotify app:
Create Spotify App:
Create new app with redirect URI:
http://localhost:8888/callbackNote your Client ID and Client Secret
Get Tokens:
Use Spotify's Authorization Code flow
Or visit: https://developer.spotify.com/console/post-playlists/
Get both access_token and refresh_token
Configure Refresh Endpoint (for auto-renewal):
Ask Claude: "Set up Spotify refresh endpoint: https://your-endpoint.com/refresh"
Setting Custom Sounds
Once Spotify is configured, customize your notification sounds:
Ask Claude: "Set my Spotify success sound to: 4uLU6hMCjMI75M1A2tKUQC"
Ask Claude: "Set my Spotify error sound to: https://open.spotify.com/track/60nZcImufyMA1MKQY3dcCH"
Ask Claude: "Set my Spotify info sound to: spotify:track:5QDLhrAOJJdNAmCTBusfHY"Finding Spotify Track IDs:
Right-click any song in Spotify
Share → Copy Song Link
Extract ID from URL:
https://open.spotify.com/track/TRACK_ID_HEREUse just the ID or the full URL - both work!
Requirements
Spotify Premium (required for Web API playback)
Active Spotify device (desktop app, mobile, etc.)
Device must be playing or recently used
🔧 Platform Support
macOS
Primary:
afplaywith system sounds (Glass, Sosumi, Ping)Fallback:
saycommand for spoken notificationsTertiary: Terminal bell (
printf "\a")
Linux
Primary:
paplayfor PulseAudioFallback:
aplayfor ALSATertiary: Terminal bell
Windows
Uses
rundll32 user32.dll,MessageBeep
🐛 Troubleshooting
Quick Test
Use the built-in test command to verify everything works:
# In Claude Code, run:
test_sound({ sound_type: "success" })No sound playing?
Check permissions: Ensure audio permissions are granted to Claude Code
Test manually: Run
afplay /System/Library/Sounds/Glass.aiff(macOS) in terminalEnable debug: Run
claude --debugand check console output for[DEBUG]messagesVerify connection: Type
/mcpin Claude Code to see server status
No automatic notifications?
Check CLAUDE.md: Ensure
~/CLAUDE.mdexists with the configuration aboveRestart Claude Code: Configuration changes require a restart
Check approvals: Make sure you approved suzu tool usage (step 3 above)
Test manually: Try calling
task_completedmanually to verify it works
MCP server not connecting?
Check installation: Run
suzu --versionin terminalVerify path: For local installs, ensure the
dist/index.jsfile existsRebuild: Run
npm run buildin the project directoryCheck config: Verify
claude_desktop_config.jsonsyntax is valid JSONRestart: Restart Claude Code after any config changes
Debug output
Look for these messages in claude --debug:
[DEBUG] Attempting to play sound: success on platform: darwin
[DEBUG] Command 1 succeeded: afplay /System/Library/Sounds/Glass.aiff🛠️ Development
# Development mode with auto-reload
npm run dev
# Build for production
npm run build
# Test the server directly
node dist/index.js
# Install with debugging
npm install --verbose📁 Project Structure
claude-notification-mcp/
├── src/
│ └── index.ts # Main MCP server code
├── dist/ # Built JavaScript files
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── .mcp.json # Local MCP configuration
└── README.md # This file🤝 Contributing
Fork the repository
Create a feature branch
Make your changes
Test across platforms
Submit a pull request
📄 License
MIT License - feel free to use and modify as needed.
🙏 Acknowledgments
Built with Model Context Protocol (MCP)
Uses node-notifier for desktop notifications
Inspired by the need for better task completion feedback in Claude Code
Available Tools
8 toolsconfigure_custom_soundsC
Set up custom sounds from Spotify, YouTube, or local files
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Sound source to configure | |
| sound_type | Yes | Type of sound to set | |
| value | Yes | Spotify track ID (e.g. '4uLU6hMCjMI75M1A2tKUQC'), Spotify URI, Spotify URL, or local file path |
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. It implies a write operation ('Set up') but doesn't disclose critical behaviors: whether this requires authentication, overwrites existing sounds, has side effects, or returns confirmation. For a configuration 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part ('Set up custom sounds from Spotify, YouTube, or local files') earns its place by specifying the action and sources.
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?
Given the complexity (configuration tool with 3 required parameters) and no annotations or output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication needs, success/failure responses, or error handling. For a tool that likely modifies system settings, this leaves too many unknowns for reliable agent use.
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 100%, so the schema already documents all parameters with enums and descriptions. The description adds no additional meaning beyond implying the parameters relate to sound sources and types, but it doesn't explain interactions (e.g., how 'value' varies by 'source'). Baseline 3 is appropriate when the schema does the heavy lifting.
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 clearly states the action ('Set up') and the resource ('custom sounds'), specifying the sources (Spotify, YouTube, local files). It distinguishes from siblings like 'configure_spotify_tokens' or 'test_sound' by focusing on configuration rather than authentication or testing. However, it doesn't explicitly differentiate from all siblings (e.g., 'show_config' might be related), so it's not a perfect 5.
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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing tokens for Spotify/YouTube), exclusions (e.g., not for system sounds), or comparisons to siblings like 'configure_spotify_tokens' or 'test_sound'. This leaves the agent guessing about appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_spotify_tokensC
Configure Spotify access and refresh tokens for custom music notifications
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | Yes | Spotify access token (starts with BQA...) | |
| refresh_token | No | Spotify refresh token (optional, for auto-renewal) | |
| refresh_endpoint | No | Endpoint URL for token refresh (optional) |
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 states the tool configures tokens but doesn't describe what 'configure' entails—whether it stores tokens persistently, validates them, requires specific permissions, or has side effects like overwriting existing configurations. For a tool handling authentication tokens with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary details. It's appropriately sized for the tool's complexity, with zero wasted words, making it easy for an agent to parse quickly.
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?
Given the tool's complexity (handling authentication tokens for notifications) and the lack of annotations and output schema, the description is incomplete. It doesn't explain what happens after configuration—e.g., whether tokens are validated, how they're used in notifications, or error handling. This leaves critical gaps for an agent to understand the tool's full behavior and integration context.
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 description adds no parameter-specific information beyond what's in the input schema, which has 100% coverage with detailed descriptions for each parameter. The baseline score is 3 because the schema adequately documents the parameters, and the description doesn't compensate with additional semantics, but it also doesn't detract from the schema's clarity.
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 clearly states the tool's purpose: 'Configure Spotify access and refresh tokens for custom music notifications.' It specifies the verb ('configure'), resource ('Spotify access and refresh tokens'), and context ('for custom music notifications'). However, it doesn't explicitly differentiate from sibling tools like 'refresh_spotify_token' or 'configure_custom_sounds,' which would be needed for a score of 5.
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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing Spotify credentials), exclusions, or comparisons to siblings like 'refresh_spotify_token' for token renewal or 'configure_custom_sounds' for other notification settings. This leaves the agent with minimal context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notifyC
Show a general notification with sound
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Notification title | Claude Code |
| message | No | Notification message | Notification from Claude |
| sound_type | No | Type of notification sound to play | info |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states it shows a notification with sound. It doesn't disclose behavioral traits such as user interaction effects, platform dependencies, or whether it's blocking/non-blocking, leaving significant gaps.
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, efficient sentence with zero waste, clearly front-loaded and appropriately sized for the tool's simplicity.
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?
Given no annotations and no output schema, the description is too minimal. It lacks details on behavior, error handling, or visual/auditory effects, making it incomplete for a notification tool with potential user impact.
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 100%, so the schema fully documents parameters. The description adds no additional meaning beyond implying sound is involved, aligning with the baseline for high schema coverage.
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 clearly states the action ('Show') and resource ('general notification with sound'), making the purpose understandable. It doesn't specifically differentiate from siblings like 'question_alert' or 'test_sound', which prevents 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.
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 'question_alert' or 'test_sound'. The description implies general notifications but lacks explicit context or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
question_alertC
Alert the user when Claude is asking additional questions or needs clarification
| Name | Required | Description | Default |
|---|---|---|---|
| question | No | The question or clarification Claude is asking | Claude has a question |
| context | No | Brief context about what Claude needs help with | Additional information needed |
TDQS
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. While it states the tool 'alerts the user,' it doesn't specify how this alert manifests (visual notification, sound, etc.), whether it's interruptive, what permissions might be required, or any rate limits. The description is too vague about the actual behavior beyond the basic purpose.
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, efficient sentence that gets straight to the point. There's no wasted language or unnecessary elaboration. It's appropriately sized for a simple alert tool and front-loads the essential information.
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?
Given that this is an alert/notification tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the alert looks like, how it's delivered, what happens after the alert, or any error conditions. For a tool that presumably interacts with the user interface, more behavioral context is needed.
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 input schema has 100% description coverage, with both parameters ('question' and 'context') clearly documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema. According to the scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 clearly states the tool's purpose: 'Alert the user when Claude is asking additional questions or needs clarification.' This specifies the verb ('alert') and the trigger condition (Claude asking questions/needing clarification). However, it doesn't differentiate this tool from the sibling 'notify' tool, which appears to be a more general notification tool.
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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling 'notify' tool or explain why one would choose this specific alert tool over a general notification mechanism. There's no information about prerequisites, timing considerations, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_spotify_tokenB
Manually refresh the Spotify access token using the configured refresh endpoint
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the tool 'refreshes' a token, implying a write operation, but doesn't disclose side effects (e.g., invalidating old tokens), authentication needs, rate limits, or error handling. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('refresh') and key details ('manually', 'configured refresh endpoint'). There is no wasted text, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that performs a mutation (token refresh) with no annotations and no output schema, the description is inadequate. It lacks details on success/failure outcomes, token lifecycle implications, or integration with other tools, leaving the agent with insufficient context to use it effectively.
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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately avoids redundant parameter details, earning a baseline score of 4 for not adding unnecessary information beyond the schema.
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 clearly states the action ('refresh') and the resource ('Spotify access token'), specifying it's done 'manually' using the 'configured refresh endpoint'. However, it doesn't differentiate from sibling tools like 'configure_spotify_tokens', which might handle initial token setup rather than refresh operations.
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?
No explicit guidance is provided on when to use this tool versus alternatives. The description mentions 'configured refresh endpoint' but doesn't specify triggers (e.g., token expiration), prerequisites, or comparisons to other tools like 'configure_spotify_tokens' or 'show_config' for token status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_configA
Display current Suzu configuration for debugging
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It indicates this is a read operation ('Display') for debugging purposes, which suggests it's likely safe and non-destructive. However, it doesn't disclose important behavioral details like whether it shows sensitive data, requires specific permissions, or has rate limits. The description adds basic context but leaves significant behavioral questions unanswered.
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, efficient sentence that communicates the core purpose and context without any wasted words. It's appropriately sized for a simple tool and front-loads the essential information. Every word earns its place in this concise formulation.
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 zero-parameter debugging tool with no annotations and no output schema, the description provides adequate but minimal information. It states what the tool does and its debugging context, but doesn't explain what the configuration output looks like or any limitations. Given the simplicity of the tool, this is acceptable but leaves room for more complete guidance about the expected output format.
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 with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't waste space discussing non-existent parameters. A baseline of 4 is appropriate for zero-parameter tools where the schema handles the documentation burden.
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 clearly states the tool's purpose with a specific verb ('Display') and resource ('current Suzu configuration'), and specifies the context ('for debugging'). It doesn't explicitly differentiate from sibling tools, but the debugging focus provides some implicit distinction from configuration tools like configure_custom_sounds.
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 description implies usage context ('for debugging') which suggests when this tool might be appropriate, but doesn't provide explicit guidance on when to use it versus alternatives or any prerequisites. The debugging context is helpful but lacks specificity about when this is the right choice among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_completedC
Play a notification sound and show a message when a task is completed
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | The completion message to display | Task completed successfully! |
| sound_type | No | Type of notification sound to play | success |
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 states the tool plays a sound and shows a message, but doesn't cover critical aspects like whether this requires user permissions, if it's synchronous or asynchronous, potential side effects (e.g., interrupting other tasks), or error handling. For a tool with no annotations, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without any unnecessary words. It's front-loaded with the core action, making it easy to understand at a glance. Every part of the sentence earns its place by conveying essential information.
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?
Given the tool's complexity (a notification action with user interaction) and the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral traits, error cases, or what happens after the notification (e.g., does it return a status?). For a tool that could have side effects or require specific conditions, more context is needed.
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 input schema has 100% description coverage, with clear documentation for both parameters ('message' and 'sound_type'), including defaults and an enum for 'sound_type'. The description doesn't add any meaning beyond what the schema provides, such as explaining the context of the message or sound types. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
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 clearly states the tool's purpose: 'Play a notification sound and show a message when a task is completed.' It specifies the verb ('play' and 'show') and resource ('notification sound' and 'message'), making the action explicit. However, it doesn't distinguish this from sibling tools like 'notify' or 'question_alert', which might have overlapping functionality, so it doesn't reach a 5.
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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or comparisons to sibling tools such as 'notify' or 'question_alert'. This lack of context leaves the agent to guess when this specific notification method is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_soundC
Test a specific sound configuration
| Name | Required | Description | Default |
|---|---|---|---|
| sound_type | No | Type of sound to test | success |
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 mentions 'test' but doesn't explain what happens during testing—e.g., does it play the sound audibly, log results, require specific permissions, or have side effects? This leaves key behavioral traits unspecified for a tool that likely involves audio output or system interaction.
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, straightforward sentence that efficiently conveys the core purpose without unnecessary words. It's appropriately sized for a simple tool, though it could be slightly more front-loaded with key details like the sound types if needed for clarity.
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?
Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is incomplete. It doesn't cover what 'testing' involves behaviorally, what the expected outcome is, or how it relates to sibling tools. For a sound-related tool, this lack of context leaves gaps in understanding its role and effects.
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 input schema has 100% description coverage, with the parameter 'sound_type' fully documented via enum and description. The description adds no additional meaning beyond the schema, such as explaining why these sound types are relevant or how they're used in testing. Baseline 3 is appropriate since the schema does the heavy lifting.
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 'Test a specific sound configuration' clearly states the action (test) and target (sound configuration), but it's somewhat vague about what 'test' entails—does it play the sound, validate settings, or something else? It distinguishes from siblings like 'configure_custom_sounds' (setup vs. testing), but lacks specificity on the verb's meaning.
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 description provides no guidance on when to use this tool versus alternatives. For example, it doesn't clarify if this is for verifying sound settings after configuration (vs. 'configure_custom_sounds') or for general notifications (vs. 'notify' or 'question_alert'). Without any context on usage scenarios or exclusions, the agent has minimal direction.
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. Dates show when Glama detected each change.
8 tool updates
v1.0.0- First observed
configure_custom_sounds - First observed
configure_spotify_tokens - First observed
notify - First observed
question_alert - First observed
refresh_spotify_token - First observed
show_config - First observed
task_completed - First observed
test_sound
TDQS
Scored across 8 tools
Most tools have distinct purposes, but there is some potential overlap between 'notify' and 'task_completed' as both involve showing notifications with sound. The descriptions clarify that 'task_completed' is for task completion specifically, while 'notify' is general, but an agent might still confuse them in certain contexts. Other tools like configuration and token management are clearly distinct.
Tool names follow a consistent snake_case pattern throughout, which is good. However, there is a mix of verb_noun (e.g., 'configure_custom_sounds', 'refresh_spotify_token') and noun_verb (e.g., 'question_alert') structures, causing minor inconsistency. The naming is still readable and mostly predictable, with only a few deviations from a strict verb-first convention.
With 8 tools, the count is well-scoped for a notification server, covering configuration, token management, notifications, and debugging. Each tool has a clear role, such as setting up sounds, handling alerts, and testing configurations, without feeling excessive or insufficient for the domain.
The tool set covers core notification workflows, including configuration, token refresh, and various alert types. However, there are minor gaps, such as no tool for updating or deleting configurations, which might require workarounds. Overall, it supports the server's purpose well, with only a few missing operations for full lifecycle management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate AI music via the Lacuna Music API from MCP clients like Claude Desktop & Code.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Let your AI agent notify you by email, Slack, Discord, or webhook. One tool: send_notification.
Push notifications for AI agents - send instant iPhone notifications from any MCP client.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides voice notifications using Grok's text-to-speech API to alert users when Claude Code completes tasks, with support for both local and remote server configurations.1MIT
- FlicenseCqualityDmaintenanceSends system notifications when AI completes responses in MCP-compatible code editors, with cross-platform support for macOS, Windows, and Linux including customizable titles, messages, icons, and sound effects.2-
- AlicenseBqualityDmaintenancePlays sound effects (completion, newtype, and error sounds) in response to various situations like task completion, insights, or errors. Integrates with Claude Desktop to provide audio feedback for improved workflow efficiency and entertainment.2126MIT
- AlicenseAqualityDmaintenanceProvides automatic desktop notifications and contextual sounds for Claude Code operations across macOS, Windows, and Linux. It enhances the development experience by intelligently mapping specific event types to native system alerts and sounds.493MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/denar90/suzu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server