README
🚀 Device42 MCP 服务器
Device42 MCP 服务器是用于 Device42 IT 资产管理的解决方案,采用 Node.js/TypeScript 实现。它能帮助用户更高效地管理 IT 资产,提供便捷的查询和操作功能。
✨ 主要特性
- 零安装:可直接使用
npx device42-mcp运行。 - 快速:使用原生
fetch(Node 18+),无需沉重的 HTTP 库。 - 类型安全:完全采用 TypeScript 编写。
- 依赖极少:仅依赖
@modelcontextprotocol/sdk和zod。 - 读写模式:设置
D42_READONLY=false可启用写操作。 - DOQL 支持:可使用 Device42 强大的查询语言执行复杂查询。
💻 使用示例
示例问题
配置完成后,你可以向 AI 助手提出如下问题:
基础查询
- "列出纽约数据中心的所有设备"
- "服务器 web - prod - 01 的 IP 地址是什么?"
- "显示所有运行 Ubuntu 的设备"
- "哪些设备在 A - 15 机架中?"
- "查找所有标记为 '生产' 的设备"
网络与 IP 管理
- "10.0.1.0/24 子网中有哪些可用 IP?"
- "显示分配给数据库服务器的所有 IP"
- "列出总部大楼中的所有 VLAN"
- "192.168.1.50 在哪个子网中?"
基础设施概述
- "提供伦敦数据中心所有机架的摘要"
- "每个操作系统有多少台设备?"
- "列出所有建筑物及其房间数量"
- "我们使用了哪些硬件型号?"
DOQL 查询(高级)
服务器支持 DOQL(Device42 对象查询语言),可实现复杂的跨表查询:
- "运行 DOQL 查询,查找过去 30 天内添加的、内存超过 64GB 的所有设备"
- "使用 DOQL 生成按部门和服务级别分组的设备报告"
- "查询所有虚拟机及其主机关系"
- "查找保修在未来 90 天内到期的设备"
AI 可能生成的 DOQL 示例:
SELECT d.name, d.ram, d.first_added
FROM view_device_v1 d
WHERE d.ram > 65536
AND d.first_added > NOW() - INTERVAL '30 days'
🚀 快速开始
无需安装,只需将其添加到 MCP 客户端配置中:
Cursor(npx)
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"device42": {
"command": "npx",
"args": ["-y", "device42-mcp"],
"env": {
"D42_URL": "https://your-device42.com",
"D42_USERNAME": "api-user",
"D42_PASSWORD": "api-password",
"D42_VERIFY_SSL": "true",
"D42_READONLY": "true"
}
}
}
}
Cursor(Docker)
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"device42": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "D42_URL=https://your-device42.com",
"-e", "D42_USERNAME=api-user",
"-e", "D42_PASSWORD=api-password",
"-e", "D42_VERIFY_SSL=true",
"-e", "D42_READONLY=true",
"killcity/device42-mcp:latest"
]
}
}
}
Claude Desktop(npx)
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"device42": {
"command": "npx",
"args": ["-y", "device42-mcp"],
"env": {
"D42_URL": "https://your-device42.com",
"D42_USERNAME": "api-user",
"D42_PASSWORD": "api-password",
"D42_VERIFY_SSL": "true",
"D42_READONLY": "true"
}
}
}
}
Claude Desktop(Docker)
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"device42": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "D42_URL=https://your-device42.com",
"-e", "D42_USERNAME=api-user",
"-e", "D42_PASSWORD=api-password",
"-e", "D42_VERIFY_SSL=true",
"-e", "D42_READONLY=true",
"killcity/device42-mcp:latest"
]
}
}
}
📦 安装指南
全局安装
npm install -g device42-mcp
device42-mcp
从源代码安装
git clone https://github.com/killcity/device42-mcp.git
cd device42-mcp
npm install
npm run build
node dist/index.js
Docker(独立运行)
docker pull killcity/device42-mcp:latest
docker run -i --rm \
-e D42_URL="https://your-device42.com" \
-e D42_USERNAME="user" \
-e D42_PASSWORD="pass" \
-e D42_VERIFY_SSL="true" \
-e D42_READONLY="true" \
killcity/device42-mcp:latest
或者本地构建:
docker build -t device42-mcp:latest .
📚 详细文档
环境变量
| 属性 | 是否必需 | 默认值 | 详情 |
|------|----------|---------|-------------|
| D42_URL | 是 | - | Device42 实例的 URL |
| D42_USERNAME | 是 | - | API 用户名 |
| D42_PASSWORD | 是 | - | API 密码 |
| D42_VERIFY_SSL | 否 | true | 验证 SSL 证书 |
| D42_READONLY | 否 | true | 仅暴露读操作 |
可用工具
读操作
list_devices、get_device、get_device_by_name、search_deviceslist_ips、get_ip、search_ips_by_devicelist_subnets、get_subnetlist_racks、get_racklist_rooms、get_roomlist_buildings、get_buildinglist_vlans、get_vlanlist_software、get_softwarelist_business_apps、get_business_applist_app_components、get_app_componentlist_hardware_models、list_operating_systems、list_vendorsdoql_query- 执行原始 DOQL 查询以进行复杂数据检索
写操作(当 D42_READONLY=false 时)
create_device、update_deviceassign_ip_to_device、release_ipcreate_subnet、create_rack、create_room、create_building
🔧 技术细节
开发
# 以开发模式运行
npm run dev
# 构建
npm run build
# 运行构建后的版本
npm start
📄 许可证
本项目采用 MIT 许可证。
Scan to join WeChat group