摄像头数据库查询服务

一个基于MCP协议的摄像头信息查询服务器,提供搜索、过滤和检索10,000个摄像头详细数据的功能。

  • by harshakrishnak
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 harshakrishnak/Camera-DB-MCP

使用说明

摄像头DB MCP服务器

用于查询CCTV摄像机信息数据库的MCP(模型上下文协议)服务器。此服务器提供工具,用于从存储在内存中的10000个相机的数据集中搜索、过滤和检索相机详细信息。

特性

  • 10000台样品相机:预加载随机生成的相机数据
  • 丰富的相机数据:每个摄像头包括:
    • 摄像头ID、名称、型号
    • 制造商
    • IP地址、MAC地址
    • 固件版本
    • 位置、类型
    • 安装日期、保修日期
    • 状态(活动/非活动/维护)

可用工具

get_camera

通过ID获取特定相机的详细信息。

参数:

  • cameraId (字符串,必填):相机ID(例如“CAM-00001”)

search_cameras

通过支持分页的各种条件搜索相机。

参数:

  • search (字符串,可选):与名称、型号、制造商、位置、IP或MAC匹配的搜索词
  • manufacturer (字符串,可选):按制造商筛选
  • type (字符串,可选):按摄像机类型过滤(球形、子弹型、云台、盒子、鱼眼、热敏、IP、模拟)
  • location (字符串,可选):按位置筛选
  • status (字符串,可选):按状态筛选(活动、非活动、维护)
  • limit (数字,可选):最大结果(默认值:100)
  • offset (数字,可选):分页偏移量(默认值:0)

get_camera_stats

获取有关相机数据库的总体统计数据,包括按制造商、类型和状态进行计数。

list_manufacturers

列出数据库中所有唯一的制造商。

list_locations

列出数据库中的所有唯一位置。

安装

  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

用法

运行服务器

服务器在stdio上运行,旨在与MCP兼容的客户端一起使用:

npm start

快速入门:选择您的客户

您可以将此MCP服务器与多个AI客户端集成:

  1. 克劳德桌面 (免费,推荐)-请参阅 Claude桌面设置
  2. 光标IDE (付费)-请参阅 光标设置
  3. Windsurf IDE (免费/付费)-请参阅 风帆设置
  4. 自定义集成 -请参阅 自定义集成

💡 MCP新手? 从开始 克劳德桌面 -它是免费的,也是最容易设置的!

连接到游标

有两种方法可以将此MCP服务器连接到Cursor:

方法1:使用Cursor的GUI(推荐)

  1. 打开光标设置:

    • 首选 Settings → Features → MCP (或按 Cmd+, 在Mac上/ Ctrl+, 在Windows/Linux上,然后搜索“MCP”)
  2. 添加新的MCP服务器:

    • 点击 + Add New MCP Server 按钮
  3. 配置服务器:

    • 名字: Camera DB (或您喜欢的任何名称)
    • 类型:选择 stdio
    • 命令:输入Node.js的完整路径
      • 在Mac/Linux上:通常 /usr/local/bin/node 或 /usr/bin/node
      • 在Windows上:通常 C:\Program Files\nodejs\node.exe
      • 您可以通过运行以下命令找到它: which node (Mac/Linux)或 where node (Windows)
    • 参数:输入编译服务器的绝对路径:
      /Users/harshakrishnak/Projects/CameraDBMCP/dist/index.js
      

      备注:替换为实际的项目路径。跑 pwd 在项目目录中获取绝对路径。

  4. 保存并连接:

    • 单击保存
    • Cursor将自动连接到您的MCP服务器
    • 您应该看到服务器出现在MCP服务器列表中,并显示绿色状态指示器

方法2:使用配置文件

如果Cursor支持配置文件,您可以将其添加到MCP配置中:

{
  "mcpServers": {
    "camera-db": {
      "command": "node",
      "args": ["/Users/harshakrishnak/Projects/CameraDBMCP/dist/index.js"]
    }
  }
}

找到你的绝对路径:运行 ./get-path.sh 在此项目目录中获取所需的确切路径,或运行 pwd 获取项目路径。

验证连接

在Cursor中添加服务器后:

  1. 检查MCP状态:在Cursor的MCP设置中,您应该看到您的服务器以绿色状态指示器列出
  2. 使用查询进行测试:尝试询问Cursor:
    • “获取相机统计信息”
    • “列出所有制造商”
    • “查找海康威视的摄像头”

如果服务器已连接,Cursor将能够查询您的相机数据库!

替代MCP客户端

除了Cursor,您还可以将此MCP服务器与支持模型上下文协议的其他几个AI客户端集成:

1.克劳德桌面(推荐替代方案)

克劳德桌面 是Anthropic支持MCP服务器的官方桌面应用程序。它是免费的,提供了一种与相机数据库交互的好方法。

