Token导航 LogoToken导航TokenDH.com
Een API MCP logo
音视频stdio官方级别未说明来源级核验

Een API MCP

MCP Server

playwright

Eagle Eye Networks摄像头系统的模型上下文协议(MCP)服务器,支持AI助手与EEN摄像头交互,查看实时/历史图像,查询事件,管理布局等功能。

工具数

18

提示词数

0

GitHub Stars

0

资源数

0
TypeScriptClaude语音音频Claude DesktopClaude

安装说明

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

作者 / 组织

klaushofrichter

提供方

klaushofrichter

最后核验

2026/5/17 20:21

运行时

Node.js

快速接入

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

命令预览

npx playwright install chromium

详细介绍

一个MCP服务器

Eagle Eye Networks相机系统的模型上下文协议(MCP)服务器。该服务器使Claude和Gemini等AI助手能够与EEN摄像头交互,查看实时/记录的图像,查询事件,管理布局等。

特性

  • 相机管理:列出摄像头,查看摄像头详细信息,按状态过滤
  • 实时和录制的图像:获取当前快照或历史录像
  • 布局管理:查看和查询相机布局(预定义网格视图)
  • 事件查询:查询运动事件、分析事件和60多种事件类型
  • 用户管理:查看用户和当前用户配置文件
  • 警报访问:查询触发的警报和通知
  • 桥梁信息:查看网桥设备及其连接状态
  • 多账户支持:在多个EEN帐户之间进行配置和切换
  • 自动选择单个帐户:当只配置一个帐户时,会自动为API调用选择该帐户
  • 自动令牌刷新:令牌在到期前会自动刷新

先决条件

  • Node.js 18.0或更高版本
  • 鹰眼网络帐户
  • 来自EEN开发者门户的OAuth客户端凭据(客户端ID和密钥)

安装

# Clone the repository
git clone https://github.com/klaushofrichter/een-api-mcp.git
cd een-api-mcp

# Install dependencies
npm install

# Install Playwright browsers (required for OAuth authentication)
npx playwright install chromium

# Build the project
npm run build

认证

MCP服务器在使用前需要进行预身份验证。身份验证是通过CLI工具处理的,该工具通过无头浏览器执行OAuth登录。

设置环境变量

创建 .env 使用OAuth客户端凭据在项目根目录中创建文件:

EEN_CLIENT_ID=your-client-id
EEN_CLIENT_SECRET=your-client-secret

您可以从以下网址获取这些凭据 鹰眼网络开发者门户.

登录进程

身份验证CLI使用Playwright自动化OAuth登录流程:

# Basic login (will prompt for password if not provided)
npm run auth login -- --username user@example.com

# Login with password on command line
npm run auth login -- --username user@example.com --password "your-password"

# Login and store password for automatic re-authentication
npm run auth login -- \
  --username user@example.com \
  --password "your-password" \
  --persistPassword

# Provide OAuth credentials explicitly (overrides .env)
npm run auth login -- \
  --username user@example.com \
  --password "your-password" \
  --client-id your-client-id \
  --client-secret your-client-secret \
  --persistPassword

重要标志:

  • --persistPassword:在本地加密并存储密码,以便在令牌过期时自动重新验证
  • --client-id / --client-secret:覆盖OAuth凭据的环境变量

验证身份验证

# List all configured accounts
npm run auth list

# Show detailed status including token expiration
npm run auth status

状态输出示例:

Account: user@example.com
  User: John Doe
  Base URL: https://api.c001.eagleeyenetworks.com:443
  Token Valid: true
  Expires: 2026-01-28T22:48:44.000Z
  Password Stored: true

管理多个帐户

您可以配置多个EEN帐户并在它们之间切换:

# Login to additional accounts
npm run auth login -- --username another@example.com --persistPassword

# List all accounts
npm run auth list

# Revoke and remove an account
npm run auth revoke -- --account user@example.com

帐户自动选择

MCP服务器包括自动帐户选择,以提高与AI助手的兼容性:

  • 单一账户:当只配置一个帐户时,会自动为API调用选择该帐户,而无需 een_set_account 先被叫
  • 多个帐户:配置多个帐户时,必须使用以下命令明确选择一个 een_set_account 在进行API调用之前

当使用可能并不总是调用的AI助手时,此功能提高了鲁棒性 een_set_account 在发出API请求之前。

凭据存储

凭据被安全地存储:

  • 位置: ~/.een-mcp/credentials.json
  • 权限:文件是使用创建的 0600 (仅限所有者读/写)
  • 密码加密:密码使用AES-256-GCM和机器特定密钥进行加密
  • 许可证管理:访问令牌在到期前5分钟自动刷新

配置Claude

MCP服务器可以与Claude Desktop或Claude Code一起使用。

Claude桌面配置

将MCP服务器添加到Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

使用内置版本(建议用于生产):

