在线视频搜索与观看MCP服务maccmsv10-api-mcp

老苏之前介绍过 LibreTVMoonTV,这两者都支持标准的苹果 CMS V10 API 格式,但老苏每次想用的时候,还要先回忆端口或者域名,想不起来还要翻翻文档,实在是麻烦,所以就有了改成 MCP 的念头,毕竟 MCP 只需要设置一次,然后就可以随时使用了

什么是 maccmsv10-api-mcp ?

maccmsv10-api-mcp 是一个免费的在线视频搜索与观看 MCP 服务,底层支持苹果 CMS V10 API 格式,让你可以随时随地畅享海量免费影视内容。

  • v1 版本:直接复用了 LibreTV 的播放器,将一个视频的所有分集信息(包括每一集的名称和播放地址)序列化为 JSON 字符串,并将其作为一个完整的 URL 查询参数(episodes)传递。当剧集数量较多时(例如,超过 20 集的电视剧),这个生成的 URL 会变得极长,极易超过浏览器和 Web 服务器的默认长度限制。
  • v2 版本:
    • 将大数据量的传输从 URL 转移到了更适合的 API 请求体中,彻底解决了 URL 过长的问题,但也因此对 LibreTV 的播放器进行了改造,不能再直接复用了。
    • 增加了日志
    • 取消了 PASSWORD 环境变量
    • ……

安装

config.json

maccmsv10-api-mcp 支持苹果 CMS V10 API 格式,但本身没有带源,你可以从 LibreTVMoonTV 中获得

  • LibreTV 的源的地址: https://github.com/bestZwei/LibreTV/blob/main/js/config.js
  • MoonTV 的源的地址:https://github.com/senshinya/MoonTV/blob/main/config.json

两者有很多是重叠的,保存时一定要使用 UTF-8 格式

1
2
3
4
5
6
7
8
9
{
"mcp_base_url": "http://192.168.0.206:8000",
"sources": {
"heimuer": {
"api": "https://源地址",
"name": "源的中文名称"
}
}
}

其中

  • mcp_base_url:如果环境变量 MCP_BASE_URL 设置了,这里可以不用设置;
  • sources:在这里设置源,标准的格式为:
    • source_name:源的英文名称
    • api:源地址
    • name:源的中文名称
1
2
3
4
"source_name": {
"api": "https://json.heimuer.xyz/api.php/provide/vod",
"name": "黑木耳"
}

不建议设置太多的源,虽然做了优化,但是还是会比较慢。当然,最新版的 Cherry Studio 支持 长时间运行模式,不知道是否有助于改善 ?

源码安装

如果不想借助服务器,可以在本机安装

关于 python 环境的安装,不在本文的范围,请自行搜索学习;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 下载代码
git clone https://github.com/wbsu2003/maccmsv10-api-mcp.git

# 通过代理
git clone https://gh-proxy.com/github.com/wbsu2003/maccmsv10-api-mcp.git

# 进入目录
cd maccmsv10-api-mcp

# 安装依赖
pip install -r requirements.txt

# 运行服务
python main.py

# 或者
uvicorn main:app --reload --host 0.0.0.0

docker 安装

在群晖上以 Docker 方式安装。

在注册表中搜索 wbsu2003 ,下拉找到 wbsu2003/maccmsv10-api-mcp,版本选择 latest

docker 文件夹中,创建一个新文件夹 maccmsv10,并创建一个子目录 logs,将 config.json 放入根目录

文件夹 装载路径 说明
docker/maccmsv10/config.json /app/config.json 挂载源文件,可以是只读
docker/maccmsv10/logs /app/logs 挂载日志目录,v2 新增

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8350 8000

环境

可变
MCP_BASE_URL MCP 服务的访问地址,设为 http://群晖IP:8350

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 新建文件夹 maccmsv10 和 子目录
mkdir -p /volume1/docker/maccmsv10