安装和设置:

  1. 下载克劳德桌面:

  2. 配置MCP服务器:

    • 配置文件的位置取决于您的操作系统:
      • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
      • 视窗: %APPDATA%\Claude\claude_desktop_config.json
      • Linux: ~/.config/Claude/claude_desktop_config.json
  3. 编辑配置文件:

    • 创建或编辑配置文件(如果目录不存在,则创建目录)
    • 添加您的MCP服务器配置:
    {
      "mcpServers": {
        "camera-db": {
          "command": "node",
          "args": ["/Users/harshakrishnak/Projects/CameraDBMCP/dist/index.js"],
          "description": "CCTV Camera Database with 10,000 cameras"
        }
      }
    }
    

    重要:替换 /Users/harshakrishnak/Projects/CameraDBMCP/dist/index.js 你的绝对道路。使用 pwd 在项目目录中获取路径。

  4. 重新启动克劳德桌面:

    • 关闭并重新打开Claude Desktop
    • MCP服务器应自动连接
  5. 验证连接:

    • 在Claude Desktop中查找“MCP服务器已连接”指示灯
    • 问克劳德:“获取摄像头统计数据”或“列出所有海康威视摄像头”

2.风帆IDE

帆板运动 是另一个支持MCP集成的代码编辑器,类似于Cursor。

设置:

  1. 安装挡风玻璃:从下载 codeium.com/windsurf
  2. 配置MCP:与光标类似,使用设置→ MCP部分
  3. 添加服务器:使用与游标相同的配置(stdio传输)

3.使用MCP SDK进行自定义集成

您可以使用MCP SDK构建自己的客户端或与现有应用程序集成:

使用Node.js:

看 example-client.js 一个完整的工作示例。以下是一个简短的片段:

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';

// Create transport
const transport = new StdioClientTransport({
  command: 'node',
  args: ['/path/to/CameraDBMCP/dist/index.js']
});

// Create client
const client = new Client({
  name: 'my-camera-client',
  version: '1.0.0'
}, {
  capabilities: {}
});

// Connect and use
await client.connect(transport);

// Call tools
const result = await client.callTool({
  name: 'get_camera_stats',
  arguments: {}
});

console.log(result);

运行示例:

node example-client.js

使用Python:

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    # Create server parameters
    server_params = StdioServerParameters(
        command="node",
        args=["/path/to/CameraDBMCP/dist/index.js"]
    )
    
    # Create session
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            # Initialize
            await session.initialize()
            
            # Call tool
            result = await session.call_tool(
                "get_camera_stats",
                arguments={}
            )
            print(result)

# Run
import asyncio
asyncio.run(main())

4.基于Web的MCP客户端

您还可以创建一个与MCP服务器通信的web界面:

  • 在Node.js后端使用MCP SDK
  • 创建用于包装MCP工具调用的REST API端点
  • 构建查询API的前端
  • 这允许基于网络访问您的相机数据库

MCP客户端比较

客户端 类型 成本 设置难度 最适合
克劳德桌面 桌面应用程序 免费 简单 通用AI查询、聊天界面
光标 IDE 付费 简单 以代码为中心的工作流程
帆板运动 IDE 免费/付费 简单 以代码为中心的工作流程
自定义SDK 自定义 免费 中等 自定义应用程序、集成

获取服务器路径

要查找任何客户端到MCP服务器的绝对路径,请执行以下操作:

# On Mac/Linux
cd /Users/harshakrishnak/Projects/CameraDBMCP
pwd
# Output: /Users/harshakrishnak/Projects/CameraDBMCP

# The server path would be:
# /Users/harshakrishnak/Projects/CameraDBMCP/dist/index.js

# Or use the provided script:
./get-path.sh

MCP连接故障排除

  1. 服务器未启动:

    • 确保你已经跑过了 npm run build
    • 检查一下 dist/index.js 存在
    • 验证Node.js是否在您的PATH中
  2. 路径问题:

    • 在配置中始终使用绝对路径
    • 在Windows上,使用正斜杠或转义反斜杠
    • 手动测试服务器: node dist/index.js
  3. 权限问题:

    • 确保服务器文件可执行
    • 检查文件权限: chmod +x dist/index.js (Mac/Linux)
  4. 连接超时:

    • 验证服务器是否正确启动
    • 检查客户端日志中的错误消息
    • 测试用 node test-server.js 验证服务器功能

查询示例

连接后,您可以使用自然语言查询相机数据库:

  • “查找海康威视的所有摄像头”
  • “让我看看停车场的摄像头”
  • “列出所有活动摄像头”
  • “获取有关相机数据库的统计信息”
  • “查找IP地址以192.168开头的摄像头”
  • “显示2024年安装的PTZ摄像头”

发展

项目结构

CameraDBMCP/
├── src/
│   ├── index.ts          # MCP server implementation
│   ├── cache.ts          # In-memory cache for cameras
│   ├── dataGenerator.ts  # Sample data generator
│   └── types.ts          # TypeScript type definitions
├── dist/                 # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md

建筑

npm run build

发展模式

开发观察模式:

npm run dev

数据生成

样本数据包括:

  • 12家不同的制造商(海康威视、大华、安讯士、博世、索尼等)
  • 8种摄像机类型(球型、子弹型、云台型、箱式、鱼眼型、热敏型、IP型、模拟型)
  • 20个不同的地点
  • 随机IP地址、MAC地址和固件版本
  • 安装日期在2020年至2024年之间
  • 保修期为安装日期后1-3年

许可证

麻省理工学院