Genetec MCP服务器
   
A. 模型上下文协议(MCP) 用于集成AI助手的服务器 Genetec安全中心Web SDK API.
🎯 概述
该MCP服务器使人工智能助手(如克劳德)能够直接与Genetec安全中心交互,通过自然语言提供全面的访问控制和安全管理功能。
关键能力
- 🔍 实体管理 -搜索和检索持卡人、门、摄像头和区域
- 📊 事件监控 -使用高级筛选器查询访问事件
- 👥 访客管理 -使用限时凭据创建临时访问者
- ✅ 生产就绪 -经过充分测试和记录
项目统计
- 已实施的8个工具 (80%完成-保守方法)
- ~2110行代码
- 全类型安全 经过Pydantic验证
- 双响应格式 (Markdown+JSON)
- 全面的错误处理
______________________________________________________________________
🚀 特性
第1组:核心实体管理(6个工具)✅
genetec_search_entities
按类型(持卡人、门、摄像头、区域等)搜索实体,可选择名称过滤和分页。
使用案例:
- 查找建筑物中的所有门
- 按姓名搜索持卡人
- 列出特定区域的摄像头
例子:
"Search for all doors in Building A"______________________________________________________________________
genetec_get_entity_details
通过GUID获取特定实体的全面详细信息,包括属性、关系和元数据。
使用案例:
- 检查门配置
- 检查持卡人状态
- 验证摄像头设置
例子:
"Get details for door with GUID a1b2c3d4-e5f6-7890-abcd-ef1234567890"______________________________________________________________________
genetec_list_cardholders
列出所有持卡人(具有访问凭据的人),并可选择姓名和状态(活动/非活动)过滤器。
使用案例:
- 审查所有在职员工
- 查找特定持卡人
- 审核凭据分发
例子:
"List all active cardholders"______________________________________________________________________
genetec_get_cardholder_details
获取特定持卡人的详细信息,包括凭证和访问规则。
使用案例:
- 查看人员的访问权限
- 解决访问问题
- 验证凭据状态
例子:
"Get details for cardholder John Doe"______________________________________________________________________
genetec_list_doors
列出门禁系统中的所有门,并可选择名称和区域过滤器。
使用案例:
- 清点所有接入点
- 在特定区域查找门
- 查看门状态
例子:
"List all doors on the ground floor"______________________________________________________________________
genetec_list_cameras
列出带有名称、区域和状态(在线/离线/录制)过滤器的监控摄像头。
使用案例:
- 监控摄像头健康状况
- 查找离线摄像头
- 查看摄像头覆盖范围
例子:
"Show me all offline cameras"______________________________________________________________________
第2组:访问控制操作(2个工具)✅
genetec_list_access_events
使用查询访问事件 高级筛选 (门、持卡人、事件类型、时间范围)。按逆时间顺序返回事件。
使用的API终结点: GET /report/DoorActivity
特征:
- 🔍 多种过滤器选项
- ⏰ 时间范围查询(ISO 8601)
- 📄 分页(1-500个事件)
- 📊 事件类型:授予访问、拒绝访问、全部
使用案例:
- 审计追踪调查
- 安全事件分析
- 访问模式审查
- 合规报告
例子:
"Show me all failed access attempts in the last 24 hours"______________________________________________________________________
genetec_create_visitor
创建一个 临时访客 具有时间限制的凭证和访问特定区域的权限。
使用的API终结点: POST /entity (与 NewEntity(Visitor))
特征:
- 🎫 临时证件(卡/徽章/别针)
- 📅 激活/停用日期
- 🚪 多通道区域
- 👤 可选护送要求
- ✅ 日期验证(结束>开始)
- 🔐 结束日期后自动停用
使用案例:
- 承包商出入管理
- 客人证件
- 临时员工
- 供应商访问权限
例子:
"Create a visitor badge for Jane Smith from ABC Corp, visiting tomorrow 9am-5pm,
access to Lobby and Meeting Room 1"______________________________________________________________________
⚠️ 未实现(等待端点确认)
原始计划中的以下工具是 未实现 由于Genetec Web SDK官方文档中缺少已确认的API端点:
❌ genetec_grant_door_access
- 计划: 临时授予持卡人进入门的权限
- 状态: 端点未在中确认
api-manual.md - 原因: 原计划终点(
/AccessControlManagement.svc/ExecuteAccessControl)无法验证
❌ genetec_lock_unlock_door
- 计划: 使用可选的自动重新锁定功能锁定或解锁车门
- 状态: 中未确认的端点
api-manual.md - 原因: 最初计划的终点(
/AccessControlManagement.svc/LockDoor,/UnlockDoor)无法验证
未来实施: 一旦通过以下方式确认了正确的API端点,就可以添加这些工具:
- Genetec官方文件更新
- 使用实际的Genetec安全中心实例进行测试
- Genetec技术支持确认
______________________________________________________________________
📋 先决条件
- Python 3.10或更高版本
- Genetec安全中心 已配置Web SDK角色
- 有效的SDK证书和凭据
- 具有“使用SDK登录”权限的用户帐户
______________________________________________________________________
🔧 安装
1.克隆存储库
git clone https://github.com/HackThePlanetBR/GenetecSC-MCP.git
cd GenetecSC-MCP2.安装依赖项
使用紫外线(推荐):
uv sync --all-extras使用pip:
pip install -e .______________________________________________________________________
⚙️ 配置
1.创建环境文件
cp .env.example .env2.配置凭据
编辑 .env 使用您的Genetec服务器详细信息:
# Genetec Server Configuration
GENETEC_SERVER_URL=https://your-server:4590/WebSdk
GENETEC_USERNAME=your_username
GENETEC_PASSWORD=your_password
GENETEC_APP_ID=your_sdk_application_id
# Optional Settings
GENETEC_TIMEOUT=30
GENETEC_VERIFY_SSL=true重要安全注意事项:
- 永不承诺
.env到版本控制 - 在生产环境中使用HTTPS
- 启用SSL证书验证
- 遵循用户帐户最小权限原则
- 定期轮换密码
______________________________________________________________________
🚀 运行服务器
独立模式(测试)
uv run genetec_mcp使用克劳德桌面
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\ 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"genetec": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/genetec_mcp",
"run",
"genetec_mcp"
]
}
}
}注: 替换 /ABSOLUTE/PATH/TO/genetec_mcp 你的实际路径。
验证安装
配置完Claude Desktop后,重新启动应用程序。你应该在Claude中看到Genetec工具。
______________________________________________________________________
💡 用法示例
示例1:搜索和查看实体
You: "Find all doors in Building A"
Claude: [uses genetec_search_entities]
Result: Lists 15 doors with GUIDs
You: "Get details for the Server Room door"
Claude: [uses genetec_get_entity_details]
Result: Shows door configuration, status, and associated readers示例2:安全事件调查
You: "Show me all failed access attempts in the last hour"
Claude: [uses genetec_list_access_events with filters]
Result: Lists 8 AccessRefused events with details
You: "Show me the cardholder details for the most suspicious attempts"
Claude: [uses genetec_get_cardholder_details]
Result: Shows cardholder information and access history示例3:访客管理
You: "Create a visitor pass for John Smith from Acme Corp,
visiting today 9am-5pm, needs access to Lobby and Meeting Room B"
Claude: [uses genetec_create_visitor]
Result: ✅ Visitor created, badge #V2025-1234, auto-expires at 17:00示例4:摄像头监控
You: "Which cameras are currently offline?"
Claude: [uses genetec_list_cameras with status filter]
Result: 3 cameras offline: CAM-101 (Parking Lot), CAM-205 (Hallway), CAM-312 (Server Room)
You: "Get details for CAM-312"
Claude: [uses genetec_get_entity_details]
Result: Shows camera configuration and last known status______________________________________________________________________
🏗️ 发展
项目结构
genetec_mcp/
├── pyproject.toml # Project configuration & dependencies
├── README.md # This file
├── .env.example # Environment variables template
├── FASE_1_COMPLETA.md # Phase 1: Infrastructure documentation
├── FASE_2_COMPLETA.md # Phase 2: Entity Management documentation
├── FASE_3_COMPLETA.md # Phase 3: Access Control documentation
├── CORRECTIONS_SUMMARY.md # Applied corrections documentation
└── src/
└── genetec_mcp/
├── __init__.py # Package initialization
├── __main__.py # Entry point
├── server.py # FastMCP server with 8 tools
├── config.py # Configuration and constants
├── models.py # Pydantic models (524 lines)
├── client.py # Genetec API client (366 lines)
└── formatters.py # Response formatting (437 lines)代码统计
| 文件 | 行 | 目的 |
|---|---|---|
server.py | 475 | 8 MCP工具实施 |
models.py | 524 | Pydantic验证模型 |
formatters.py | 437 | Markdown/JSON格式化程序 |
client.py | 366 | 具有身份验证的HTTP客户端 |
config.py | 275 | 配置和常数 |
| 总计 | ~2,077 | 完整的MCP服务器 |
测试
# Syntax validation
python -m py_compile src/genetec_mcp/*.py
# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run genetec_mcp
# Manual testing in Claude Desktop
# (Configure as shown above and test tools)代码质量
- ✅ 100%类型提示 -带有Python类型提示的完全类型安全
- ✅ 100%异步/等待 -所有I/O操作都是异步的
- ✅ Pydantic验证 -稳健的输入验证
- ✅ 综合文档字符串 -每个工具都有完整的文档记录
- ✅ 错误处理 -用户友好的错误消息
SdkErrorCode - ✅ 干燥原理 -无代码重复
______________________________________________________________________
⚠️ 已知限制
客户端过滤
应用了一些过滤器 之后 从API检索数据,这意味着 total 显示的计数可能无法反映Genetec安全中心可用实体的实际数量。
受影响的工具:
genetec_list_cardholders-status_filter(活动/非活动)genetec_list_doors-area_filter(按区域/地区)genetec_list_cameras-area_filter,status_filtergenetec_list_access_events-event_type,cardholder_guid
为什么会发生这种情况:
Genetec Web SDK API(/report/EntityConfiguration 和 /report/DoorActivity)本机不支持这些特定的过滤器。为了提供更好的用户体验,我们在从API接收数据后在客户端应用这些过滤器。
影响:
- 这
total显示的计数是筛选后的计数,而不是可用的总数 - 当过滤器处于活动状态时,分页可能无法按预期工作
- 可能需要多次请求才能查看所有结果
解决方法:
提出请求 没有 客户端过滤器查看完整的结果集,然后在需要时手动应用过滤。
例子:
# API returns 20 cardholders
# Only 5 are "Active" after client-side filtering
# User sees: "Showing 5 results" (doesn't see the other 15)状态: ✅ 以代码形式记录,并附有解释性注释\ 未来: 可以通过发出多个API请求或使用不同的端点进行改进
______________________________________________________________________
缺少功能
当前版本没有 不 包括:
- ❌ 直接门控 -授予访问权限,锁定/解锁(端点未确认)
- ❌ 实时事件流 -不支持WebSocket/SSE
- ❌ 复杂的报告 -仅限基本事件查询
- ❌ 实体修改 -对大多数实体只读
- ❌ 报警管理 -无报警工具
- ❌ 相机书签 -无视频书签
- ❌ 批量操作 -运营按实体进行
这些可能会在未来的版本中基于以下内容添加:
- API终点的确认
- 用户需求和反馈
- Genetec API更新
______________________________________________________________________
🔒 安全考虑
认证
- 将凭据存储在
.env文件(从不提交) - 在生产中使用环境变量
- 定期轮换密码
- 使用专用SDK用户帐户
SSL/TLS
# Production (recommended)
GENETEC_VERIFY_SSL=true
# Development/Testing only
GENETEC_VERIFY_SSL=false用户权限
SDK用户所需的最低权限:
- “使用SDK登录”
- 实体(持卡人、门、摄像头)的读取权限
- 创建访问者的写入权限(如果使用
genetec_create_visitor)
审计跟踪
写入操作包括可选操作 reason 审核日志记录参数:
genetec_create_visitor(
first_name="John",
last_name="Smith",
# ... other params ...
)
# Logged in Genetec with timestamp and user info______________________________________________________________________
🐛 故障排除
认证失败
错误: Error: Authentication failed. Please check your credentials.
解决:
- 验证
GENETEC_USERNAME,GENETEC_PASSWORD,以及GENETEC_APP_ID - 确保用户具有“使用SDK登录”权限
- 检查SDK证书是否有效且在许可证中
- 验证用户名格式:
username;app_id(由客户端自动完成)
无法连接到服务器
错误: Error: Cannot connect to Genetec server.
解决:
- 验证
GENETEC_SERVER_URL格式:https://server:4590/WebSdk - 检查Web SDK角色是否正在安全中心中运行
- 验证防火墙是否允许连接到端口4590
- 测试连接性:
curl https://your-server:4590/WebSdk
权限不足
错误: Error: Access denied. You don't have permission...
解决:
- 在配置工具中检查用户的角色分配
- 验证权限是否包括所需的操作
- 确保用户未被锁定或禁用
- 查看分区分配
未找到实体
错误: Error: Entity with GUID xxx not found.
解决:
- 验证GUID是否正确(36个字符,格式:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) - 检查安全中心中是否存在实体
- 确保用户有权访问实体的分区
- 请先尝试搜索实体以获取正确的GUID
带有SdkErrorCode的API错误
错误: Genetec API Error (SDK_ENTITY_NOT_FOUND): The specified entity does not exist
了解错误代码:
SDK_ENTITY_NOT_FOUND-实体GUID无效或不存在SDK_ACCESS_DENIED-用户缺少所需权限SDK_INVALID_PARAMETER-输入验证失败SDK_OPERATION_FAILED-一般操作失败
检查 SdkErrorCode 获取具体的故障排除指导。
______________________________________________________________________
📚 API 参考
工具命名约定
所有工具都遵循以下模式: genetec_{action}_{resource}
示例:
genetec_search_entities-搜索实体genetec_list_cardholders-列出持卡人名单genetec_create_visitor-创建访问者
响应格式
所有工具都支持双重响应格式:
Markdown(默认) -针对LLM可读性进行了优化:
# Search Results
**Total Results:** 15
**Showing:** 15 results (offset: 0)
## Entities
### 1. Main Entrance
- **GUID:** a1b2c3d4-e5f6-7890-abcd-ef1234567890
- **Type:** Door
- **Logical ID:** DOOR-001JSON -对于程序化处理:
{
"total": 15,
"count": 15,
"offset": 0,
"limit": 20,
"has_more": false,
"items": [
{
"Guid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"Name": "Main Entrance",
"EntityType": "Door",
"LogicalId": "DOOR-001"
}
]
}分页
返回列表的工具支持分页:
limit-每页结果(默认值:20-50,最大值:100-500,具体取决于工具)offset-跳过N个结果- 答复包括:
total,count,has_more,next_offset
例子:
# First page (results 0-19)
genetec_list_doors(limit=20, offset=0)
# Second page (results 20-39)
genetec_list_doors(limit=20, offset=20)字符限制
所有响应都被截断为 25000个字符 以防止上下文溢出。如果被截断,则会附加一条警告消息,其中包含使用过滤器或分页的指导。
______________________________________________________________________
📖 文档
项目文件
- 📘 FASE_1_COMPLETA.md -基础设施设置和基础实施
- 📗 FASE_2_COMPLETA.md -核心实体管理(6个工具)
- 📕 FASE_3_COMPLETA.md -访问控制操作(保守方法)
- 📙 更正_摘要.md -应用更正和改进
- 📄 genetec_mcp_实现_计划.md -原实施计划
外部文件
- Genetec开发者门户 -API官方文件
- MCP文件 -模型上下文协议规范
- 安全中心管理指南 -产品文档
- Web SDK API参考 -API参考
______________________________________________________________________
🤝 贡献
欢迎投稿!特别需要帮助的领域:
- ✨ 端点验证 -确认车门控制缺少API端点
- 🧪 测试 -使用真实的Genetec安全中心实例进行测试
- 📝 文档 -改进示例和用例
- 🐛 错误报告 -报告带有详细复制步骤的问题
- 💡 功能请求 -建议新工具或改进
如何贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 进行更改
- 彻底测试
- 以明确的信息提交(
git commit -m 'feat: add amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 打开拉取请求
开发指南
- 遵循现有的代码风格和模式
- 为所有函数添加类型提示
- 编写全面的文档字符串(参见现有工具)
- 包括错误处理
SdkErrorCode - 使用MCP检查员进行测试
- 更新文档(README、阶段文档等)
- 为复杂逻辑添加注释
提交消息格式
跟随 常规承诺:
feat: add new tool for X
fix: correct Y in Z
docs: update README with examples
refactor: improve error handling in client
test: add validation for X model______________________________________________________________________
📄 许可证
该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。
您可以自由地:
- ✅ 商业用途
- ✅ 修改
- ✅ 分发
- ✅ 私人使用
在您包含原始版权和许可声明的条件下。
______________________________________________________________________
💬 支持
关于Genetec API问题
- 电子邮件: DAP@genetec.com
- 开发者门户: developer.genetec.com
- 支持门户: support.genetec.com
关于MCP问题
- 文档: 模型上下文协议.io
- 规范: MCP规范2024-11-05
- 不一致: MCP社区
对于本项目
- 问题:
- 讨论:
- 拉取请求:
______________________________________________________________________
⭐ 致谢
构建于
- FastMCP -优雅的Python MCP框架
- Pydantic v2 -使用Python类型提示进行数据验证
- httpx -下一代HTTP客户端
特别感谢
- Anthropic -用于模型上下文协议规范和Claude
- Genetec -针对全面的Web SDK API和开发人员支持
- MCP社区 -例如,讨论和最佳实践
______________________________________________________________________
📊 项目状态
当前状态:✅ 生产就绪(保守实施)
| 组件 | 状态 | 注释 |
|---|---|---|
| 第一阶段 | ✅ 完成 | 基础设施和基础客户端 |
| 第2阶段 | ✅ 完成 | 6个实体管理工具 |
| 第三期 | 🟡 部分 | 2/4工具(保守方法) |
| 测试 | ✅ 完成 | 语法验证,手动测试 |
| 文档 | ✅ 完整 | 所有组件的综合文档 |
| 生产 | ✅ 就绪 | 稳定可靠 |
实施进度
- 已实施的工具: 8/10 (80%)
- 核心功能: 100%工作
- 文档: 100%完成
- 代码质量: ⭐⭐⭐⭐⭐
路线图
v1.0(当前)
- ✅ 核心实体管理
- ✅ 事件查询
- ✅ 访客创建
v1.1(未来)
- ⏳ 确认并实施门控端点
- ⏳ 添加批量操作支持
- ⏳ 通过双重总计改进分页
v2.0(计划中)
- 🔮 实时事件流
- 🔮 报警管理
- 🔮 高级报告
- 🔮 实体修改支持
最后更新时间: 2025年11月7日
______________________________________________________________________
由以下材料制成❤️ 面向Genetec和AI社区