# 进入 maccmsv10 目录
cd /volume1/docker/maccmsv10

# 将 config.json 放入根目录

# 运行容器
docker run -d \
--restart unless-stopped \
--name maccmsv10-api-mcp \
-p 8350:8000 \
-v $(pwd)/config.json:/app/config.json:ro \
-v $(pwd)/logs:/app/logs \
-e MCP_BASE_URL=http://192.168.0.197:8350 \
wbsu2003/maccmsv10-api-mcp:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

services:
maccmsv10-api-mcp:
image: wbsu2003/maccmsv10-api-mcp:latest
container_name: maccmsv10-api-mcp
restart: unless-stopped
ports:
- "8350:8000"
volumes:
- ./config.json:/app/config.json:ro
- ./logs:/app/logs
environment:
MCP_BASE_URL: http://192.168.0.197:8350

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 maccmsv10 和 子目录
mkdir -p /volume1/docker/maccmsv10/logs

# 进入 maccmsv10 目录
cd /volume1/docker/maccmsv10

# 将 docker-compose.yml 和 config.json放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8350 就能看到运行信息界面

Cherry Studio

MCP 服务需要在客户端中使用,还是以老苏最常用的 Cherry Studio 为例

  • 名称:用于识别不同的 MCP服务;
  • 类型:选择 SSE 协议;
  • URL:填入 http://群晖IP:8350/mcp

如果设置和服务没问题的话,是可以看到工具的

提示词

一种是简单的,例如 采用 markdown 表格方式展示,这种可能显示会比较随机

每次的展示可能都会不同,看大模型的心情了

老苏推荐使用相对复杂的提示词,来对显示格式进行固定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 约束
采用 markdown 表格方式展示

## search_movie
search_movie 返回值遵循的 markdown 模版
| 来源名称 | 影片标题 | video_id | 海报 | 影片分类 | 简介 |
|---|---|---|---|---|---|
| {source_name} | {title} | {video_id} | ![海报]({poster_url}) | {category} | {content} |

## get_playback_info
get_playback_info 返回值遵循的 markdown 模版
| 来源名称 | 名称 | 网页播放 |
|---|---|---|

## test_all_sources_debug_sources_get
总视频源数量:
正常工作视频源:
成功率:
test_all_sources_debug_sources_get 返回值遵循的 markdown 模版
| 来源名称 | 状态 | 响应时间 | URL |
|---|---|---|---|

查询

例如: 找 我是刑警,会调用 search_movie 工具

播放

选中要播放的前三列,复制

粘贴到输入栏加上 播放,最后组成了 播放 黑木耳 我是刑警 44314,也就是要包含视频源,片名和视频 id

正常应该直接调用 get_playback_info

但有时候也会再次调用 search_movie

直接点网页播放的地址就可以

诊断

还有一个接口,主要用于对视频有效性进行诊断

感谢

本项目是基于 LibreTV 播放器的二次开发,感谢 LibreTV 项目。

如果要自己使用 AI 编程来实现这个功能,老苏做不到,因为老苏并不是程序员。在这个项目中,老苏并没有编写任何代码,只负责需求定义和测试工作。

Claude CodeAI 编程工具,对非程序员来说的意义在于,终于可以不用依赖他人,能够在已有项目的基础上,定制一些满足自己需要的功能

参考文档

magicblack/maccms10: 苹果cms官网,苹果cmsv10,maccmsv10,麦克cms,开源cms,内容管理系统,视频分享程序,分集剧情程序,网址导航程序,文章程序,漫画程序,图片程序
地址:https://github.com/magicblack/maccms10

苹果CMS内容管理系统 - 苹果CMS手册 - 苹果CMS教程 - 苹果CMS帮助 - 苹果CMS常见问题
地址:https://www.maccms.la/

LibreSpark/LibreTV: 一分钟搭建影视站,支持Vercel/Docker等部署方式
地址:https://github.com/LibreSpark/LibreTV