使用说明
Plex MCP服务器
一种模型上下文协议(MCP)服务器,提供对Plex媒体服务器功能的编程访问。此服务器将Plex的广泛媒体管理、播放和库功能作为MCP工具公开,可供AI助手和其他MCP客户端使用。
特性
- 图书馆管理:浏览库、获取媒体元数据和管理收藏
- 搜索:搜索所有库或特定部分
- 回放控制:查看活动会话并更新播放时间线
- 用户观看历史记录:跟踪用户观看模式并分析手表统计数据
- 个性化推荐:根据用户偏好构建推荐系统
- 播放列表:创建、管理播放列表并与之交互
- 内容发现:获取推荐、中心、最近添加的内容,并继续观看
- 观察状态:将项目标记为已观看/未观看,并对内容进行评分
- Docker支持:使用Docker和Portainer轻松部署
- 稳健的错误处理:全面的错误处理,带有有意义的错误消息
- 类型安全:具有严格类型检查的完整TypeScript实现
先决条件
- Node.js 18.0.0或更高版本(用于本地安装)
- OR Docker(用于容器化部署)
- 正在运行的Plex媒体服务器
- Plex身份验证令牌
安装
选项1:Docker部署(推荐)
使用Docker和Portainer进行部署,以便于管理:
看 港口_港口.md 有关Portainer部署的详细说明。
Docker Compose快速入门:
# Clone the repository
git clone https://github.com/Jamdries/plex-mcp
cd plex-mcp
# Copy environment template
cp .env.example .env
# Edit .env with your Plex credentials
nano .env
# Build and run with Docker Compose
docker-compose up -d
选项2:本地安装
- 克隆存储库:
git clone <repository-url>
cd plex-mcp-server
- 安装依赖项:
npm install
- 构建项目:
npm run build
配置
服务器可以使用环境变量或配置文件进行配置。
选项1:环境变量
创建一个 .env 项目根目录中的文件:
PLEX_SERVER_URL=https://192-168-1-100.abc123def456.plex.direct:32400
PLEX_TOKEN=your_plex_token_here
PLEX_TIMEOUT=30000
PLEX_VALIDATE_SSL=true
选项2:配置文件
创建一个 plex-config.json 文件:
{
"plexServerUrl": "https://192-168-1-100.abc123def456.plex.direct:32400",
"plexToken": "your_plex_token_here",
"timeout": 30000,
"validateSSL": true
}
获取您的Plex令牌
要获取Plex身份验证令牌,请执行以下操作:
- 登录到…… Plex Web应用程序
- 打开任何媒体项目
- 点击三点菜单→ “获取信息”
- 点击“查看XML”
- 寻找
X-Plex-Token在URL中
有关更多详细信息,请参阅 Plex官方文档.
查找您的Plex服务器URL
您的Plex服务器URL通常遵循以下模式:
https://{IP-description}.{identifier}.plex.direct:{port}
例子: https://192-168-1-100.abc123def456.plex.direct:32400
您可以在以下网址找到:
- Plex Web应用程序→ 设置→ 网络→ 服务器URL
- 或使用
http://localhost:32400如果在同一台机器上运行
用法
运行服务器
npm start
或者用于自动重新加载的开发:
npm run dev
与Claude Desktop一起使用
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"plex": {
"command": "node",
"args": ["/path/to/plex-mcp-server/dist/index.js"],
"env": {
"PLEX_SERVER_URL": "https://192-168-1-100.abc123def456.plex.direct:32400",
"PLEX_TOKEN": "your_plex_token_here"
}
}
}
}
可用工具
服务器信息
- get_server_info:获取Plex媒体服务器信息和身份
图书馆管理
- list_librarys:获取所有库部分
- get_library_items:获取库部分中的所有项目
- get_item_metadata:获取特定项目的详细元数据
搜索
- 搜索媒体:搜索所有库
- 搜索库:在特定库部分内搜索
回放和会话
- get_sessions:获取活动播放会话
- update_timeline:更新媒体项目的播放位置/状态
- 获取最近添加的内容:获取最近添加的媒体项目
继续观看
- get_on_deck:登上甲板物品(继续观看)
播放列表
- list_playlists:获取所有播放列表
- get_playlist_items:获取播放列表中的项目
- 创建播放列表:创建新的播放列表
- add_to_playlist:将项目添加到播放列表
集合
- list_collections:在图书馆部分获取馆藏
- get_collection_mitems:获取收藏中的项目
观察状态
- 标记_已修补:将项目标记为已关注(滚动)
- mark_unwatched:将某个项目标记为不受监视(不可拆卸)
评分
- 费率_项目:对媒体项目进行评分(0-10)
内容发现
- get_hubs:获取所有内容中心(推荐)
用户管理和观看历史记录
- 获取计数:获取服务器上的所有用户帐户
- get_session历史记录:使用可选过滤器(accountID、librarySectionID、ratingKey、mindate)获取完整的手表历史记录
- get_user_watch_history:获取特定用户的手表历史记录
- get_user_watch_统计数据:获取用户的详细手表统计数据和偏好(包括观看次数最多的项目、最近的历史记录和总手表数)
示例用法
一旦配置了像Claude Desktop这样的MCP客户端,您就可以使用自然语言与Plex服务器进行交互:
一般查询:
- “我的Plex库中有哪些电影?”
- “在我的Plex服务器中搜索‘The Matrix’”
- “我目前在Plex上看什么?”
- “显示最近添加的内容”
- “创建一个名为“收藏夹”的播放列表”
- “标记观看的第5集”
用户观看历史记录和建议:
- “我的Plex服务器上的所有用户都是谁?”
- “用户ID 12345一直在看什么?”
- “显示用户John观看次数最多的节目”
- “用户Jane的观看偏好是什么?”
- “根据用户Bob观看的内容推荐类似的节目”
- “获取所有用户的手表统计信息”
发展
项目结构
plex-mcp-server/
├── src/
│ ├── index.ts # Main MCP server entry point
│ ├── plex-client.ts # Plex API client wrapper
│ ├── types.ts # TypeScript type definitions
│ └── config.ts # Configuration management
├── openapi.json # OpenAPI specification (reference)
├── package.json
├── tsconfig.json
└── README.md
构建命令
npm run build-将TypeScript构建为JavaScriptnpm run watch-开发观看模式npm run dev-使用tsx在开发模式下运行npm start-运行内置服务器
错误处理
该服务器包括全面的错误处理功能,用于:
- 网络错误(超时、连接被拒绝)
- 身份验证错误(401403)
- 未发现错误(404)
- 服务器错误(500+)
- 速率限制(429)
- 无效参数
所有错误都会返回有意义的错误消息,以帮助诊断问题。
安全考虑
- 安全地存储您的Plex令牌
- 使用环境变量或安全配置文件
- 不要将令牌提交到版本控制
- 考虑在生产中使用SSL验证(
validateSSL: true) - 使用Plex的内置安全功能限制服务器访问
故障排除
无法连接到Plex服务器
- 验证服务器URL是否正确
- 检查Plex服务器是否正在运行
- 确保与服务器的网络连接
- 验证防火墙规则是否允许连接
认证失败
- 检查您的Plex令牌是否有效
- 确保令牌具有适当的权限
- 尝试从Plex Web App重新生成令牌
SSL/TLS错误
- 如果使用自签名证书,请设置
validateSSL: false - 对于生产,使用适当的SSL证书
API覆盖范围
此MCP服务器实现了最常用的Plex API端点:
- 服务器信息:身份、地位、能力
- 图书馆管理:章节、项目、元数据
- 搜索:全局和特定部门搜索
- 回放:会议、时间表更新
- 播放列表:CRUD操作
- 集合:浏览和管理收藏
- 观察状态:可拆卸/不可拆卸,额定值
- 内容发现:中心、建议
有关完整的Plex API规范,请参阅 openapi.json.
许可证
Apache 2.0
资源
贡献
欢迎投稿!请随时提交问题或拉取请求。
支持
对于问题和疑问:
- 检查 故障排除部分
- 查看 Plex API文件
- 在GitHub上打开一个问题