NikonMCP
NikonMCP 是应用程序本地 MCP 服务器的 Nikon 相机模块。它向 MCP 客户端公开选定的 Nikon 相机状态和相机操作。
当 AI 助手、实验室工具、可脚本客户端或外部控制器需要检查连接的 Nikon 相机状态或请求一小组相机操作时,请使用 NikonMCP。当您需要完全手动控制、设置、图像浏览、元数据审查或工作流编辑时,请使用正常的应用程序用户界面。
开始之前
- 打开 MCP 服务器。
- 启用 NikonMCP 模块卡。
- 确认端点和承载令牌。
- 启动 MCP 服务器。
- 使用端点和令牌配置您的 MCP 客户端。
- 在客户端中,列出工具并确认 Nikon 工具出现。
客户端应使用从服务器接收到的 MCP 工具列表作为真实来源。不同的应用程序版本可能会公开不同的 NikonMCP 工具。
相机状态
nikon_camera_get_state 返回当前的 Nikon 状态快照。变更工具在可行时也会返回状态快照。
第一个 NikonMCP 相机状态字段为:
canCapture: 当应用程序当前允许无对焦拍摄请求时为真。statusMessage: 应用程序中显示的相机状态消息。canConfigureConnection: 当连接设置可以更改时为真。isConnected: 当所选的 Nikon 机身已连接时为真。isLiveViewEnabled: 当实时视图当前启用时为真。lastCapturedImagePath: 当已知时,最近保存的图像最终路径。lastCapturedImagePaths: 最近捕获的所有最终路径,当保存了多个文件时。
lastCapturedImagePath 对于捕获图像并使用单独的图像或视觉工具检查该保存文件的客户端非常有用。对于 RAW 加 JPEG 或其他多文件模式,当客户端需要每个保存的文件时,请使用 lastCapturedImagePaths。
NikonMCP 工具
nikon_hello
验证 NikonMCP 是否已启用并可访问。它不访问相机。
nikon_camera_get_state
读取当前的 Nikon 状态快照。这是连接客户端后最安全的第一次调用。在请求捕获、实时视图或对焦之前使用它,以便客户端可以查看相机是否准备就绪。
nikon_camera_toggle_connection
请求与应用程序的相机连接控制相同的连接切换行为。如果机身断开连接,应用程序开始连接。如果机身已连接,应用程序开始断开连接。
结果通常是 accepted, 因为连接和断开连接通过应用程序的相机通信路径进行,可能在 MCP 响应返回后仍在进行中。
nikon_camera_capture
请求与应用程序的拍摄按钮相同的无对焦拍摄路径。该工具在请求捕获之前立即检查 canCapture。
结果通常是 accepted, 因为捕获、传输、最终路径生成、元数据和文件保存工作可以在 MCP 响应返回后继续。稍后调用 nikon_camera_get_state 以检查更新的状态消息和最近保存的图像路径。
nikon_camera_toggle_live_view
请求切换实时视图的开或关。相机必须已连接。如果当前相机状态不支持实时视图或无法更改,则该工具将被拒绝。
nikon_camera_contrast_af
请求在启用实时视图时进行对比度自动对焦。相机必须已连接,实时视图必须开启,并且当前相机状态必须支持对比度 AF。
结果状态
NikonMCP 工具结果使用稳定的结构化结果形状:
ok: 成功或接受请求为真,拒绝或错误为假。status:ok,accepted,rejected, 或error.reasonCode: 当ok为假时的稳定代码。message: 简短的解释。state: 当前的 Nikon 状态快照(如果可用)。operation: 当后续版本添加长时间运行操作跟踪时的未来操作详细信息。
通常的状态是:
ok: 工具立即完成,例如nikon_camera_get_state或nikon_hello。accepted: 应用程序接受了相机请求并排队或开始工作。rejected: 请求已被理解,但当前相机或应用程序状态不允许。error: 发生了意外的实现或运行时故障。
预期的相机状态问题通常是 rejected, 而不是协议错误。例如,在相机未准备好时捕获应返回结构化拒绝,而不是损坏的 MCP 响应。
拒绝原因代码
常见的 NikonMCP 拒绝代码包括:
camera_not_connected: 请求的工具需要连接的相机。camera_connecting: 相机已经在连接或断开连接中。capture_unavailable: 当前不允许捕获。live_view_unavailable: 当前状态下无法切换实时视图。contrast_af_unavailable: 当前状态下无法运行对比度 AF。camera_busy: 相机或应用程序正忙。user_policy_disabled: 配置文件或模块策略阻止请求。license_unavailable: 当前许可证状态不允许请求的操作。
示例工具调用
首先列出工具:
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
获取相机状态:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"nikon_camera_get_state","arguments":{}}}
捕获图像:
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"nikon_camera_capture","arguments":{}}}
切换实时视图:
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"nikon_camera_toggle_live_view","arguments":{}}}
运行对比度 AF:
{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"nikon_camera_contrast_af","arguments":{}}}
大多数 MCP 客户端会为您创建这些 JSON-RPC 消息。在调试自定义客户端或检查请求名称时使用这些示例。
实用工作流程
- 启动启用 NikonMCP 的 MCP 服务器。
- 连接 MCP 客户端。
- 调用
nikon_camera_get_state。 - 如果
isConnected为假,请请求nikon_camera_toggle_connection。 - 等待状态报告
isConnected为真。 - 确认
canCapture为真。 - 请求
nikon_camera_capture。 - 轮询
nikon_camera_get_state直到状态和最后捕获路径更新。
对于实时视图对焦:
- 确认
isConnected为真。 - 如果实时视图关闭,请请求
nikon_camera_toggle_live_view。 - 等待直到
isLiveViewEnabled为真。 - 请求
nikon_camera_contrast_af。
NikonMCP 不做的事情
NikonMCP 不是完整应用程序用户界面的替代品。这个第一个相机界面并未公开每个相机设置、每个工作流程、实时视图图像流、图像浏览、配置文件编辑或通用应用程序导航。
MCP 控制状态和操作请求。大规模或连续的图像数据应使用应用程序功能或未来为此目的设计的侧通道。
故障排除
如果 NikonMCP 在客户端中未出现:
- 确认 MCP 服务器页面上的 NikonMCP 模块卡已启用。
- 启用模块后停止并启动 MCP 服务器。
- 重新连接或刷新客户端。
- 确认客户端已连接到正确的端点和令牌。
如果 nikon_camera_capture 被拒绝:
- 调用
nikon_camera_get_state并检查canCapture。 - 确认相机已连接。
- 确认相机未忙于录制、写入或处于其他工作流程中。
- 确认应用程序可以通过正常的拍摄按钮进行捕获。
如果连接切换被拒绝或未完成:
- 确认所选机身与物理 Nikon 相机匹配。
- 确认相机已开机并通过 USB 连接。
- 确认没有其他应用程序正在使用 Nikon 相机。
- 观察应用程序状态消息和 MCP 服务器日志。
- 如果相机无法连接,请使用正常的机身连接帮助。
如果实时视图切换被拒绝:
- 确认相机已连接。
- 确认相机型号和当前模式支持远程实时视图。
- 确认相机未忙于捕获或保存。
- 尝试从应用程序用户界面切换实时视图以确认相机状态。
如果对比度 AF 被拒绝:
- 确认实时视图已启用。
- 确认镜头和相机对焦模式支持自动对焦。
- 确认相机未处于对焦、捕获、录制或忙碌状态。
- 尝试从应用程序用户界面进行对比度 AF 以确认相机状态。
如果 lastCapturedImagePath 未更新:
- 等待捕获传输和最终保存完成。
- 确认捕获目标在您期望计算机端路径时将文件发送到计算机。
- 检查路径设置和应用程序状态消息。
- 对于多文件捕获,检查
lastCapturedImagePaths。 - 检查应用程序日志以获取捕获保存错误。
相关设置
使用 MCP 服务器进行端点、令牌和模块设置。使用机身控制进行正常的 Nikon 相机连接和捕获控制。使用实时视图进行实时视图设置和相机端实时视图行为。使用路径设置保存图像所用的最终文件夹和文件名。