mcpField
C
cameramcpserver

cameramcpserver

本地服务
github.com/JackGao19700媒体与设计268 周前更新

关于 cameramcpserver

面向 Windows 和 Linux 本地摄像头控制的 Node.js/TypeScript MCP 服务。提供设备枚举、拍照、录像与推流,并支持多种传输方式及并发会话。

主要功能

  1. 01枚举已连接摄像头
  2. 02拍摄并保存照片
  3. 03录像或启动视频流
  4. 04支持 stdio、HTTP 和 SSE
  5. 05支持并发录像会话
  6. 06适配 Windows dshow 和 Linux v4l2

适用场景

  1. 01让 MCP 客户端列出本地摄像头
  2. 02通过 MCP 工具拍照
  3. 03录制或推送摄像头视频
  4. 04并行运行多个摄像头录像会话

MCP 相关

向 MCP 客户端提供 listCameras、takePhoto、startVideo 和 stopVideo 工具。支持 stdio、HTTP 和 SSE 传输方式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"CameraMCPServer": {
"command": "npx",
"args": [
"-y",
"mcp-camera-service"
]
}
}
}
启动命令npx -y mcp-camera-service

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-camera-service

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

来自项目 README

MCP Camera Service

功能简介

本项目是基于 Node.js/TypeScript 的多协议摄像头控制服务,严格遵循 Model Context Protocol (MCP) TypeScript SDK,支持:

  • 摄像头枚举、拍照、录像(文件/推流)等能力
  • MCP 工具接口(listCameras、takePhoto、startVideo、stopVideo)
  • 多种传输模式:stdio、HTTP、SSE
  • 支持 Windows(dshow)和 Linux(v4l2)
  • 支持多实例并发录像、推流
  • 丰富的环境变量配置,日志可定制
  • 录像推流支持 streamUrl,客户端可用 httpx/curl/ffmpeg/ffplay 拉流

环境依赖

  • Node.js 16+
  • ffmpeg(需已安装并在 PATH 或通过 ffmpeg-static 提供)
  • 推荐 Windows 10+/Linux,需有摄像头设备

安装与启动

npm install
# 配置 .env 文件(见下文)
npm run build
npm start # 或 npm run start:http

.env 配置说明

在您的本地执行时,请将.env.sample复制为.env,然后配置为您需求的参数.

# HTTP 服务端口
PORT=3001
# MCP 服务名/版本
MCP_SERVER_NAME=mcp-camera-server
MCP_SERVER_VERSION=1.0.0
# 日志等级与文件
LOG_LEVEL=info
LOG_FILEPATH=./camera.log
# 拍照/录像文件前缀与目录
PHOTO_PREFIX=image
VIDEO_PREFIX=video
PHOTO_DIR=photos
VIDEO_DIR=videos
# 录像上下文自动清理时间(秒)
FINISHED_VIDEO_CLEAN_SPAN_SECOND=1800
# 推流URL超时时间(毫秒)
STREAM_URL_EXPIRE_MS=300000

主要 MCP 工具接口

1. listCameras - 枚举摄像头

功能说明: 列出所有可用的摄像头设备

输入参数: 无

输出参数:

  • cameras: 摄像头列表
    • cameraID: 摄像头编号
    • name: 设备名称
    • description: 设备描述
2. takePhoto - 拍照功能

功能说明: 从指定摄像头拍摄照片并保存

输入参数:

  • cameraID: 摄像头编号
  • filepath: 照片保存目录路径

输出参数:

  • success: 操作是否成功
  • imagePath: 照片保存路径(成功时返回)
  • error: 错误信息(失败时返回)
3. startVideo - 开始录像/推流

功能说明: 启动视频录制或实时推流

输入参数:

  • cameraID: 摄像头编号
  • filepath: 录像文件保存路径(可选,不传则启动推流模式)
  • duration: 录像时长(毫秒,可选)

输出参数(文件模式):

  • success: 操作是否成功
  • videoPath: 视频文件路径
  • videoID: 录像会话ID

输出参数(推流模式):

  • success: 操作是否成功
  • videoID: 录像会话ID
  • streamUrl: 推流访问地址
4. stopVideo - 停止录像/推流

功能说明: 停止正在进行的录像或推流

输入参数:

  • videoID: 录像会话ID(startVideo返回)

输出参数:

  • success: 操作是否成功
  • message: 操作结果消息
  • videoPath: 视频文件路径(文件模式时存在)
  • error: 错误信息(失败时返回)

MCP 工具接口测试方法

  • 下载本仓库后,进入仓库根目录cd myCameraNodejs

  • 使用npm link . 链接为全局命令

  • 请通过npx modelcontextprotocol/inspector启动modelcontextprotocol/inspector进行测试: img

    在界面中:

    • Transport Type: 选择STDIO
    • Command: 选择npx
    • Arguments: 输入mcp-camera-server

点击Connect按钮,即可连接到摄像头服务。 如果通过npx run start:sse启动服务,URL填入http://127.0.0.1:3001/sse(注意3001由.env中PORT指定)

视频流测试方法

1. 用 curl 保存为 ts 文件
curl http://localhost:3001/video/stream?videoID=xxxx-xxxx-xxxx -o output.ts
2. 用 ffplay 直接播放
ffplay http://localhost:3001/video/stream?videoID=xxxx-xxxx-xxxx
3. 用 ffmpeg 保存为 mp4 文件
直接转码为 mp4(推荐)
ffmpeg -i "http://localhost:3001/video/stream?videoID=xxxx-xxxx-xxxx" -c:v libx264 -preset veryfast -crf 23 -f mp4 output.mp4
只保存为 ts 文件(无需转码,最快)
ffmpeg -i "http://localhost:3001/video/stream?videoID=xxxx-xxxx-xxxx" -c copy output.ts

常见问题与排查

  • ffplay/ffmpeg 报 Invalid data found when processing input
    • 请确认服务端推流格式为 mpegts(已修正)
  • streamUrl 只能消费一次/超时失效
    • 设计如此,需重新调用 startVideo 获取新 streamUrl
  • 摄像头找不到/拍照失败
    • 请先用 listCameras 获取 cameraID,确保 ffmpeg 能识别
  • 录像文件无法播放
    • 建议用 ffmpeg/ffplay 转码或播放
  • 推流超时时间/录像上下文清理时间
    • 可通过 .env 配置 STREAM_URL_EXPIRE_MS、FINISHED_VIDEO_CLEAN_SPAN_SECOND

其它说明

  • 支持多实例并发录像/推流
  • 日志详尽,便于排查
  • 支持 Windows/Linux,自动适配 dshow/v4l2
  • 支持 MCP stdio/http/sse 多种模式

如有更多问题或需求,欢迎 issue 或联系[email protected] or [email protected]

it is certified by MCPHub. You can get it from https://mcphub.com/mcp-servers/jackgao19700/cameramcpserver.

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。