A MCP server for OpenWrt devices. This is a very early version and may contain unexpected errors.
Project description
OpenWrt MCP Controller
This project provides a Model Context Protocol (MCP) server for managing OpenWrt devices. It allows you to interact with and control an OpenWrt router through a simple API.
The server utilizes fastmcp to expose OpenWrt functionalities as tools that can be called remotely.
1. Prerequisites
For the server to have full functionality, a custom LuCI RPC script must be placed on the target OpenWrt device.
Install sys.lua on OpenWrt
The sys.lua file in this repository extends the capabilities of the LuCI JSON-RPC interface. You must copy this file to your OpenWrt router for tools like system_status, network_status, and set_led_state to work.
-
Copy the file to your OpenWrt device: Use
scpor any other file transfer method to copysys.luato your router.scp sys.lua root@<your_openwrt_ip>:/usr/lib/lua/luci/sys.lua
-
Verify Permissions: Ensure the file has the correct permissions.
ssh root@<your_openwrt_ip> "chmod 644 /usr/lib/lua/luci/sys.lua"
2. Installation
You can install this package directly from PyPI.
pip install openwrt-mcp
3. Configuration
The server is configured through environment variables. You must set the following before running the server:
OPENWRT_HOST: The full URL of your OpenWrt device (e.g.,http://192.168.1.1).OPENWRT_PASSWORD: The login password for your OpenWrt device.OPENWRT_USERNAME: (Optional) The login username. Defaults toroot.
Example:
export OPENWRT_HOST="http://192.168.1.1"
export OPENWRT_PASSWORD="your_secret_password"
4. Usage
Once installed and configured, you can start the MCP server with the following configuration:
{
"mcpServers":{
"openwrt-mcp":{
"command":"uvx",
"args": [
"openwrt-mcp"
],
"env":{
"OPENWRT_HOST":"192.168.0.1",
"OPENWRT_PASSWORD":"root",
"OPENWRT_USERNAME":"12345678"
}
}
}
}
The server will start and listen for incoming connections via standard I/O.
Available Tools
The following tools are exposed by the MCP server:
reboot(): Reboots the OpenWrt device.system_status(): Retrieves system and board information.network_status(): Gets the status of all network interfaces.read_log(): Reads the system log (logread).set_led_state(state: str): Sets the state of the "Green" LED.statecan be'on'or'off'.summary_log(): Provides a structured prompt template for an AI to summarize the output ofread_log().
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openwrt_mcp-0.1.7.tar.gz.
File metadata
- Download URL: openwrt_mcp-0.1.7.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e73d4a083b17b955027fe1d6954555a20c80253cb1dc1447c0c998c02d3f827e
|
|
| MD5 |
37baeee14f73f75ac521cf366ac8db59
|
|
| BLAKE2b-256 |
a3cfcf52d4153790908004686c8c74db987702c800d31951ad4ca279e999342a
|
File details
Details for the file openwrt_mcp-0.1.7-py3-none-any.whl.
File metadata
- Download URL: openwrt_mcp-0.1.7-py3-none-any.whl
- Upload date:
- Size: 5.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d77abc21333e21ad62ed4ab0431b2d338039672b88336ab9c7b6fe43fcf18cc
|
|
| MD5 |
88896c849e4aa111c7ab02a13a2d8e9f
|
|
| BLAKE2b-256 |
b42cf6be33bca50c5fb6bba616a8f01c5935c19398ec972457dedc3a51a806e6
|