ARR-MCP
ARR-MCP是一个标准的MCP(模型控制协议)服务器,旨在与ARR栈(Sonarr、Radarr、Prowlarr)集成。
概述
此MCP服务器在MCP兼容客户端和ARR堆栈中流行的媒体管理工具之间提供了桥梁。它实现了标准的MCP协议,使任何MCP客户端都可以通过标准化的接口与这些工具进行交互。
特性
- 灵活的MCP服务器:实现标准MCP协议,允许任何兼容的客户端连接
- ARR堆栈集成:
- 索纳尔:搜索和管理电视节目 - 拉达尔:搜索和管理电影 - 浏览器:跨索引器搜索并管理索引器
- 可扩展架构:轻松添加新工具和处理程序
安装
- 克隆存储库:
git clone https://github.com/yourusername/arr-mcp.git
cd arr-mcp- 构建服务器:
go build -o arr-mcp ./cmd/server用法
运行服务器
./arr-mcp默认情况下,服务器运行在 localhost:8080。您可以使用命令行标志进行配置:
./arr-mcp --port 9000 --host 0.0.0.0环境变量
使用环境变量配置与各种服务的连接:
export SONARR_URL="http://localhost:8989"
export SONARR_API_KEY="your-sonarr-api-key"
export RADARR_URL="http://localhost:7878"
export RADARR_API_KEY="your-radarr-api-key"
export PROWLARR_URL="http://localhost:9696"
export PROWLARR_API_KEY="your-prowlarr-api-key"命令行选项
--port:服务器端口(默认值:8080)--host:要绑定的主机(默认值:localhost)--log-level:日志记录级别(默认值:info)--sonarr-url:Sonarr API URL--sonarr-api-key:Sonarr API键--radarr-url:Radarr API URL--radarr-api-key:Radarr API密钥--prowlarr-url:项目API URL--prowlarr-api-key:Prowlarr API密钥
配置MCP客户端以使用此服务器
要将此MCP服务器与任何兼容MCP的客户端一起使用,请将客户端配置为连接到:
http://localhost:8080服务器实现了兼容客户端所需的标准MCP协议端点。
可用端点
- GET/健康:健康检查端点
- POST/v1/运行:用于执行工具的MCP运行端点
- GET/v1/工具:列出可用工具
可用工具
根据您的配置,将提供以下工具:
- 声纳搜索:在Sonarr中搜索电视节目
- 声纳列表:列出Sonarr的电视节目
- 雷达搜索:在Radarr搜索电影
- 雷达列表:列出Radarr中的电影
- ProwlarrSearch:使用Prowlarr索引器搜索内容
- 检查索引器:列出Prowlarr索引器
工具使用示例
声纳搜索
{
"tool_name": "SonarrSearch",
"input": {
"query": "Breaking Bad"
}
}雷达搜索
{
"tool_name": "RadarrSearch",
"input": {
"query": "Inception"
}
}ProwlarrSearch
{
"tool_name": "ProwlarrSearch",
"input": {
"query": "ubuntu 22.04",
"categories": [5030, 5040]
}
}发展
项目结构
cmd/server/:包含主要应用程序入口点pkg/api/:MCP协议定义和接口pkg/arr/:ARR堆栈集成(Sonarr、Radarr、Prowlarr)pkg/server/:MCP服务器实现
添加新工具
要向服务器添加新工具,请执行以下操作:
- 创建一个实现
api.Handler接口 - 在中注册工具和处理程序
setupServer功能在main.go
例子:
// Create a new handler
type MyNewHandler struct {
// Dependencies here
}
// Implement the HandleRequest method
func (h *MyNewHandler) HandleRequest(req api.MCPRequest) (interface{}, error) {
// Handle the request
return result, nil
}
// In setupServer function
mcpServer.RegisterTool(
api.ToolDefinition{
Name: "MyNewTool",
Description: "Description of my new tool",
Parameters: map[string]interface{}{
"param1": map[string]interface{}{
"type": "string",
"description": "Description of parameter",
},
},
},
&MyNewHandler{},
)从源头构建
go mod tidy
go build -o arr-mcp ./cmd/server