cameramcpserver について
Windows と Linux のローカルカメラを操作する Node.js/TypeScript 製 MCP サーバーです。カメラの検出、写真撮影、録画、ストリーミングに対応し、複数の通信方式と並行セッションを扱います。
主な機能
- 01接続カメラの列挙
- 02写真の撮影と保存
- 03動画の録画または配信
- 04stdio、HTTP、SSE に対応
- 05録画セッションの並行実行
- 06Windows dshow と Linux v4l2 に対応
活用シーン
- 01MCP クライアントからローカルカメラを一覧表示
- 02MCP ツール経由で写真を撮影
- 03カメラ映像の録画または配信
- 04複数カメラの録画セッションを並行実行
MCP 対応
MCP クライアントに listCameras、takePhoto、startVideo、stopVideo ツールを提供します。stdio、HTTP、SSE の通信方式に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP カメラサービス
機能概要
本プロジェクトは、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 を起動し、テストしてください:
画面上で:
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 を一度しか利用できない/タイムアウト後に無効になる
- 仕様です。新しい streamUrl を取得するには、startVideo を再度呼び出してください
- カメラが見つからない/写真を撮影できない
- まず 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] または [email protected] までお問い合わせください。
MCPHub の認定を受けています。https://mcphub.com/mcp-servers/jackgao19700/cameramcpserver から入手できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。