概述
轻量级 MCP服务器 这让你:
- 🔍 在MusicBrainz中搜索发布组
- 🎨 构建颜色聚类 Vibe板 来自封面艺术档案图片
- 🧠 (可选)用 LLM (OpenAI *或* 免费本地 奥拉玛)
它还提供了一个小型web UI http://localhost:8000 在那里,您可以搜索、可视化封面并生成简短的叙述。
______________________________________________________________________
特性
- MCP工具:
search,fetch,vibe_board,rag_summarize - 智能艺术品检索: 尝试释放组和释放级艺术
- 颜色分析: K-Means调色板聚类和HSV统计
- 可选RAG: 使用OpenAI或Ollama总结视觉集群
______________________________________________________________________
需求
- python 3.10+
- macOS/Linux/Windows(PowerShell)
- 互联网接入(适用于MusicBrainz+CAA)
- 可选: 奥拉玛 免费本地LLMs
______________________________________________________________________
快速开始
1.创建并激活虚拟环境
python3 -m venv .venv
source .venv/bin/activate # Windows PowerShell: .\\.venv\\Scripts\\Activate.ps12.安装依赖项
pip install -r requirements.txt3.设置环境变量
必需:MusicBrainz用户代理
export MB_USER_AGENT="covers-mcp/0.4.0 (you@example.com)"MusicBrainz需要有效的识别码 User-Agent 联系方式。可选:选择LLM后端
A.OpenAI(付费、最便宜的模型 gpt-4o-mini)
export OPENAI_API_KEY="sk-...yourkey..."
export OPENAI_MODEL="gpt-4o-mini" # optionalB.Ollama(免费,当地)
# 1. Install and start Ollama: https://ollama.com
ollama pull llama3.2
# 2. Point the server at it:
export OLLAMA_HOST="http://localhost:11434"
export OLLAMA_MODEL="llama3.2" # optional
# Do NOT set OPENAI_API_KEY at the same time4.运行服务器
python server_http.py然后打开 http://localhost:8000
尝试:
- 键入艺术家姓名(例如。 *电台司令*)
- 点击 构建Vibe板
- (可选)单击 生成Vibe叙事
______________________________________________________________________
🧪 CLI测试(可选)
搜索
curl -s -X POST http://127.0.0.1:8000/mcp \
-H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":"s1","method":"tools/call","params":{"name":"search","arguments":{"query":"Radiohead","limit":12}}}' \
| jq -r '.result.content[0].text' | jq '.results | length'Vibe板
curl -s -X POST http://127.0.0.1:8000/mcp \
-H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":"v1","method":"tools/call","params":{"name":"vibe_board","arguments":{"query":"Radiohead","limit":12,"debug":true}}}' \
| jq -r '.result.content[0].text' | jq .总结(RAG生成)
# Create a vibe board
curl -s -X POST http://127.0.0.1:8000/mcp \
-H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":"v1","method":"tools/call","params":{"name":"vibe_board","arguments":{"query":"Radiohead","limit":8}}}' \
| jq -r '.result.content[0].text' > /tmp/vibe.json
# Summarize it with the LLM
jq -r '.' /tmp/vibe.json | \
xargs -0 -I{} bash -lc '
curl -s -X POST http://127.0.0.1:8000/mcp \
-H "Content-Type: application/json" -H "Accept: application/json" \
-d "{\\"jsonrpc\\":\\"2.0\\",\\"id\\":\\"v2\\",\\"method\\":\\"tools/call\\",\\"params\\":{\\"name\\":\\"rag_summarize\\",\\"arguments\\":{\\"json\\":$(printf %q "{}"),\\"style\\":\\"poetic\\"}}}" \
| jq -r ".result.content[0].text" | jq .
'______________________________________________________________________
🧠 什么是MCP?什么是RAG?
| 概念 | 您的服务器可以做到这一点 |
|---|---|
| 主控程序 (模型上下文协议) | ✅ JSON-RPC 2.0端点 /mcp 随着 tools/list & tools/call |
| 检索(R) | ✅ 从MusicBrainz/CAA获取发行和封面数据 |
| 分析(A) | ✅ 计算颜色簇和情绪标签 |
| 世代(G) | ✅ 通过 rag_summarize (OpenAI或Ollama) |
| 全RAG管道 | ✅ 检索→ 分析→ 世代 |
______________________________________________________________________
🛠️ 故障排除
“未找到氛围组”
- 尝试另一位艺术家(披头士乐队、迈尔斯·戴维斯)
- 确保出站访问MusicBrainz/CAA
- 确认
follow_redirects=True在vibe_core.py
“LLM后端错误:429太多请求”
- 等待一分钟,然后重试(速率限制窗口)
- 减少
limit(6–8) - 对于OpenAI:使用
gpt-4o-mini或者切换到Ollama
