摄像头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
列出数据库中的所有唯一位置。
安装
- 安装依赖项:
npm install- 构建项目:
npm run build用法
运行服务器
服务器在stdio上运行,旨在与MCP兼容的客户端一起使用:
npm start快速入门:选择您的客户
您可以将此MCP服务器与多个AI客户端集成:
- 克劳德桌面 (免费,推荐)-请参阅 Claude桌面设置
- 光标IDE (付费)-请参阅 光标设置
- Windsurf IDE (免费/付费)-请参阅 风帆设置
- 自定义集成 -请参阅 自定义集成
💡 MCP新手? 从开始 克劳德桌面 -它是免费的,也是最容易设置的!
连接到游标
有两种方法可以将此MCP服务器连接到Cursor:
方法1:使用Cursor的GUI(推荐)
- 打开光标设置:
- 首选 Settings → Features → MCP (或按 Cmd+, 在Mac上/ Ctrl+, 在Windows/Linux上,然后搜索“MCP”)
- 添加新的MCP服务器:
- 点击 + Add New MCP Server 按钮
- 配置服务器:
- 名字: 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 在项目目录中获取绝对路径。
- 保存并连接:
- 单击保存 - Cursor将自动连接到您的MCP服务器 - 您应该看到服务器出现在MCP服务器列表中,并显示绿色状态指示器
方法2:使用配置文件
如果Cursor支持配置文件,您可以将其添加到MCP配置中:
{
"mcpServers": {
"camera-db": {
"command": "node",
"args": ["/Users/harshakrishnak/Projects/CameraDBMCP/dist/index.js"]
}
}
}找到你的绝对路径:运行./get-path.sh在此项目目录中获取所需的确切路径,或运行pwd获取项目路径。
验证连接
在Cursor中添加服务器后:
- 检查MCP状态:在Cursor的MCP设置中,您应该看到您的服务器以绿色状态指示器列出
- 使用查询进行测试:尝试询问Cursor:
- “获取相机统计信息” - “列出所有制造商” - “查找海康威视的摄像头”
如果服务器已连接,Cursor将能够查询您的相机数据库!
替代MCP客户端
除了Cursor,您还可以将此MCP服务器与支持模型上下文协议的其他几个AI客户端集成:
1.克劳德桌面(推荐替代方案)
克劳德桌面 是Anthropic支持MCP服务器的官方桌面应用程序。它是免费的,提供了一种与相机数据库交互的好方法。
安装和设置:
- 下载克劳德桌面:
- 访问 claude.ai/下载 - 为您的操作系统下载并安装Claude Desktop
- 配置MCP服务器:
- 配置文件的位置取决于您的操作系统: - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 视窗: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json
- 编辑配置文件:
- 创建或编辑配置文件(如果目录不存在,则创建目录) - 添加您的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 在项目目录中获取路径。
- 重新启动克劳德桌面:
- 关闭并重新打开Claude Desktop - MCP服务器应自动连接
- 验证连接:
- 在Claude Desktop中查找“MCP服务器已连接”指示灯 - 问克劳德:“获取摄像头统计数据”或“列出所有海康威视摄像头”
2.风帆IDE
帆板运动 是另一个支持MCP集成的代码编辑器,类似于Cursor。
设置:
- 安装挡风玻璃:从下载 codeium.com/windsurf
- 配置MCP:与光标类似,使用设置→ MCP部分
- 添加服务器:使用与游标相同的配置(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.shMCP连接故障排除
- 服务器未启动:
- 确保你已经跑过了 npm run build - 检查一下 dist/index.js 存在 - 验证Node.js是否在您的PATH中
- 路径问题:
- 在配置中始终使用绝对路径 - 在Windows上,使用正斜杠或转义反斜杠 - 手动测试服务器: node dist/index.js
- 权限问题:
- 确保服务器文件可执行 - 检查文件权限: chmod +x dist/index.js (Mac/Linux)
- 连接超时:
- 验证服务器是否正确启动 - 检查客户端日志中的错误消息 - 测试用 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年
许可证
麻省理工学院
