Bandmate MCP Server
An MCP (Model Context Protocol) server that provides access to the Bandmate REST API for managing songs and lists with chord notations.
Installation
Configuration
Set the following environment variables:
Variable | Description | Default |
| Base URL for the Bandmate API |
|
| Firebase auth token for authenticated endpoints | (empty) |
Usage with Claude Code
Add to your Claude Code MCP configuration (~/.claude/mcp_settings.json):
Or using npx (after publishing):
Available Tools
Song Tools
Tool | Description |
| Get songs (public or filtered by userId/ids) |
| Get a single song by ID |
| Get all songs created by a specific user |
| Get all songs in a specific list |
| Create or update a song |
| Search songs by title or tags |
List Tools
Tool | Description |
| Get lists (public or filtered by userId) |
| Get a single list by ID |
| Create or update a list (requires auth) |
Tool Parameters
get_songs
userId(optional): Filter to user's songs + public songsids(optional): Comma-separated song IDs to fetch
get_song
id(required): Song ID
get_songs_by_user
userId(required): User ID
get_songs_in_list
listId(required): List ID
upsert_song
id(optional): Song ID for updatestitle(required): Song titlechordsText(required): Chord notation and lyricsisPublic(optional): Public visibility (default: false)bpm(optional): Beats per minutekey(optional): Musical keyvoice(optional): Vocal rangetags(optional): Array of tagsspotifyUrl(optional): Spotify linkyoutubeUrl(optional): YouTube linkuserId(optional): Creator user ID
get_lists
userId(optional): Filter to user's lists + public lists
get_list
id(required): List ID
upsert_list
id(optional): List ID for updatesname(optional): List nameisPrivate(optional): Private visibility (default: false)songs(optional): Array of song IDsuserId(optional): Owner user ID
search_songs
query(required): Search termuserId(optional): Include user's private songs
Development
Deployment to Google Cloud Run
This MCP server uses SSE (Server-Sent Events) transport, making it deployable as a remote HTTP service.
Prerequisites
Install the Google Cloud CLI
Authenticate:
gcloud auth loginSet your project:
gcloud config set project YOUR_PROJECT_ID
Deploy
Using the Remote MCP Server
Once deployed, you'll get a URL like https://bandmate-mcp-xxxxx-uc.a.run.app.
Endpoints
Endpoint | Method | Description |
| GET | Service info |
| GET | Health check |
| GET | SSE connection for MCP |
| POST | Client-to-server messages |
With Claude Desktop (Remote SSE)
Add to your Claude Desktop config:
Local Docker Testing
CI/CD with GitHub Actions
The repository includes automatic deployment to Cloud Run on every push to main.
Setup
Create a GCP Service Account with the following roles:
Cloud Run Admin
Cloud Build Editor
Storage Admin
Service Account User
Create a JSON key for the service account:
gcloud iam service-accounts keys create key.json \ --iam-account=YOUR_SA@YOUR_PROJECT.iam.gserviceaccount.comAdd the secret to GitHub:
Go to your repo → Settings → Secrets and variables → Actions
Create a new secret named
GCP_SA_KEYPaste the contents of
key.json
Delete the local key file:
rm key.json
Now every push to main will automatically deploy to Cloud Run.
License
MIT