Last.fm について
Last.fm APIのデータにアクセスするMCPサーバーで、音楽リスナーやAIクライアント向けです。安定した読み取り用エンドポイントを標準で提供し、書き込みや認証ツールは設定で有効化できます。
主な機能
- 01アーティスト、アルバム、曲の情報
- 02チャート、タグ、検索
- 03ユーザープロフィールと再生履歴
- 04タグ付けとscrobblingの任意利用
- 05stdioとStreamable HTTPのトランスポート
活用シーン
- 01アーティストの関連アーティストや人気曲を調べる
- 02ユーザーの最近の再生曲やお気に入り曲を確認する
- 03チャートや音楽タグを検索する
- 04書き込みツールでscrobblingを有効にする
MCP 対応
対応するLast.fm APIメソッドを、MCPクライアントが検出できるツールとして公開します。stdioとStreamable HTTPに対応し、変更系と認証ツールは標準で無効です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e LASTFM_API_KEY -e LASTFM_API_SECRET -e LASTFM_ENABLE_WRITES ghcr.io/ndyakov/lastfm-mcp:0.2.0LASTFM_API_KEYシークレットLast.fm API key (https://www.last.fm/api/account/create)LASTFM_API_SECRETシークレットLast.fm API secret; only needed for authenticated/write methodsLASTFM_ENABLE_WRITESSet to 1 to enable scrobbling/write toolsローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/ndyakov/lastfm-mcp:0.2.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
lastfm-mcp
go-lastfm/v2 と公式 Go MCP SDKを基盤に構築された、Last.fm API 用の MCP サーバーです。
Last.fm でサポートされている機能全体を、次の方法で利用できる、検出可能な MCP ツールとして公開します。
- stdio:ローカルのデスクトップクライアントや CLI クライアント向け
- Streamable HTTP:ローカルサービスやリモート環境へのデプロイ向け
読み取り専用ツールはデフォルトで有効です。書き込み、認証ヘルパー、サポート対象外のレガシーメソッドを利用するには、明示的なオプトインが必要です。
ステータス
このプロジェクトは、リポジトリへの初回インポートに向けて準備されています。モジュールパスは github.com/ndyakov/lastfm-mcp です。リポジトリで別のオーナー名または名前を使用する場合は、最初のリリース前に変更してください。
必要条件
- Go 1.25 以降
- Last.fm API アカウント
LASTFM_API_KEY- 書き込みツールを有効にする場合のみ、
LASTFM_API_SECRETとLASTFM_SESSION_KEY
stdio で実行
export LASTFM_API_KEY="your-api-key"
go run ./cmd/lastfm-mcp
MCP クライアント設定の例:
{
"mcpServers": {
"lastfm": {
"command": "/absolute/path/to/lastfm-mcp",
"env": {
"LASTFM_API_KEY": "your-api-key"
}
}
}
}
コミットする設定ファイルには、認証情報を絶対に記載しないでください。
Streamable HTTP で実行
export LASTFM_API_KEY="your-api-key"
export LASTFM_MCP_TRANSPORT="http"
export LASTFM_MCP_HTTP_ADDR="127.0.0.1:8080"
go run ./cmd/lastfm-mcp
MCP エンドポイントは http://127.0.0.1:8080/mcp です。ヘルスチェックには GET /healthz を使用します。
LASTFM_MCP_HTTP_TOKEN が設定されていない場合、ループバック以外のアドレスへのバインドは拒否されます。設定されている場合、クライアントは次のように送信します。
Authorization: Bearer <token>
サーバーは MCP エンドポイントに Go のクロスオリジン保護を適用し、保守的な HTTP タイムアウトを設定します。TLS と本番環境向けの ID 認識型認証は、信頼できるリバースプロキシで設定してください。
設定
| 環境変数 | デフォルト | 用途 |
|---|---|---|
LASTFM_API_KEY | 必須 | Last.fm API キー |
LASTFM_API_SECRET | 空 | 署名付きメソッドまたは認証付きメソッドで必要 |
LASTFM_SESSION_KEY | 空 | 書き込みツールで必要 |
LASTFM_USER_AGENT | lastfm-mcp/<version> | Last.fm への送信時に使用するユーザーエージェント |
LASTFM_REQUEST_TIMEOUT | 30s | Last.fm リクエストのタイムアウト |
LASTFM_MCP_TRANSPORT | stdio | stdio または http |
LASTFM_MCP_HTTP_ADDR | 127.0.0.1:8080 | HTTP リッスンアドレス |
LASTFM_MCP_HTTP_PATH | /mcp | Streamable HTTP エンドポイント |
LASTFM_MCP_HTTP_TOKEN | 空 | HTTP ベアラートークン。ループバック以外のアドレスへのバインド時は必須 |
LASTFM_ENABLE_WRITES | false | 変更を加えるツールを登録 |
LASTFM_ENABLE_AUTH_TOOLS | false | 認証情報/セッション用ツールを登録 |
LASTFM_ENABLE_EXPERIMENTAL | false | Last.fm の公開インデックスにないレガシーメソッドを登録 |
トランスポート、アドレス、パス、機能ゲートには、対応するコマンドラインフラグも用意されています。詳細は lastfm-mcp -h を実行して確認してください。
ツールの対応範囲
デフォルトでは、サーバーは go-lastfm/v2 がサポートする安定した読み取り専用エンドポイントをすべて登録します。
- アルバム:情報、ユーザータグ、トップタグ、検索
- アーティスト:修正、情報、類似アーティスト、ユーザータグ、トップアルバム/トラック/タグ、検索
- チャート:トップアーティスト、トラック、タグ
- 地域:トップアーティストとトラック
- ライブラリ:アーティスト
- タグ:情報、類似タグ、トップアルバム/アーティスト/トラック/タグ、週間チャートの期間
- トラック:修正、情報、類似トラック、ユーザータグ、トップタグ、検索
- ユーザー:プロフィール、友達、お気に入り登録したトラックと最近再生したトラック、個人タグ、トップアルバム/アーティスト/トラック/タグ、週間チャートと期間
LASTFM_ENABLE_WRITES=true にすると、アルバム/アーティスト/トラックへのタグ付け、お気に入り登録/解除、再生中の曲の設定、スクロブルが追加されます。これらには API シークレットとセッションキーが必要です。
LASTFM_ENABLE_AUTH_TOOLS=true にすると、ブラウザートークン、認証 URL、セッション交換、モバイルセッション用のツールが追加されます。これらのツールはセッション認証情報を MCP クライアントやモデルに公開する可能性があります。必要な場合を除き、無効のままにしてください。MCP セッション外で認証を完了し、プロセスの起動時に LASTFM_SESSION_KEY を指定することを推奨します。
LASTFM_ENABLE_EXPERIMENTAL=true にすると、レガシーのタグ検索、メトロ、近隣ユーザー、アーティスト/トラックのトップファン、Tasteometer による比較が追加されます。Last.fm は予告なくこれらを変更または無効化する場合があります。
Docker
docker build -t lastfm-mcp .
docker run --rm -p 127.0.0.1:8080:8080 \
-e LASTFM_API_KEY \
-e LASTFM_MCP_TRANSPORT=http \
-e LASTFM_MCP_HTTP_ADDR=0.0.0.0:8080 \
-e LASTFM_MCP_HTTP_TOKEN \
lastfm-mcp
docker compose up --build は同じ HTTP 設定を使用し、環境変数から値を読み込みます。
開発
go mod tidy
go test -race ./...
go vet ./...
go-lastfm/v2 が公開されるまでは、このリポジトリと隣接する go-lastfm チェックアウトを含む一時的な Go ワークスペースを使用してください。ローカルの replace ディレクティブはコミットしないでください。
CONTRIBUTING.md、SECURITY.md、および ROADMAP.md を参照してください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。