Hikrobot Camera MCP Server
Enables control of Hikvision industrial cameras via MCP, including enumeration, image capture, parameter adjustment, and firmware upgrade.
README
海康工业相机 MCP
这是一个基于海康 MVS SDK 的 Python MCP 服务,面向本机工业相机控制。当前版本使用 MvCameraControl,覆盖枚举、打开、关闭、采集、保存图片、常用参数读写,并已经拆分出后端、会话、服务、GenICam 特性和长任务登记层。CXP 与第一版 XoF 采集卡相机接入复用 MvCameraControl 的 GenTL 能力;独立 MVFGControl 后端仍作为后续高级采集卡能力方向。
运行环境
- MVS 安装目录:
C:\Program Files (x86)\MVS - Python 环境:conda
ai - 测试相机:
- IP:
10.22.114.138 - 型号:
MV-CL042-91GM - 序列号:
DA6216078
- IP:
- CXP 测试设备:
- 采集卡:
MV-GY1004 - 相机:
MV-CL08T5-500Y4M - 相机序列号:
202606235
- 采集卡:
首次安装:
conda run -n ai python -m pip install -e .
启动 MCP:
conda run -n ai python -m camera_mcp.server
真实相机冒烟测试:
conda run -n ai python scripts\hardware_smoke.py
CXP 相机真机冒烟测试:
conda run -n ai python scripts\cxp_hardware_smoke.py
MCP 客户端配置示例
{
"mcpServers": {
"hikrobot-camera": {
"command": "conda",
"args": ["run", "-n", "ai", "python", "-m", "camera_mcp.server"],
"cwd": "e:\\myworkstation\\05ai\\02camera_mcp"
}
}
}
工具列表
list_cameras():枚举在线相机。list_cameras(backend="cxp"):枚举 CXP 采集卡下的在线相机。list_cameras(backend="xof"):枚举 XoFLink 采集卡下的在线相机。list_frame_grabbers(interface_type="cxp"):枚举 CXP 采集卡。list_frame_grabbers(interface_type="xof"):枚举 XoFLink 采集卡。open_camera(index=0, ip=None, serial=None):打开相机,未指定时优先匹配测试相机。open_camera(backend="cxp", session_id="cxp", serial=None):打开 CXP 采集卡下的相机,建议使用独立cxp会话。open_camera(backend="xof", session_id="xof", serial=None):打开 XoFLink 采集卡下的相机,建议使用独立xof会话。close_camera():关闭相机并释放句柄。get_camera_status():查看 SDK、打开和采集状态。start_grabbing()/stop_grabbing():开始或停止采集。capture_image(format="jpg", timeout_ms=1000):采集一帧,保存到captures/,返回图片路径和元数据。get_parameter(name)/set_parameter(name, value):读写ExposureTime、Gain、AcquisitionFrameRate、Width、Height、PixelFormat。list_camera_sessions():查看当前服务内维护的相机会话。get_node(name)/set_node(name, value):基于 GenICam 节点类型动态读写节点。execute_command_node(name):执行 Command 类型节点。read_memory(address, length):按原始地址读取设备内存,返回data_hex十六进制字节串,单次最多 1 MiB。write_memory(address, data_hex):将十六进制字节串写入原始地址,成功后尝试清除 GenICam 节点缓存,单次最多 1 MiB。describe_feature(name):读取节点类型、访问模式和读写能力。export_genicam_xml():导出相机内部 GenICam XML 到diagnostics/genicam/。list_genicam_features():解析 GenICam XML 并列出能力节点。start_firmware_upgrade(firmware_path, confirm=true):异步升级已打开相机的固件,调用前必须停止采集。get_job(job_id):查询单个长任务的状态、进度和结果。list_jobs():查看固件升级等长任务的状态、进度和结果。
固件升级
固件升级通过 MVS SDK 的 MV_CC_LocalUpgrade 执行,并在后台线程中持续查询升级进度,不会阻塞 MCP 主调用。建议按以下顺序调用:
- 使用
open_camera(...)打开目标相机,并核对返回的型号和序列号。 - 如果相机正在采集,调用
stop_grabbing(...)。 - 调用
start_firmware_upgrade(firmware_path="C:\\firmware\\camera.bin", confirm=true),保存返回的job_id。 - 使用
get_job(job_id)查询进度,直到状态变为succeeded或failed。 - 升级成功后等待相机重启,再调用
list_cameras()核对版本并重新打开相机。
固件必须与相机型号和硬件版本完全匹配。升级期间不得断电、拔线或退出 MVS 驱动环境。厂商 Python 接口仅接受 ASCII 文件路径,因此固件路径不能包含中文。timeout_seconds 只限制固件发送完成后的进度等待阶段,无法安全中断正在执行的 SDK 固件传输。
架构分层
backends/:SDK 后端适配层。当前实现MvsCameraBackend,后续可增加MvFgBackend或其他厂商后端。sessions.py:相机会话管理。MCP 和未来 UI 都通过session_id访问相机。service.py:应用服务层,集中编排采图、节点读写、XML 导出和长任务登记。features.py:GenICam XML 解析层,用于分析相机能力节点。jobs.py:线程安全的长任务登记层,用于升级、抓包、诊断分析等耗时任务。server.py:MCP 适配层,只负责注册工具和转换响应。
注意事项
- MCP 响应只返回图片路径和元数据,不返回 base64 大图。
- 原始内存读写会绕过 GenICam 节点的类型、范围和访问模式检查;地址应从设备 XML 的寄存器地址定义获取,并按设备传输协议要求处理字节序。
- 当前默认使用
default会话;多会话边界已建立,但还没有做多相机并发压力测试。 - 当前 CXP 和 XoF v1 通过
MvCameraControl的 GenTL 设备类型接入,不包含采集卡高级缓存、驱动日志或独立MVFGControl绑定。 - 若同时使用普通 MVS、CXP 和 XoF 相机,建议分别使用
session_id="default"、session_id="cxp"和session_id="xof"。 - 如果启动时提示找不到
MvCameraControl.dll,请确认 MVS 运行环境已安装,且相关目录已加入系统PATH。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。