🚀 StreamerSongList MCP Server
StreamerSongList APIとのやり取りを可能にするModel Context Protocol (MCP)サーバーです。このサーバーを使用すると、ClaudeなどのAIアシスタントが曲のリクエスト管理、キューの監視、ストリーミングプラットフォームの曲リクエストシステムとのやり取りを行うことができます。
🚀 クイックスタート
前提条件
- Node.js (バージョン18以上)
 
- Claude Desktopまたはその他のMCP互換クライアント
 
インストール
オプション1: npxを使用する (推奨)
インストールは不要です!Claude Desktopを以下のように設定するだけです。
{
  "mcpServers": {
    "streamersonglist": {
      "command": "npx",
      "args": ["streamersonglist-mcp"]
    }
  }
}
オプション2: ローカルインストール
- このリポジトリをクローンします。
git clone https://github.com/vuvuvu/streamersonglist-mcp.git
cd streamersonglist-mcp
 
- 依存関係をインストールします。
npm install
 
- サーバーをテストします。
npm test
 
Smitheryを経由したインストール
Smitheryを経由してClaude Desktop用にstreamersonglist-mcpを自動的にインストールするには、以下のコマンドを実行します。
npx -y @smithery/cli install @vuvuvu/streamersonglist-mcp --client claude
Claude Desktopでの使用方法
クイックセットアップ (npx方法)
- Claude Desktopの設定ファイルを見つけます。
- macOS: 
~/Library/Application Support/Claude/claude_desktop_config.json 
- Windows: 
%APPDATA%\Claude\claude_desktop_config.json 
 
- 設定ファイルにサーバーを追加します。
{
  "mcpServers": {
    "streamersonglist": {
      "command": "npx",
      "args": ["streamersonglist-mcp"]
    }
  }
}
 
- Claude Desktopを再起動します。
 
- テストを行います。
Claudeに "Use the getStreamerByName tool to get information about a popular streamer" と尋ねてみましょう。
 
代替方法: ローカルインストール方法
ローカルクローンから実行する場合は、以下のように設定します。
{
  "mcpServers": {
    "streamersonglist": {
      "command": "node",
      "args": ["src/server.js"],
      "cwd": "/path/to/streamersonglist-mcp"
    }
  }
}
✨ 主な機能
🎵 利用可能な11のツール
コアキュー管理
- getStreamerByName: 特定の配信者の詳細情報を取得します。
 
- getQueue: ページネーションをサポートした現在の曲キューを表示します。
 
- getQueueStats: 曲キューの包括的な統計情報(総曲数、再生時間、人気の曲など)を取得します。
 
- manageSongRequest: 曲のリクエストを作成、更新、削除します。
 
- monitorQueue: キューの変更を設定可能なポーリング間隔で監視します。
 
再生履歴と曲データベース
- getPlayHistory: フィルタリングとページネーションをサポートした再生履歴を取得します。
 
- searchSongs: 様々なフィルタを使用して曲データベースを検索します。
 
- getSongDetails: 特定の曲の詳細情報を取得します。
 
- manageSongAttributes: タグや評価などの曲の属性を追加、更新、削除します。
 
オーバーレイと分析
- getOverlayData: ストリーミングソフトウェア用のリアルタイムオーバーレイデータを取得します。
 
- getStreamStats: 包括的なストリーミング統計情報と分析データを取得します。
 
🔧 技術的な特徴
- MCPプロトコル準拠: Claude Desktop、OpenAIエージェント、その他のMCPクライアントと互換性があります。
 
- 型安全性: 包括的な入力検証機能を備えています。
 
- エラーハンドリング: 堅牢なエラーハンドリングとユーザーフレンドリーなエラーメッセージを提供します。
 