{
  "mcpServers": {
    "een-mcp-server": {
      "command": "node",
      "args": ["/absolute/path/to/een-api-mcp/dist/src/index.js"],
      "env": {
        "EEN_CLIENT_ID": "your-client-id",
        "EEN_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

直接使用TypeScript(用于开发):

{
  "mcpServers": {
    "een-mcp-server": {
      "command": "npx",
      "args": ["tsx", "/absolute/path/to/een-api-mcp/src/index.ts"],
      "env": {
        "EEN_CLIENT_ID": "your-client-id",
        "EEN_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

更新配置后,重新启动Claude Desktop。

Claude代码配置

对于Claude Code,将MCP服务器添加到您的设置文件中:

全局设置: ~/.claude/settings.json 项目设置: .mcp.json 在项目根中

{
  "mcpServers": {
    "een-mcp-server": {
      "command": "node",
      "args": ["/absolute/path/to/een-api-mcp/dist/src/index.js"]
    }
  }
}

提供了一个模板配置文件: mcp-config-template.json

验证连接

配置后,您可以通过询问Claude来验证MCP服务器是否已连接:

“我配置了哪些EEN帐户?”

克劳德应该使用 een_list_accounts 工具并返回您配置的帐户。

配置Gemini CLI

MCP服务器也可以与 谷歌Gemini CLI.

Gemini CLI配置

将MCP服务器添加到Gemini CLI设置文件中:

全局设置: ~/.gemini/settings.json

{
  "mcpServers": {
    "een-mcp-server": {
      "command": "node",
      "args": ["/absolute/path/to/een-api-mcp/dist/src/index.js"],
      "env": {
        "EEN_CLIENT_ID": "your-client-id",
        "EEN_CLIENT_SECRET": "your-client-secret"
      },
      "timeout": 60000
    }
  }
}

可选参数:

  • timeout:请求超时(毫秒)(默认值:600000)
  • trust:设置为 true 绕过工具确认(谨慎使用)
  • cwd:服务器进程的工作目录

与npx一起使用(替代)

您也可以直接通过npx运行服务器,而无需本地安装:

{
  "mcpServers": {
    "een-mcp-server": {
      "command": "npx",
      "args": ["tsx", "/absolute/path/to/een-api-mcp/src/index.ts"],
      "env": {
        "EEN_CLIENT_ID": "your-client-id",
        "EEN_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

验证连接

配置后,通过询问Gemini来验证MCP服务器是否已连接:

“我配置了哪些EEN帐户?”

双子座应该使用 een_list_accounts 工具并返回您配置的帐户。

可用工具

身份验证工具(3)

工具说明
een_auth_status检查所有已配置帐户的身份验证状态
een_list_accounts列出所有已配置的帐户ID
een_set_account为后续API调用设置活动帐户

相机工具(2)

工具说明
een_get_cameras列出具有分页、按状态过滤和名称搜索功能的摄像头
een_get_camera获取特定相机的详细信息

媒体工具(3)

工具说明
een_get_live_image从相机获取当前实时快照(返回base64 JPEG)
een_get_recorded_image获取特定时间戳的历史图像
een_list_media列出记录间隔(有可用记录的时间段)

事件工具(2)

工具说明
een_get_events使用参与者、类型和时间范围过滤器查询事件
een_get_event_types列出所有60+可用事件类型

用户工具(3)

工具说明
een_get_current_user获取经过身份验证的用户的个人资料
een_get_users列出帐户中的所有用户
een_get_user获取特定用户的详细信息

警报工具(1)

工具说明
een_get_alerts使用时间、参与者和类型过滤器列出触发的警报

桥接工具(2)

工具说明
een_get_bridges列出具有可选状态过滤的网桥设备
een_get_bridge获取特定桥梁的详细信息

布局工具(2)

工具说明
een_get_layouts列出相机布局(预定义网格视图)
een_get_layout获取布局详细信息,包括相机窗格和显示设置

用法示例

配置后,您可以通过自然语言与EEN摄像头进行交互:

身份验证:

  • “我配置了哪些EEN帐户?”
  • “显示我的身份验证状态”

摄像头:

  • “列出我的所有相机”
  • “显示所有在线摄像头”
  • “哪些摄像头当前处于离线状态?”
  • “我有多少台相机?”

实时图像:

  • “从前门摄像头拍摄快照”
  • “显示摄像头1005963a的实时图像”

录制视频:

  • “给我看昨天下午3点大厅摄像头的录像”
  • “获取一小时前的录制图像”

活动:

  • “我可以查询哪些类型的事件?”
  • “在过去的一个小时里,第一台摄像机上有任何动态事件吗?”

警报:

  • “显示最近的提醒”
  • “今天触发了哪些警报?”

桥梁:

  • “列出我的所有桥梁”
  • “我的任何桥梁都离线了吗?”

用户:

  • “我以谁的身份登录?”
  • 列出我的EEN帐户中的所有用户

布局:

  • “列出我的所有相机布局”
  • “给我看看Klaus布局的细节”
  • “我的布局中有哪些摄像头?”

组合查询:

  • “给我所有相机、网桥和布局的状态概述”

测试

集成测试

该项目包括针对实时EEN API运行的全面集成测试。这些测试需要一个已配置并经过身份验证的帐户。

# Run all integration tests
npm test

# Run specific test file
npx vitest run test/integration/tools.test.ts

# Run tests for a specific category
npx vitest run test/integration/tools.test.ts -t "Camera"
npx vitest run test/integration/tools.test.ts -t "Layout"
npx vitest run test/integration/tools.test.ts -t "Event"

测试套件包括:

  • 身份验证工具:帐户列表、状态检查、帐户切换
  • 摄影机工具:列出摄像头,按状态过滤,获取摄像头详细信息
  • 媒体工具:实时快照、录制的图像、录制间隔
  • 事件工具:事件类型列表、运动事件查询
  • 警报工具:警报列表和筛选
  • 桥接工具:桥梁列表和详细信息
  • 布局工具:布局列表、筛选和详细信息
  • 错误处理:参数无效,工具未知

通过环境变量配置测试帐户:

TEST_USER=your-test-account@example.com npm test

快速测试

提供了一个bash脚本,用于通过Claude Code在MCP服务器上测试自然语言提示:

# Interactive menu to select and run prompts
./test-prompts.sh

# List all available test prompts
./test-prompts.sh --list

# Run all prompts sequentially
./test-prompts.sh --all

# Run a specific prompt by number
./test-prompts.sh 3

# Run a custom prompt
./test-prompts.sh --custom "Show me a live image from camera 1005963a"

该脚本包括22个预定义的提示,涵盖所有工具类别:

  • 身份验证(3个提示)
  • 摄像头(4个提示)
  • 媒体(2个提示)
  • 事件(2个提示)
  • 警报(1个提示)
  • 桥接(2个提示)
  • 用户(2个提示)
  • 布局(5个提示)
  • 组合查询(1个提示)

其他示例提示记录在 example-prompts.md.

备注:提示测试脚本要求安装Claude Code,并在Claude Code设置中配置MCP服务器。

项目结构

een-api-mcp/
├── src/
│   ├── index.ts              # MCP server entry point
│   ├── api/                   # EEN API client functions
│   │   ├── client.ts         # Base HTTP client with auth
│   │   ├── cameras.ts        # Camera API
│   │   ├── bridges.ts        # Bridge API
│   │   ├── users.ts          # User API
│   │   ├── events.ts         # Event API
│   │   ├── alerts.ts         # Alert API
│   │   ├── media.ts          # Media/image API
│   │   └── layouts.ts        # Layout API
│   ├── auth/                  # Authentication module
│   │   ├── token-manager.ts  # Token storage and refresh
│   │   ├── oauth.ts          # OAuth login flow
│   │   └── crypto.ts         # Password encryption
│   ├── tools/                 # MCP tool definitions
│   │   ├── definitions.ts    # JSON Schema tool definitions
│   │   └── handlers.ts       # Tool implementation
│   └── types/                 # TypeScript type definitions
├── cli/
│   └── auth.ts               # Authentication CLI
├── test/
│   └── integration/          # Integration tests
├── .env                       # Environment variables (create this)
├── mcp-config-template.json  # Template MCP configuration
└── test-prompts.sh           # Prompt testing script

安全

  • 凭据存储: ~/.een-mcp/credentials.json0600 权限
  • 密码加密:带机器特定密钥的AES-256-GCM
  • 许可证管理:过期前5分钟自动刷新
  • 刷新令牌轮换:支持EEN OAuth刷新令牌轮换
  • 代码中没有凭据:通过环境变量或CLI获取所有机密

故障排除

“找不到凭据文件”

运行auth-CLI登录:

npm run auth login -- --username user@example.com --persistPassword

“未选择帐户”

MCP工具会自动选择第一个可用帐户,但您可以明确设置一个:

# Via Claude
> "Set my EEN account to user@example.com"

“令牌已过期”

如果已存储密码(--persistPassword),令牌自动刷新。否则,请重新运行登录:

npm run auth login -- --username user@example.com

“身份验证失败”

  1. 验证您的凭据是否正确
  2. 检查您的OAuth客户端ID/密钥是否有效
  3. 确保您的EEN帐户在web控制台中处于活动状态

“MCP服务器未连接”

  1. 验证Claude配置中的路径是否正确
  2. 确保项目建成: npm run build
  3. 检查是否安装了Node.js 18+
  4. 查看克劳德桌面/代码日志中的错误

发展

# Run in development mode (auto-reload)
npm run dev

# Type checking
npm run typecheck

# Build for production
npm run build

# Run integration tests
npm test

# Run auth CLI
npm run auth -- 

许可证

麻省理工学院

目录标签

目录标签

TypeScriptClaude语音音频摄像头管理本地部署AI交互视频监控事件查询多账户支持

支持客户端

Claude DesktopClaude

接入字段

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

stdio

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

oauth

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

playwright

工具数量(toolCount,工具数)

18

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiooauth部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP