camera-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@camera-mcp今夜0時から100秒間隔で、白飛びしないように撮って"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
camera-mcp
USB接続の一眼レフ(Canon EOS 6D で開発)を MCP(Model Context Protocol)サーバーとして公開し、 AIアシスタントから自然言語で操作できるようにする試作です。
Wi-Fi API(Canon CCAPI)を持たない世代のカメラでも、Windows用フリーソフト digiCamControl(内部はCanon EDSDK)のCLIをラップすることで 「今夜0時から100秒間隔で、白飛びしないように撮って」が通ります。
これは個人の実験プロジェクトです。 メーカー非公式で、EOS 6D + Windows 環境でしか動作確認していません。
できること(MCPツール9本)
ツール | 内容 |
| 接続状態・現在のISO/絞り/シャッター速度・実行中ジョブ |
| 1枚撮影してファイルパスを返す |
| iso / aperture / shutterspeed / exposurecompensation / whitebalance の変更 |
| ライブビュー中のフォーカスモーター駆動(near/far × ステップ数) |
| タイムラプス開始(間隔・枚数・開始/終了時刻の予約。バックグラウンド実行) |
| 停止 / 進行状況(撮影枚数・エラー数・現在の露出) |
| 過去セッションの一覧 |
| 連番写真から mp4 を生成(ffmpeg) |
目玉:フィードバック式自動露出(ホーリーグレイル対応)
夜から朝にかけてのタイムラプスは、固定露出だと明け方に必ず白飛びします。
timelapse_start(auto_exposure=True) を指定すると、
撮影 → 届いた画像の平均輝度と白飛び率を測定 → 目標輝度とのズレを 1/3 段刻みで補正 → 次のコマ
というループが回ります(USB接続で撮影画像が即PCに届くことを利用)。
明るくする方向:シャッターを長く(上限まで)→ 足りなければISOを上げる
暗くする方向:ISOを下げる → その後シャッターを短く
1コマあたりの変化量を制限してチラつきを抑制
既定はオフ。完全固定露出との比較ができます
実測(8秒/ISO6400 で開始した一晩、203コマ)では、夜明けの平均輝度を最大149.4・白飛び率1.4%に抑えて 約100分で16段ぶん露出を下げ切りました。
Related MCP server: Webcam MCP
必要なもの
Windows(digiCamControl が Windows 専用のため)
Python 3.10 以上
digiCamControl(
winget install digiCamControlなど)同梱の
ffmpeg.exeを動画生成に使います
digiCamControl 対応のカメラ(USB接続。開発機は Canon EOS 6D)
Python パッケージ:
fastmcp==3.4.4/Pillow
インストール
cd C:\path\to\camera-mcp
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .動作確認(カメラ不要のオフラインテスト):
.\.venv\Scripts\python.exe test_ae.py実機での通しテスト(実際にシャッターを4回切ります):
.\.venv\Scripts\python.exe test_e2e.pyMCPサーバーとして登録する
Claude Code の場合:
claude mcp add camera --scope user -- C:\path\to\camera-mcp\.venv\Scripts\python.exe -m camera_mcp設定ファイルに直接書く場合(claude_desktop_config.json 等):
{
"mcpServers": {
"camera": {
"command": "C:\\path\\to\\camera-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "camera_mcp"],
"env": {
"CAMERA_MCP_DATA_DIR": "D:\\CameraMCP\\sessions"
}
}
}
}pip install -e . をしていない場合は、スクリプトを直接指すこともできます
(args を ["C:\\path\\to\\camera-mcp\\src\\camera_mcp\\server.py"] にする)。
登録後は「1枚撮って」「ISOを800にして」「30秒間隔で撮影開始」といった日本語で呼び出せます。
設定(環境変数)
すべて任意。既定値のままで標準構成なら動きます(src/camera_mcp/config.py)。
環境変数 | 既定値 | 用途 |
|
| digiCamControl のインストール先 |
|
| CLI本体 |
|
| GUI本体(未起動なら自動で起動する) |
|
| 動画生成に使う ffmpeg |
|
| 撮影データの保存先 |
|
| 撮影ファイルの書き込み完了待ちの上限(秒) |
保存先はクラウド同期フォルダの外にすること。 一晩で1,000枚・数GBになるため、 OneDrive等の配下に置くと同期が破綻します(digiCamControl の既定保存先は同期フォルダ配下なので要変更)。
撮影前のチェックリスト(実戦で効いたもの)
電源:一晩撮るならACアダプター推奨。バッテリー運用ならGPS・Wi-Fi・撮影後の画像表示を「切」に
オートパワーオフを「切」に
ホワイトバランスは固定(太陽光など)。オートだとコマごとに色基準が変わり、後処理の色解析が成立しない
置きピン:AFで合わせてからレンズをMFへ。
autofocus=Falseで撮影するカメラ内蔵時計を合わせる(EXIFの時刻がずれる。本実装の
log.jsonlはPC側の時刻を記録している)ae_max_shutterは撮影間隔より必ず短く(露光がインターバルを超えるとリズムが崩れる)シャッター耐久は有限(EOS 6D は約10万回)。間隔と枚数は意識して設計する
既知の制約
Windows専用・digiCamControl依存。EOS 6D 以外は未検証
digiCamControl と EOS Utility は同時にカメラを掴めない(EOS Utility は終了しておく)
セッションを閉じるとジョブも止まる:撮影ループはMCPサーバープロセス内のスレッドで動くため、 クライアント(Claude Code等)を終了するとサーバーごと落ちます。常駐デーモン化は未対応
ジョブは同時に1本だけ
測光は全画面平均(200pxサムネイル)。中央重点もROI指定も無いので、 構図内の変化(花が開く等)を明るさの変化と誤認することがあります
白飛び率は縮小画像で測定しているため、実際よりやや小さく出ます(相対比較用の指標)
露出ステップはEVではなくリストのインデックスを数えています。高感度域は刻みが粗いので、 「1コマ最大1段」の意図に対して実際は1段を超えて動くことがあります
P制御+デッドバンドのみ(ヒステリシス・積分項なし)。境界付近で明滅(ハンチング)することがあります
雲によるチラつきは撮影中には消せません。フィードバックは常に1コマ遅れなので、 外光が100秒単位で激変する状況では原理的に間に合いません。後処理(デフリッカー)で処理してください
UACダイアログや初回接続の承認など、人間の操作が必要な場面があります
先行事例
自動露出ランピング自体は新しい発想ではありません。Magic Lantern の Auto Exposure Ramping、 qDslrDashboard の Auto Holy Grail が同じ考え方を10年以上前から実装しています。 本プロジェクトの位置づけは、その制御ループをMCPツールとして公開し、自然言語で目標を渡せるようにした インターフェース層にあります。
ライセンス
MIT
Available Tools
9 toolscamera_captureA
1枚撮影して保存ファイルのフルパスを返す。autofocus=Falseで置きピン撮影。
| Name | Required | Description | Default |
|---|---|---|---|
| autofocus | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that a file is saved and the full path is returned, and explains the autofocus parameter behavior. However, it does not mention potential side effects like file overwriting, required permissions, or camera state changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core purpose and output. Every word earns its place—no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and an output schema. The description covers purpose, output, and parameter semantics. It is adequate for the tool's complexity, though it omits minor details like file naming conventions or storage location, which are not critical for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions (0% coverage), but the description adds meaningful detail: autofocus=False enables fixed-focus shooting, implying autofocus=True is the default. This fully clarifies the only parameter, which is helpful for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: take one shot and return the full path of the saved file. It uses a specific verb (capture) and resource (camera/file), and the output is explicit. This distinguishes it from sibling tools like timelapse_start or video_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for single-shot capture, but does not explicitly mention when to use it over alternatives. The sibling names give context, but the description itself lacks 'when to use' or 'instead of' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
camera_focusA
ライブビュー中にフォーカスモーターを駆動する。near=手前へ, far=奥へ。
レンズの最短撮影距離より近い被写体には合わない(物理限界)。
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | medium | |
| steps | No | ||
| direction | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a physical limitation (minimum focusing distance) and the live-view context, which adds behavioral context. However, with no annotations, it does not disclose whether the operation is reversible, if it requires specific camera states, or what side effects it might have on the camera state beyond the motor movement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using two short sentences to convey the action, parameter meaning, and a key physical limitation. Every sentence adds value, and the information is front-loaded with the main verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core behavior and one limitation, but it lacks explanations for the 'size' and 'steps' parameters and does not describe return values or error scenarios. The existence of an output schema partially compensates for the return value gap, but the overall description is not fully complete for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for parameters, so the description must compensate. It explains the 'direction' parameter (near/far) but does not explain 'size' or 'steps'. The enum values for 'size' (small/medium/large) and the purpose of 'steps' remain ambiguous, leaving the description insufficient for full parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (drive focus motor) and context (during live view), and defines the direction semantics (near/far). It easily distinguishes itself from sibling tools like camera_capture and camera_set, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for adjusting focus during live view, providing clear context for when to use it. However, it does not explicitly mention alternatives or when not to use it, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
camera_setB
カメラ設定を変更する。例: iso=800, aperture=5.6, shutterspeed=1/125, iso=Auto。
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| setting | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It does not disclose side effects, persistence of settings, error handling, or requirements (e.g., camera connection). The examples hint at value formats but provide no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with four examples. It is front-loaded and every word earns its place with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter setter with an output schema, the description is minimally adequate with examples. However, missing usage guidelines and transparency prevent it from being fully complete in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description provides concrete examples (iso=800, aperture=5.6, shutterspeed=1/125, iso=Auto) that clarify how to format the value parameter for at least some settings. It doesn't cover all enum values, but adds partial meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'カメラ設定を変更する' (changes camera settings), with examples of valid settings. It is clear what the tool does, though it doesn't explicitly differentiate from sibling tools like camera_status or camera_capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The examples imply usage but there is no explicit context about prerequisites, sequencing with camera_capture, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
camera_statusA
カメラの接続状態・現在の設定・実行中のタイムラプスジョブを返す。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation by stating it 'returns' data, but it does not explicitly confirm that no state is modified, nor does it mention potential failure modes (e.g., camera not connected) or authentication requirements. This is adequate for a simple status tool but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence in Japanese that front-loads the main action and output. It contains no fluff or repetition, and every word contributes to understanding the tool's purpose. This is an exemplary model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (zero parameters) and has an output schema, so the description need not exhaustively explain return values. It covers the key aspects: connection status, settings, and running timelapse job. However, it omits potential edge-case behavior (e.g., what happens when the camera is disconnected) but this is minor given the output schema likely handles it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema is an empty object with 100% schema coverage. The baseline for 0 parameters is 4, and the description does not need to explain any parameter semantics. The description adds no parameter-related information, which is appropriate given the absence of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns camera connection status, current settings, and the running timelapse job. It uses a specific verb ('返す' meaning 'returns') and identifies the resource (camera). However, it does not explicitly differentiate itself from sibling tools like timelapse_status, which might also return timelapse-related information, so it misses the full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. It simply states what the tool does without context, leaving the agent to infer usage from the tool's name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timelapse_listA
過去のタイムラプスセッション一覧(フォルダと枚数)を返す。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns a list with folder and count, which implies a read-only operation, but it does not explicitly state safety, side effects, or response format details such as ordering or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that states the purpose and content of the response without any extraneous information. It is front-loaded with the action and resource, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless list tool with an output schema, the description adequately covers what is returned. It lacks details like ordering or session fields, but given the simplicity and presence of an output schema, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty with 100% coverage. No parameter explanation is needed in the description, and the baseline for zero-parameter tools is 4, which is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a list of past timelapse sessions with folders and counts. The verb '返す' (returns) and specific resource '過去のタイムラプスセッション一覧' make the purpose unambiguous, and it is distinct from sibling tools like timelapse_status by focusing on historical sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for viewing historical session data but does not explicitly mention when to use this tool versus alternatives like timelapse_status or timelapse_start. There is no exclusion or reference to siblings, so usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timelapse_startA
タイムラプス撮影ジョブを開始する(バックグラウンド実行、即座に返る)。
name: セッション名(例: asagao)。保存先フォルダ名になる
interval_sec: 撮影間隔(秒)
count: 撮影枚数の上限(省略可)
start_at/end_at: "20:00" 形式。省略時は即開始・無期限(stopで終了)
autofocus: 毎回AFするか。夜間はFalse(置きピン)推奨
auto_exposure: Trueで自動露出追従(夜→朝の白飛び対策)。Falseなら完全固定露出
ae_target: 目標平均輝度(0-255)。夜のシルエット重視なら90前後、標準は115
ae_max_shutter: 自動露出が使う最長シャッター秒(インターバルより短くすること)
ae_max_iso: 自動露出が使う最大ISO
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| count | No | ||
| end_at | No | ||
| start_at | No | ||
| ae_target | No | ||
| autofocus | No | ||
| ae_max_iso | No | 1600 | |
| interval_sec | Yes | ||
| auto_exposure | No | ||
| ae_max_shutter | No | 8 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that execution is background and returns immediately, and provides operational guidance such as autofocus recommendation at night and auto-exposure behavior. It does not mention side effects like job creation or permission requirements, but covers the most relevant behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a concise opening sentence followed by a clear bullet list. Each bullet explains one parameter with relevant context, and no sentence is wasted. It is appropriately sized for a 10-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, no annotations, output schema exists), the description is remarkably complete. It covers all parameters, default behaviors, lifecycle aspects (stop to end), and practical recommendations, leaving no significant gaps for an agent to operate correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description fully compensates by explaining every parameter in detail: what values mean, examples, defaults, and recommendations (e.g., autofocus false at night, ae_target for silhouette). This is exemplary parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('タイムラプス撮影ジョブを開始する' – start a timelapse capture job) and differentiates it from sibling tools like timelapse_stop, timelapse_status, and timelapse_list. It also highlights the background execution and immediate return, further distinguishing its behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (starting a timelapse job) and explains key behaviors like immediate return and background execution. However, it does not explicitly mention when not to use it or offer alternatives, though the sibling names make this somewhat implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timelapse_statusA
タイムラプスジョブの進行状況(撮影枚数・エラー・保存先)を返す。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses that the tool 'returns' status data, implying a read-only operation, and specifies the returned content. It does not mention edge cases (e.g., no active job), but for a simple status query this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately states the tool's purpose and key return fields. Every word adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, a status query) and the presence of an output schema, the description provides sufficient context. It names the core data points returned (shot count, errors, save destination), making the tool's behavior clear without needing extensive elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is trivially 100% covered. Per the guidelines, this is a baseline 4 because there is nothing to document; the description correctly does not add unnecessary parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the progress status of a timelapse job, specifying the details (shot count, errors, save destination). This action is distinct from sibling tools like timelapse_start/stop or timelapse_list, which manage or list jobs rather than report status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: use this to check the progress of a timelapse job. However, there is no explicit statement of when to use it versus siblings, nor any exclusions or prerequisites. It lacks direct guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timelapse_stopA
実行中のタイムラプスジョブを停止し、最終状態を返す。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses the stop action and the final status return, but does not specify behavior when no job is running, whether the stop is reversible, or any side effects. This is a moderate gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence that immediately states the action and result. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema present), the description covers the essential purpose and result. It could benefit from edge-case guidance, but overall it is adequate for a stop operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters. Schema coverage is 100% (empty object). With no parameters, the description does not need to add parameter semantics; the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (stopping) and the target (currently running timelapse job), plus the result (final status). This distinguishes it from sibling tools like timelapse_start and timelapse_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (stop a running job) but does not explicitly state when to use it or mention alternatives such as timelapse_status for checking status without stopping. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_createA
セッションの連続写真からタイムラプス動画(mp4)を生成する。
session: timelapse_list が返すセッション名、またはフォルダのフルパス。
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | ||
| width | No | ||
| session | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the core behavior (generating an mp4 from session photos) but omits details such as output location, failure behavior, or side effects on source data. It adds useful context about accepting a session name or folder path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with the action front-loaded and the parameter note on its own line. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers the tool's purpose and the key session input, and the output schema handles return-value documentation. However, it lacks guidance on optional parameters (fps/width) and expected side effects, leaving some ambiguity for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the critical `session` parameter (session name from `timelapse_list` or folder path) but gives no meaning for `fps` or `width`, which have 0% schema coverage. Since the schema only supplies names/types/defaults, the description does not compensate for the majority of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('generate') and specific output ('timelapse video mp4') from 'a session's sequence of photos', which differentiates it from sibling capture/control tools. It also references `timelapse_list` for valid session names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context that `session` should be a name from `timelapse_list` or a folder path, establishing a prerequisite. However, it does not explicitly name alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools are clearly distinct, but camera_status and timelapse_status both report on a running timelapse job, which could cause some confusion. However, camera_status focuses on camera state and settings while timelapse_status is specifically about job progress, so the descriptions help differentiate them.
The naming follows a consistent pattern of domain_action (e.g., timelapse_start, camera_capture), which is predictable. The only minor inconsistency is video_create using 'video' instead of 'timelapse_' prefix, but this is a small deviation and the overall pattern remains clear.
With 9 tools, the server is well-scoped for camera control and timelapse workflows. Each tool serves a distinct and necessary function without redundancy, fitting comfortably within the ideal range.
The tool surface covers the core lifecycle: camera settings/capture/focus, timelapse start/stop/status, session listing, and video creation. Minor gaps exist, such as no ability to delete sessions or download photos directly, but these are not critical for the primary workflow and can be worked around.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
MCP server for Google Veo AI video generation
Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA minimal server for controlling Canon cameras remotely via the Canon Camera Control API, using FastMCP for streamable HTTP transport.3
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides LLM agents with direct access to webcam hardware for capturing high-resolution photos and recording video sequences. It enables autonomous agents to monitor environments and interact with the physical world through standard Model Context Protocol tools.3MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with local camera devices to capture and process images. It allows LLMs to access video devices with configurable settings such as resolution, orientation, and image format.1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for macOS that enables photo capture and video recording using the system camera via imagesnap and ffmpeg.131MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nokorishiro/camera-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server