- 認証不要: 認証の複雑さを回避した簡素なセットアップが可能です。
- 更新: 他のAPIエンドポイントを追加したため、それらは認証が必要になります。(私はそれらを使用する必要がないので、どのように設定するかはあなた次第です。)それ以外の場合は404レスポンスが返されます。
 
 
📚 ドキュメント
getStreamerByName
特定の配信者の詳細情報を取得します。
パラメーター:
streamerName (文字列、必須): 配信者の名前 
例:
Use getStreamerByName with streamerName "belleune"
getQueue
ページネーションをサポートした現在の曲キューを表示します。
パラメーター:
streamerName (文字列、必須): キューを取得する配信者の名前 
limit (数値、オプション): 返す曲の最大数(デフォルト: 50) 
offset (数値、オプション): ページネーションのためにスキップする曲の数(デフォルト: 0) 
例:
Use getQueue with streamerName "belleune" and limit 10
getQueueStats
曲キューの包括的な統計情報を取得します。
パラメーター:
streamerName (文字列、必須): キューの統計情報を取得する配信者の名前 
例:
Use getQueueStats with streamerName "belleune"
manageSongRequest
曲のリクエストを作成、更新、削除します。
パラメーター:
action (文字列、必須): 実行するアクション("create", "update", "delete") 
streamerName (文字列、必須): 配信者の名前 
requestId (文字列、オプション): リクエストのID(更新/削除時に必須) 
songTitle (文字列、オプション): 曲のタイトル(作成/更新時に必須) 
artist (文字列、オプション): アーティスト名 
requesterName (文字列、オプション): リクエストを行う人の名前 
message (文字列、オプション): リクエストに付随するオプションのメッセージ 
例:
Use manageSongRequest to create a new request:
- action: "create"
- streamerName: "belleune"
- songTitle: "Bohemian Rhapsody"
- artist: "Queen"
- requesterName: "ChatUser123"
monitorQueue
キューの変更を設定可能なポーリング間隔で監視します。
パラメーター:
streamerName (文字列、必須): 監視する配信者のキューの名前 
interval (数値、オプション): ポーリング間隔(秒)(デフォルト: 30) 
duration (数値、オプション): 監視する時間(秒)(デフォルト: 300) 
例:
Use monitorQueue with streamerName "belleune", interval 60, duration 600
getPlayHistory
フィルタリングとページネーションをサポートした再生履歴を取得します。
パラメーター:
streamerName (文字列、必須): 再生履歴を取得する配信者の名前 
limit (数値、オプション): 返すエントリの最大数(デフォルト: 50) 
offset (数値、オプション): ページネーションのためにスキップするエントリの数(デフォルト: 0) 
startDate (文字列、オプション): 開始日フィルター(ISO形式) 
endDate (文字列、オプション): 終了日フィルター(ISO形式) 
例:
Use getPlayHistory with streamerName "belleune", limit 20, startDate "2024-01-01"
searchSongs
様々なフィルタを使用して曲データベースを検索します。
パラメーター:
query (文字列、オプション): 曲のタイトルまたはアーティスト名の検索クエリ 
artist (文字列、オプション): 特定のアーティストでフィルタリング 
genre (文字列、オプション): 音楽ジャンルでフィルタリング 
limit (数値、オプション): 返す結果の最大数(デフォルト: 50) 
offset (数値、オプション): スキップする結果の数(デフォルト: 0) 
例:
Use searchSongs with query "bohemian", artist "Queen", limit 10
getSongDetails
特定の曲の詳細情報を取得します。
パラメーター:
songId (文字列、必須): 曲の一意の識別子 
例:
Use getSongDetails with songId "song_12345"
getOverlayData
ストリーミングソフトウェア用のリアルタイムオーバーレイデータを取得します。
パラメーター:
streamerName (文字列、必須): 配信者の名前 
overlayType (文字列、オプション): オーバーレイデータのタイプ("current", "queue", "stats") 
例:
Use getOverlayData with streamerName "belleune", overlayType "current"
getStreamStats
包括的なストリーミング統計情報と分析データを取得します。
パラメーター:
streamerName (文字列、必須): 配信者の名前 
period (文字列、オプション): 統計情報の期間("day", "week", "month", "year") 
startDate (文字列、オプション): カスタム期間の開始日(ISO形式) 
endDate (文字列、オプション): カスタム期間の終了日(ISO形式) 
例:
Use getStreamStats with streamerName "belleune", period "week"
manageSongAttributes
タグや評価などの曲の属性を追加、更新、削除します。
パラメーター:
action (文字列、必須): 実行するアクション("add", "update", "remove") 
songId (文字列、必須): 曲の一意の識別子 
attributeType (文字列、必須): 属性のタイプ("tag", "rating", "note") 
value (文字列、オプション): 属性の値(追加/更新時に必須) 
例:
Use manageSongAttributes with action "add", songId "song_12345", attributeType "tag", value "rock"
🔧 技術詳細
プロジェクト構造
streamersonglist-mcp/
├── src/
│   └── server.js          # メインのMCPサーバー実装
├── package.json           # Node.jsの依存関係とスクリプト
├── test-server.js         # テストスクリプト
└── README.md             # このファイル
テスト
サーバーが正しく動作することを確認するには、以下のテストスクリプトを実行します。
npm test
これにより、以下のことが行われます。
- MCPサーバーが起動します。
 
