OpenWRT MCP服务器
MCP(模型上下文协议)服务器,用于通过Claude Code配置和管理OpenWRT路由器。该服务器通过OpenWRT的ubus API和SSH为网络管理、VPN配置、系统管理等提供全面的工具、资源和提示。
特性
🌐 网络管理
- 列出并检查网络接口
- 配置静态IP地址
- 在接口上启用DHCP
- 添加静态路由
- 查看和分析网络配置
🔒 WireGuard VPN
- 创建WireGuard接口
- 添加和删除VPN对等端
- 生成密钥对
- 查看WireGuard状态和配置
- 完整的服务器和客户端设置支持
🛡️ DNS和DHCP管理
- 设置上游DNS服务器
- 添加静态DNS主机条目(A记录)
- 添加CNAME记录
- 配置DHCP范围
- 添加静态DHCP租约(MAC到IP绑定)
🔧 系统管理
- 执行 shell 命令
- 管理软件包(安装/删除)
- 控制服务(启动/停止/重新启动)
- 查看系统信息和日志
- 备份配置
- 重启设备
📁 文件管理
- 从文件系统读取任何文件
- 写入/创建文件
- 附加到文件
- 删除文件
- 列出目录内容
- 搜索文件内容
- 创建目录
- 备份文件
⚙️ 服务管理
- 创建自定义init.d服务
- 从命令创建简单服务
- 删除服务
- 查看服务脚本
- 管理cron作业(添加/删除/列出)
📝 脚本管理
- 在/root/或任何地方创建shell脚本
- 执行脚本
- 模板脚本(备份、监控)
- 在目录中列出脚本
📚 资源(读取配置文件)
- 网络配置
- 无线设置
- 防火墙规则
- DHCP/DNS设置
- 系统配置
- WireGuard配置
- 系统和网络状态
- 系统日志
- 动态文件访问:使用读取任何文件
openwrt://file/path/to/file
💡 智能提示
- 分析配置 -全面的配置分析和建议
- 设置WireGuard服务器 -引导式VPN服务器设置
- 添加WireGuard客户端 -轻松添加客户端/对等端
- 安全审计 -全面安全评估
- 优化网络 -性能优化
- 连接故障排除 -诊断和修复
- 设置访客网络 -独立客人WiFi
先决条件
- Node.js 18+和npm
- OpenWRT 25.x或更高版本(使用
apk包管理器;旧版本opkg是 不 支持) - SSH凭据(密码或私钥)
安装
- 克隆或下载此存储库
- 安装依赖项:
npm install- 构建项目:
npm run build配置
服务器是通过环境变量配置的:
OPENWRT_HOST-路由器IP地址(默认值:192.168.1.1)OPENWRT_PORT-SSH端口(默认值:22)OPENWRT_USERNAME-SSH用户名(默认:root)OPENWRT_PASSWORD-SSH密码(如果没有密钥,则需要)OPENWRT_PRIVATE_KEY_FILE-SSH私钥文件的路径(如果没有密码,则需要)OPENWRT_PRIVATE_KEY-直接SSH私钥内容(替代文件路径)
示例:使用密码身份验证
创建一个 .env 文件或设置环境变量:
export OPENWRT_HOST=192.168.1.1
export OPENWRT_USERNAME=root
export OPENWRT_PASSWORD=your_password示例:使用SSH密钥身份验证(文件路径)
export OPENWRT_HOST=192.168.1.1
export OPENWRT_USERNAME=root
export OPENWRT_PRIVATE_KEY_FILE=~/.ssh/id_rsa示例:使用SSH密钥身份验证(密钥内容)
export OPENWRT_HOST=192.168.1.1
export OPENWRT_USERNAME=root
export OPENWRT_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)"使用Claude Code进行设置
- 构建项目:
npm run build- 将服务器添加到您的Claude Code MCP设置中。
在Windows上,编辑 %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"openwrt": {
"command": "node",
"args": ["E:\\OpenWRT\\mcp\\build\\index.js"],
"env": {
"OPENWRT_HOST": "192.168.1.1",
"OPENWRT_USERNAME": "root",
"OPENWRT_PASSWORD": "your_password"
}
}
}
}使用SSH密钥文件:
{
"mcpServers": {
"openwrt": {
"command": "node",
"args": ["E:\\OpenWRT\\mcp\\build\\index.js"],
"env": {
"OPENWRT_HOST": "192.168.1.1",
"OPENWRT_USERNAME": "root",
"OPENWRT_PRIVATE_KEY_FILE": "C:\\Users\\YourUser\\.ssh\\id_rsa"
}
}
}
}在macOS/Linux上,编辑 ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"openwrt": {
"command": "node",
"args": ["/path/to/mcp/build/index.js"],
"env": {
"OPENWRT_HOST": "192.168.1.1",
"OPENWRT_USERNAME": "root",
"OPENWRT_PASSWORD": "your_password"
}
}
}
}使用SSH密钥文件:
{
"mcpServers": {
"openwrt": {
"command": "node",
"args": ["/path/to/mcp/build/index.js"],
"env": {
"OPENWRT_HOST": "192.168.1.1",
"OPENWRT_USERNAME": "root",
"OPENWRT_PRIVATE_KEY_FILE": "/home/youruser/.ssh/id_rsa"
}
}
}
}- 重新启动Claude代码
可用工具
网络工具
openwrt_network_list_interfaces
列出OpenWRT设备上的所有网络接口。
openwrt_network_get_interface
获取特定网络接口的详细信息。
interface(必填):接口名称(例如“lan”、“wan”)
openwrt_network_set_static_ip
为网络接口设置静态IP地址。
interface(必填):接口名称ipaddr(必填):IP地址netmask(必填):网络掩码gateway(可选):网关地址
openwrt_network_set_dhcp
设置网络接口以使用DHCP。
interface(必填):接口名称
openwrt_network_show_config
显示当前网络配置。
openwrt_network_add_static_route
将静态路由添加到路由表中。
name(必填):路线标识符target(必填):目标网络(例如“10.0.0.0/24”)gateway(必填):网关IP地址interface(可选):接口名称
DNS工具
openwrt_dns_show_config
显示当前DNS和DHCP配置。
openwrt_dns_set_upstream_servers
为OpenWRT设备设置上游DNS服务器。
servers(必需):DNS服务器IP数组
openwrt_dns_add_static_host
添加静态DNS主机条目(a记录)。
name(必填):条目标识符hostname(必需):要解析的主机名ip(必填):IP地址
openwrt_dns_add_cname
添加DNS CNAME记录。
name(必填):条目标识符cname(必填):CNAME别名target(必填):目标主机名
openwrt_dns_set_dhcp_range
为网络接口配置DHCP范围。
interface(必填):接口名称start(必需):DHCP范围的开始limit(必填):地址数量leasetime(必填):租赁时间(例如“12小时”、“7天”)
openwrt_dns_add_static_lease
添加静态DHCP租约(MAC到IP绑定)。
name(必填):条目标识符mac(必填):MAC地址ip(必填):要分配的IP地址hostname(可选):主机名
WireGuard VPN工具
openwrt_wireguard_show_interfaces
列出所有WireGuard接口及其配置。
openwrt_wireguard_create_interface
创建新的WireGuard接口。
name(必填):接口名称(例如“wg0”)private_key(可选):私钥(如果没有提供,将生成)listen_port(必填):UDP监听端口(例如51820)addresses(必填):接口的IP地址数组
openwrt_wireguard_add_peer
向WireGuard接口添加对等端。
interface(必填):WireGuard接口名称peer_name(必填):对等方的唯一名称public_key(必填):对等方的公钥allowed_ips(必填):允许的IP地址数组endpoint(可选):对等端点地址:端口persistent_keepalive(可选):保活间隔(秒)preshared_key(可选):预共享密钥以增强安全性
openwrt_wireguard_remove_peer
从WireGuard接口中删除对等端。
interface(必填):WireGuard接口名称peer_name(必填):要删除的对等方的名称
openwrt_wireguard_generate_keypair
生成新的WireGuard密钥对(私钥和公钥)。
openwrt_wireguard_show_config
显示UCI的当前WireGuard配置。
系统管理工具
openwrt_system_info
获取系统信息(正常运行时间、负载、内存等)。
openwrt_system_board_info
获取电路板/硬件信息。
openwrt_system_execute_command
在OpenWRT设备上执行shell命令(小心使用)。
command(必需):要执行的Shell命令
openwrt_system_list_processes
列出正在运行的进程。
openwrt_system_disk_usage
显示磁盘使用统计信息。
openwrt_package_list_installed
列出已安装的软件包。
filter(可选):按名称筛选包
openwrt_package_install
使用apk安装软件包。
package(必需):要安装的包名称
openwrt_package_remove
使用apk删除包。
package(必需):要删除的包名称
openwrt_service_list
列出所有可用的服务。
openwrt_service_control
控制服务(启动、停止、重新启动、启用、禁用)。
service(必填):服务名称action(必填):要执行的操作(启动/停止/重新启动/重新加载/启用/禁用/状态)
openwrt_system_reboot
重新启动OpenWRT设备。
confirm(必填):必须设置为true以确认重新启动
openwrt_system_backup_config
创建当前配置的备份。
文件管理工具
openwrt_file_read
从OpenWRT文件系统读取任何文件。
path(必填):文件的完整路径
openwrt_file_write
将内容写入OpenWRT文件系统上的文件。
path(必填):文件的完整路径content(必填):要写的内容mode(可选):文件权限(例如,“755”、“644”)
openwrt_file_append
将内容附加到现有文件。
path(必填):文件的完整路径content(必填):要附加的内容
openwrt_file_delete
从OpenWRT文件系统中删除文件。
path(必填):文件的完整路径confirm(必填):必须为真才能确认删除
openwrt_file_list_directory
列出目录的内容。
path(必填):目录路径detailed(可选):显示具有权限的详细列表
openwrt_file_create_directory
创建一个新目录。
path(必填):目录的完整路径parents(可选):如果需要,创建父目录
openwrt_file_search_content
在文件中搜索文本内容。
directory(必填):要搜索的目录pattern(必填):要搜索的文本模式file_pattern(可选):文件名模式(例如“\*.conf”)
openwrt_file_backup
创建文件或目录的备份。
path(必填):备份路径backup_path(可选):备份目标
服务管理工具
openwrt_service_create
创建一个新的init.d服务脚本。
name(必填):服务名称script_content(必填):完成init.d脚本内容start_priority(可选):启动优先级stop_priority(可选):停止优先级enable(可选):启动时启用服务
openwrt_service_create_simple
通过命令创建一个简单的init.d服务。
name(必填):服务名称description(可选):服务描述start_command(必填):启动时运行的命令stop_command(可选):停止时运行的命令start_priority(可选):启动优先级(默认值:95)stop_priority(可选):停止优先级(默认值:10)enable(可选):启动时启用服务
openwrt_service_delete
删除init.d服务。
name(必填):服务名称confirm(必填):必须为真才能确认
openwrt_service_view
查看init.d服务脚本的内容。
name(必填):服务名称
openwrt_cron_list
列出所有cron作业。
openwrt_cron_add
添加新的cron作业。
schedule(必填):Cron时间表(例如,“0 2\*\*\*”)command(必填):执行命令comment(可选):注释以标识作业
openwrt_cron_remove
删除与模式匹配的cron作业。
pattern(必填):图案匹配confirm(必填):必须为真才能确认
脚本管理工具
openwrt_script_create
在/root/或任何指定位置创建shell脚本。
name(必填):脚本名称content(必填):脚本内容directory(可选):创建脚本的目录(默认:/root)executable(可选):使脚本可执行(默认值:true)shebang(可选):Shebang行(默认值:'#!/bin/sh')
openwrt_script_execute
执行脚本并返回其输出。
path(必填):脚本的完整路径args(可选):传递给脚本的参数background(可选):在后台运行
openwrt_script_template_backup
从模板创建备份脚本。
name(可选):脚本名称(默认值:“backup.sh”)backup_dirs(可选):要备份的目录destination(可选):备份目标目录
openwrt_script_template_monitor
从模板创建系统监控脚本。
name(可选):脚本名称(默认值:'monitor.sh')email(可选):电子邮件提醒log_file(可选):日志文件路径
openwrt_script_list
列出目录中的所有脚本。
directory(可选):目录(默认:/root)pattern(可选):文件模式(默认值:'\*.sh')
可用资源
资源允许Claude直接读取配置文件和系统状态:
openwrt://config/network-网络配置openwrt://config/wireless-WiFi配置openwrt://config/dhcp-DHCP和DNS配置openwrt://config/firewall-防火墙规则openwrt://config/system-系统设置openwrt://config/wireguard-WireGuard VPN配置openwrt://status/system-当前系统状态(JSON)openwrt://status/network-网络接口状态(JSON)openwrt://logs/system-最近的系统日志openwrt://logs/kernel-最近的内核日志openwrt://file/path/to/file- 动态的:通过指定路径读取任何文件
智能提示
提示为常见任务提供指导工作流程:
analyze-config-分析配置并提供建议setup-wireguard-server-设置WireGuard VPN服务器add-wireguard-client-添加新的WireGuard客户端/对等端optimize-network-分析和优化网络性能security-audit-执行全面的安全审计troubleshoot-connectivity-解决网络连接问题setup-guest-network-设置一个隔离的访客WiFi网络
使用示例
在Claude Code中配置后,您可以让Claude管理您的OpenWRT路由器:
示例1:检查网络接口
Show me all network interfaces on my OpenWRT router示例2:配置静态IP
Set the LAN interface to use static IP 192.168.1.1 with netmask 255.255.255.0示例3:添加DNS条目
Add a static DNS entry: myserver.local pointing to 192.168.1.100示例4:配置DHCP
Configure DHCP on the lan interface: start at 100, limit 150 addresses, lease time 12h示例5:添加静态路由
Add a static route named 'office_network' for 10.0.0.0/24 via gateway 192.168.1.254示例6:分析配置
Analyze my OpenWRT configuration and provide security recommendations示例7:设置WireGuard VPN
Set up a WireGuard VPN server on wg0 interface with port 51820 and subnet 10.0.0.1/24示例8:添加WireGuard客户端
Add a WireGuard peer named "laptop" with IP 10.0.0.2 to the wg0 interface示例9:查看配置文件
Show me the current network configuration file and explain what it does示例10:安装软件包
Install the wireguard-tools package示例11:连接故障排除
I can't access the internet from LAN clients, help me troubleshoot示例12:安全审计
Perform a security audit of my router示例13:创建自定义服务
Create a simple init.d service called 'myapp' that starts '/root/myapp.py' on boot示例14:创建备份脚本
Create a backup script that backs up /etc/config and /root directories to /tmp/backups示例15:读取任何配置文件
Read the file /etc/dnsmasq.conf and explain its configuration示例16:创建监控脚本
Create a monitoring script that checks CPU, memory, and disk usage every 5 minutes示例17:管理Cron作业
Add a cron job to run /root/backup.sh every day at 2 AM示例18:搜索配置
Search for all files in /etc that contain the word "firewall"发展
项目结构
mcp/
├── src/
│ ├── index.ts # Main MCP server with handlers
│ ├── openwrt-client.ts # OpenWRT SSH/ubus/UCI client
│ ├── resources.ts # MCP Resources (config files, logs)
│ ├── prompts.ts # Smart prompts for common tasks
│ └── tools/
│ ├── network.ts # Network management (6 tools)
│ ├── dns.ts # DNS/DHCP management (6 tools)
│ ├── wireguard.ts # WireGuard VPN (6 tools)
│ ├── system.ts # System administration (12 tools)
│ ├── files.ts # File management (8 tools)
│ ├── services.ts # Service & cron management (7 tools)
│ └── scripts.ts # Script creation & management (5 tools)
├── build/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
├── .gitignore
├── .env.example
└── README.md总计:50个工具,10+资源,7个智能提示
建筑
npm run build观看模式(用于开发)
npm run watch安全注意事项
- 安全地存储凭据(使用环境变量或SSH密钥)
- 避免将凭据提交到版本控制
- 尽可能使用SSH密钥身份验证
- 确保您的OpenWRT设备位于受信任的网络上
- 如果远程访问,请考虑使用VPN
故障排除
连接问题
- 验证SSH访问:
ssh root@192.168.1.1 - 检查OpenWRT上的防火墙规则
- 确保SSH服务器在OpenWRT上运行
权限错误
- 验证用户是否具有sudo/root访问权限
- 检查OpenWRT用户权限
工具错误
- 检查OpenWRT日志:
/var/log/messages - 验证ubus是否正在运行:
ubus list - 检查UCI配置:
uci show
贡献
欢迎投稿!请随时提交问题或拉取请求。
许可证
麻省理工学院
免责声明
此工具可更改路由器配置。始终首先在安全的环境中进行测试,并确保在出现问题时(例如,对路由器的物理访问、备份配置)有一种恢复方法。
