指定フォルダー内のMP3ファイルを再生・停止・一覧取得できるMCPサーバーです。
- 🎵 MP3ファイルの再生・停止
- 📋 プレイリスト機能(全曲再生)
- 🎲 シャッフル再生
- 🔄 自動再生(曲が終わったら次の曲へ)
- ⏭️ 次の曲へスキップ
- ⏮️ 前の曲へ戻る
- 🔁 リピートモード(全曲リピート、1曲リピート)
pip install mcp pygame --break-system-packagesmp3_player_server.py を任意の場所に保存します。
例:~/Documents/mcp-servers/mp3_player_server.py
chmod +x ~/Documents/mcp-servers/mp3_player_server.py~/.cursor/mcp.json を編集
{
"mcpServers": {
"mp3-player": {
"command": "python3",
"args": [
"/Users/yourname/workspace/mp3_player_server/mp3_player_server/mp3_player_server.py"
],
"env": {
"MUSIC_FOLDER": "/Users/yourname/Music"
}
}
}
}設定ファイルの場所:
- Mac:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
設定例(pyenvを使用している場合):
{
"mcpServers": {
"mp3-player": {
"command": "/Users/yourname/.pyenv/versions/3.11.4/bin/python3",
"args": [
"/Users/yourname/workspace/mp3_player_server/mp3_player_server/mp3_player_server.py"
],
"env": {
"MUSIC_FOLDER": "/Users/yourname/Music"
}
}
}
}argsの部分をmp3_player_server.pyの実際のパスに変更してくださいMUSIC_FOLDERをMP3ファイルが入っているフォルダーのパスに変更してください- pyenvを使用している場合: Claude Desktopは
python3コマンドでシステムのPythonを使おうとするため、pygameがインストールされていない可能性があります。その場合は、commandにpyenvの完全なパスを指定してください(例:/Users/yourname/.pyenv/versions/3.11.4/bin/python3)- 自分のpyenv Pythonパスを確認:
which python3
- 自分のpyenv Pythonパスを確認:
設定を反映させるため、以下のいずれかを実行します:
- Cursor: Cursorを完全に終了して再起動
- Claude Desktop: アプリを完全に終了(タスクトレイからも)して再起動
Claude/Cursor と会話する際、以下のようなリクエストができます:
音楽フォルダーにあるMP3ファイルを教えて
"song.mp3" を再生して
全部の曲を再生して
全部の曲をシャッフルして再生して
音楽を停止して
今何が再生されているか教えて
次の曲にして
前の曲に戻して
順番再生モードにして
シャッフルモードにして
全曲リピートにして
1曲リピートにして
- list_mp3_files: 音楽フォルダー内の全MP3ファイルをリスト表示
- play_mp3: 指定したMP3ファイルを再生
- stop_playback: 現在の再生を停止
- get_playback_status: 再生状態を取得(プレイリスト情報含む)
- play_all: 全曲を再生(シャッフルオプション付き)
- next_track: 次の曲へスキップ
- previous_track: 前の曲へ戻る
- set_play_mode: 再生モードを設定
sequential: 順番再生shuffle: シャッフル再生repeat_all: 全曲リピートrepeat_one: 1曲リピート
曲が終わると、設定されている再生モードに従って自動的に次の曲が再生されます。
mp3_player_server/
├── mp3_player_server.py # メインサーバー(MCPプロトコル実装)
├── README.md # このファイル
└── claude_desktop_config.json # 設定ファイルの例(参考用)
- Cursor/Claude Desktop を完全に終了(タスクトレイからも)
- 設定ファイルのJSONが正しいか確認(カンマ、括弧など)
- ファイルパスが正しいか確認
- ログを確認
- Cursor: DevToolsのコンソール
- Claude Desktop:
~/Library/Logs/Claude/(Mac) /%APPDATA%\Claude\logs\(Windows)
原因: Claude Desktopが異なるPythonインタープリターを使用している
解決方法:
-
pygameがインストールされているPythonのパスを確認:
which python3 # 例: /Users/yourname/.pyenv/shims/python3 python3 -c "import sys; print(sys.executable)" # 例: /Users/yourname/.pyenv/versions/3.11.4/bin/python3
-
Claude Desktopの設定ファイルで、
commandを完全なパスに変更:"command": "/Users/yourname/.pyenv/versions/3.11.4/bin/python3"
-
Claude Desktopを再起動
- MUSIC_FOLDERのパスが正しいか確認
- フォルダー内に.mp3ファイルが存在するか確認
- ファイル名に日本語や特殊文字が含まれている場合、エンコーディングの問題が起こる可能性があります
# システムの依存関係をインストール(Ubuntu/Debianの場合)
sudo apt-get install python3-pygame
# macOSの場合
brew install sdl2 sdl2_mixerコード内の *.mp3 を他の形式にも対応させることができます:
def get_mp3_files() -> list[str]:
audio_files = []
for pattern in ["*.mp3", "*.wav", "*.ogg"]:
for file in MUSIC_FOLDER.glob(pattern):
audio_files.append(file.name)
return sorted(audio_files)def get_mp3_files() -> list[str]:
mp3_files = []
for file in MUSIC_FOLDER.rglob("*.mp3"): # rglob で再帰的に検索
mp3_files.append(str(file.relative_to(MUSIC_FOLDER)))
return sorted(mp3_files)ユーザー: 全部の曲をシャッフルして再生して
AI: 🎲 シャッフル再生を開始しました!
ユーザー: 全曲リピートモードにして
AI: 🔁 全曲リピートモードに設定しました
ユーザー: 全部の曲を再生して
AI: 🎵 再生を開始しました(曲が終わると自動で次へ)
ユーザー: かぐや姫を再生して
AI: 🎵 再生開始
ユーザー: 次の曲にして
AI: ⏭️ 次の曲にスキップしました
- 言語: Python 3.11+
- 依存関係: mcp, pygame
- 対応フォーマット: MP3
- プロトコル: MCP (Model Context Protocol)
- 通信方式: stdio (標準入出力)
- 自動再生: 非同期タスクで監視
- 日本語対応: ファイル名に日本語や絵文字を含むファイルに対応
- 対応フォーマット: 現在はMP3ファイルのみ対応(WAV、OGGなどは未対応)
- サブフォルダー: デフォルトでは指定フォルダー直下のMP3ファイルのみを検索(サブフォルダーは検索しない)
- 同時再生: 同時に複数の曲を再生することはできません
- 音量調整: 現在のバージョンでは音量調整機能はありません
- プレイリスト保存: プレイリストの保存機能はありません(セッション終了時にリセット)
- pyenvとClaude Desktop: Claude Desktopでpyenvを使用している場合、明示的なPythonパスの指定が必要(上記トラブルシューティング参照)
- 長いファイル名: 極端に長いファイル名(255文字以上)は表示が崩れる可能性があります
- 特殊な文字: 一部の特殊文字(絵文字以外)を含むファイル名で問題が発生する可能性があります
- 音量調整機能
- WAV、OGG、FLACなどの他のオーディオフォーマット対応
- プレイリストの保存・読込機能
- イコライザー機能
- 再生位置のシーク機能
MIT License