Token导航 LogoToken导航TokenDH.com
Genetec Sc MCP logo
安全风控stdio官方级别未说明来源级核验

Genetec Sc MCP

MCP Server

一个用于将AI助手与Genetec安全中心Web SDK API集成的MCP服务器,提供访问控制和安全管理功能。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
PythonClaude访问控制Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

HackThePlanetBR

提供方

HackThePlanetBR

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -e .

详细介绍

Genetec MCP服务器

![Python 3.10+](https://www.python.org/downloads/) ![MCP Compatible](https://modelcontextprotocol.io) ![License: MIT](https://opensource.org/licenses/MIT) ![Status](<>)

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-MCP

2.安装依赖项

使用紫外线(推荐):

uv sync --all-extras

使用pip:

pip install -e .

______________________________________________________________________

⚙️ 配置

1.创建环境文件

cp .env.example .env

2.配置凭据

编辑 .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.py4758 MCP工具实施
models.py524Pydantic验证模型
formatters.py437Markdown/JSON格式化程序
client.py366具有身份验证的HTTP客户端
config.py275配置和常数
总计~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_filter
  • genetec_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.

解决:

  1. 验证 GENETEC_USERNAME, GENETEC_PASSWORD,以及 GENETEC_APP_ID
  2. 确保用户具有“使用SDK登录”权限
  3. 检查SDK证书是否有效且在许可证中
  4. 验证用户名格式: username;app_id (由客户端自动完成)

无法连接到服务器

错误: Error: Cannot connect to Genetec server.

解决:

  1. 验证 GENETEC_SERVER_URL 格式: https://server:4590/WebSdk
  2. 检查Web SDK角色是否正在安全中心中运行
  3. 验证防火墙是否允许连接到端口4590
  4. 测试连接性: curl https://your-server:4590/WebSdk

权限不足

错误: Error: Access denied. You don't have permission...

解决:

  1. 在配置工具中检查用户的角色分配
  2. 验证权限是否包括所需的操作
  3. 确保用户未被锁定或禁用
  4. 查看分区分配

未找到实体

错误: Error: Entity with GUID xxx not found.

解决:

  1. 验证GUID是否正确(36个字符,格式: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
  2. 检查安全中心中是否存在实体
  3. 确保用户有权访问实体的分区
  4. 请先尝试搜索实体以获取正确的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-001

JSON -对于程序化处理:

{
  "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个字符 以防止上下文溢出。如果被截断,则会附加一条警告消息,其中包含使用过滤器或分页的指导。

______________________________________________________________________

📖 文档

项目文件

外部文件

______________________________________________________________________

🤝 贡献

欢迎投稿!特别需要帮助的领域:

  • 端点验证 -确认车门控制缺少API端点
  • 🧪 测试 -使用真实的Genetec安全中心实例进行测试
  • 📝 文档 -改进示例和用例
  • 🐛 错误报告 -报告带有详细复制步骤的问题
  • 💡 功能请求 -建议新工具或改进

如何贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 进行更改
  4. 彻底测试
  5. 以明确的信息提交(git commit -m 'feat: add amazing feature')
  6. 推送到分支(git push origin feature/amazing-feature)
  7. 打开拉取请求

开发指南

  • 遵循现有的代码风格和模式
  • 为所有函数添加类型提示
  • 编写全面的文档字符串(参见现有工具)
  • 包括错误处理 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问题

关于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社区

⬆ 返回页首

目录标签

目录标签

PythonClaude访问控制安全集成本地部署实体管理事件监控访客管理

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP