arxpot-mcp
README.md
# Arxpot MCP
Remote MCP server for the [Arxpot](https://github.com/Happyfunnysad/arxpot) processing core. It gives an MCP client music search, full track/collection metadata, download jobs, job progress, history, remote storage delivery, and downloadable audio files.
`arxpot-mcp` is intentionally a separate service. It does not reproduce FFmpeg, matching, or downloader logic: the private Go Arxpot backend remains the single processing core.
## Tools
| Tool | Purpose |
| --- | --- |
| `search_music` | Search tracks, albums, and playlists. |
| `get_track` | Get metadata for a song URL or ID. |
| `get_track_lyrics` | Get plain or synchronised song lyrics. |
| `get_collection` | Get an album, playlist, or artist's tracks. |
| `download_track` | Start an audio download job. |
| `check_download_job` / `wait_for_download` | Read processing state and errors. |
| `list_downloads` | List the finished history items. |
| `download_file` | Return a temporary downloadable MCP resource. |
| `send_to_storage` | Deliver a history item to configured remote storage. |
## Local try-out
Clone this repository next to `arxpot`, then run:
```bash
cp .env.example .env
docker compose -f docker-compose.local.yml up --build
```
The MCP endpoint is `http://127.0.0.1:3000/mcp`. Arxpot is not published to the host in this stack.
For local MCP clients, set `MCP_AUTH_TOKEN` and send `Authorization: Bearer <token>`. For a temporary no-auth test only, leave it blank and use a long secret `MCP_PATH`, such as `/mcp/<random-value>`.
## ChatGPT and Tailscale Funnel
Run `arxpot` and `arxpot-mcp` in the same Tailscale network namespace. Funnel must proxy only the MCP container on port 3000; the Go core remains private.
```bash
tailscale funnel --bg --https=443 http://127.0.0.1:3000
```
Set `PUBLIC_BASE_URL=https://<tailscale-host>.<tailnet>.ts.net`. The `download_file` tool then returns a temporary URL under `/files/…`; the MCP service proxies the private signed Arxpot link and never reveals the core address.
For a durable ChatGPT connection, use OAuth in front of `/mcp`. The optional `MCP_AUTH_TOKEN` is for local clients and API testing, not the final ChatGPT authentication flow.
## Development
```bash
npm install
npm run build
npm test
```
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing