库存MCP服务器
一个简单的模型上下文协议(MCP)服务器,用于库存管理,有三个工具。
特性
此MCP服务器提供四种工具:
- get_show_chassis -连接到Juniper路由器,检索硬件清单,并自动分析EOL组件
- get_investory -使用可选的类别筛选检索当前库存数据
- 分析_库存 -分析路由器硬件清单,并与Juniper的在线EOL数据库进行核对
- create_bom -为具有可用性检查的产品创建物料清单
安装
- 安装Python 3.10或更高版本
- 安装依赖项:
pip install -r requirements.txt- 创建一个
devices.json包含路由器连接详细信息的文件:
{
"router1": {
"ip": "192.168.1.10",
"port": 22,
"username": "admin",
"ssh_config": null,
"auth": {
"type": "password",
"password": "password123"
}
},
"router2": {
"ip": "10.0.0.20",
"port": 22,
"username": "netadmin",
"ssh_config": "~/.ssh/config",
"auth": {
"type": "password",
"password": "secure_pass"
}
},
"router3": {
"ip": "10.0.0.30",
"port": 22,
"username": "admin",
"ssh_config": null,
"auth": {
"type": "ssh_key",
"ssh_key_file": "~/.ssh/id_rsa"
}
}
}支持的身份验证类型:
password:使用密码身份验证ssh_key:使用SSH密钥身份验证
重要提示: 保持你的 devices.json 文件安全,因为它包含凭据!
运行服务器
您可以直接运行服务器:
python inventory_mcp_server.py或者使其可执行:
chmod +x inventory_mcp_server.py
./inventory_mcp_server.py或者把它做成一个容器,放在远程服务器上。然后,配置Claude使用远程Docker容器
docker build -t junos-eol-mcp:1.0 .使用Claude Desktop进行配置
要将此MCP服务器与Claude Desktop一起使用,请将其添加到您的Claude配置文件中:
在MacOS上
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"inventory": {
"command": "python",
"args": ["/absolute/path/to/inventory_mcp_server.py"]
}
}
}在Windows上
编辑 %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"inventory": {
"command": "python",
"args": ["C:\\absolute\\path\\to\\inventory_mcp_server.py"]
}
}
}替换 /absolute/path/to/inventory_mcp_server.py 使用服务器文件的实际路径。
更新配置后,重新启动Claude Desktop。
基于Docker容器的远程服务器
将所有文件上传到远程服务器并在那里创建容器:
docker build -t junos-eol-mcp:1.0 .编辑 %APPDATA%\Claude\claude_desktop_config.json 在您的本地计算机中:
{
"mcpServers": {
"mcp-eol-junos-remote": {
"type": "stdio",
"command": "ssh",
"args": [
"",
"/usr/bin/docker",
"run",
"--rm",
"-i",
"-v",
"/absolute/path/to/junos-eol-mcp/:/app/config/",
"junos-eol-mcp:1.0"]
}
}替换 /absolute/path/to/junos-eol-mcp 远程服务器中服务器文件的实际路径。
更新配置后,重新启动Claude Desktop。
工具使用示例
get_show_chassis
连接到路由器并分析其硬件中的EOL组件:
{
"router_name": "ROUTERREC2",
"eol_url": "https://support.juniper.net/support/eol/product/m_series/"
}它的作用:
- 从加载路由器连接详细信息
devices.json - 使用jnpr.junos(PyEZ)通过SSH连接到路由器
- 执行
show chassis hardware clei-models命令 - 提取所有FRU型号
- 下载Juniper的EOL数据库
- 根据EOL数据库分析FRU
- 返回综合报告
输出:
{
"router_name": "ROUTERREC2",
"router_ip": "172.16.50.100",
"command_executed": "show chassis hardware clei-models",
"eol_list": {
"CHAS-MX104-S": 1,
"MIC-3D-2XGE-XFP": 2
},
"total_eol_components": 3,
"eol_parts_found": ["CHAS-MX104-S", "MIC-3D-2XGE-XFP"],
"fru_list": ["CHAS-MX104-S", "PWR-MX104-DC-S", "..."],
"eol_url": "https://support.juniper.net/support/eol/product/m_series/"
}get_investory
{
"category": "components"
}分析_库存
分析路由器硬件清单,并与Juniper的EOL数据库进行核对:
{
"hw_inventory": "username@ROUTERREC2-re0> show chassis hardware clei-models\nHardware inventory:\nItem Version Part number CLEI code FRU model number\nMidplane REV 57 750-044219 IPMVM10FRA CHAS-MX104-S\nPEM 0 REV 06 740-045932 IPUPAMJKAB PWR-MX104-DC-S\n...",
"eol_url": "https://support.juniper.net/support/eol/product/m_series/"
}它是如何工作的:
- 从硬件清单中提取所有FRU型号
- 从Juniper网站下载EOL页面
- 对照EOL数据库检查每个FRU模型
- 返回与计数匹配的EOL组件
输出:
{
"eol_list": {
"CHAS-MX104-S": 1,
"MIC-3D-2XGE-XFP": 2
},
"total_eol_components": 3,
"eol_parts_found": ["CHAS-MX104-S", "MIC-3D-2XGE-XFP"],
"fru_list": ["CHAS-MX104-S", "PWR-MX104-DC-S", "..."],
"eol_url": "https://support.juniper.net/support/eol/product/m_series/"
}create_bom
{
"product_name": "Product X",
"components": [
{"item_id": "001", "quantity_needed": 2},
{"item_id": "003", "quantity_needed": 10}
],
"units_to_produce": 5
}样品数据
服务器包括示例库存数据:
- 小部件A(150件)
- 小部件B(75件)
- M5螺钉(1000个)
- 蓝色油漆(25升)
定制
要使用您自己的库存数据,请修改 SAMPLE_INVENTORY 服务器代码中的字典,或扩展它以连接到真实的数据库。
测试
您可以使用MCP检查器测试服务器:
npx @modelcontextprotocol/inspector python inventory_mcp_server.py这将打开一个web界面,您可以在其中测试每个工具。
许可证
MIT许可证-可根据需要自由使用和修改!