- テストリクエストが送信されます。
 
- サーバーが正しいツールで応答することが確認されます。
 
手動テスト
手動でサーバーをテストすることもできます。
npm start
サーバーが起動し、標準入力からMCPプロトコルメッセージを待ちます。以下のようなテストメッセージを送信することができます。
{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
APIエンドポイント
このサーバーは、以下のStreamerSongList APIエンドポイントとやり取りします。
コアキュー管理
GET /v1/streamers/{streamerName} - 配信者の情報を取得します。 
GET /v1/streamers/{streamerName}/queue - 曲のキューを取得します。 
GET /v1/streamers/{streamerName}/queue/stats - キューの統計情報を取得します。 
POST /v1/streamers/{streamerName}/requests - 曲のリクエストを作成します。 
PUT /v1/streamers/{streamerName}/requests/{requestId} - 曲のリクエストを更新します。 
DELETE /v1/streamers/{streamerName}/requests/{requestId} - 曲のリクエストを削除します。 
再生履歴と曲データベース
GET /v1/streamers/{streamerName}/history - 再生履歴を取得します。 
GET /v1/songs/search - 曲データベースを検索します。 
GET /v1/songs/{songId} - 曲の詳細情報を取得します。 
POST /v1/songs/{songId}/attributes - 曲の属性を追加します。 
PUT /v1/songs/{songId}/attributes/{attributeId} - 曲の属性を更新します。 
DELETE /v1/songs/{songId}/attributes/{attributeId} - 曲の属性を削除します。 
オーバーレイと分析
GET /v1/streamers/{streamerName}/overlay - オーバーレイデータを取得します。 
GET /v1/streamers/{streamerName}/stats - ストリーミング統計情報を取得します。 
トラブルシューティング
一般的な問題
- 
サーバーが起動しない場合
- Node.js 18以上がインストールされていることを確認してください。
 
npm install を実行して依存関係をインストールしてください。 
- コンソールに表示されるエラーメッセージを確認してください。
 
 
- 
Claude Desktopがサーバーを認識しない場合
- 設定ファイルのパスが正しいことを確認してください。
 
cwd パスがプロジェクトディレクトリを指していることを確認してください。 
- Claude Desktopを完全に再起動してください。
 
- 設定ファイルのJSON構文エラーを確認してください。
 
 
- 
APIエラーが発生する場合
- StreamerSongList APIエンドポイントはデモ用にシミュレートされています。
 
- 実際の実装では、有効なAPI資格情報が必要になります。
 
- 実際のエンドポイントを使用する場合は、ネットワーク接続を確認してください。
 
 
ヘルプの取得
- 問題報告: GitHubでバグを報告したり、機能リクエストを行ったりすることができます。
 
- MCPドキュメント: https://modelcontextprotocol.io
 
- Claude Desktop: https://claude.ai/download
 
📄 ライセンス
このプロジェクトはMITライセンスの下で提供されています。詳細については、LICENSEファイルを参照してください。
貢献方法
- リポジトリをフォークします。
 
- 機能ブランチを作成します。
 
- 変更を加えます。
 
- 適用可能な場合はテストを追加します。
 
- プルリクエストを送信します。
 
変更履歴
v1.1.0
- 新機能: 6つの追加のStreamerSongList APIエンドポイントを追加しました。
 
- 新機能: フィルタリング機能付きの再生履歴取得機能 (
getPlayHistory) を追加しました。 
- 新機能: 曲データベース検索機能 (
searchSongs) を追加しました。 
- 新機能: 詳細な曲情報取得機能 (
getSongDetails) を追加しました。 
- 新機能: ストリーミングソフトウェア用のリアルタイムオーバーレイデータ取得機能 (
getOverlayData) を追加しました。 
- 新機能: 包括的なストリーミング分析機能 (
getStreamStats) を追加しました。 
- 新機能: 曲属性管理システム (
manageSongAttributes) を追加しました。 
- 総ツール数を5から11に拡張し、APIカバレッジを向上させました。
 
- ツールをカテゴライズしたセクションでドキュメントを改善しました。
 
- 包括的なStreamerSongList統合のためにAPIエンドポイントのカバレッジを拡張しました。
 
v1.0.0
- 最初のリリースです。
 
- 5つのコアStreamerSongListツールを実装しました。
 
- MCPプロトコル準拠です。
 
- Claude Desktopとの統合を実現しました。
 
- 包括的なエラーハンドリング機能を備えています。