systerd-lite
AI-Native OS Core for Linux Systems
LLMがシステムを自律的に監視・制御・最適化するためのMCPサーバー
🎯 概要
systerd-lite は、LLM(大規模言語モデル)がLinuxシステムを「自分の体」として操作できるようにするMCPサーバーです。
主な特徴
- 🔧 200+ のシステム制御ツール: プロセス管理、ネットワーク、ストレージ、セキュリティなど
- 🤖 LLM自己編集機能: LLMが自身のコードや環境を読み書き・修正可能
- 📡 汎用MCP対応: HTTP/SSE/stdio の3トランスポートをサポート
- 🎛️ Gradio UI: ブラウザベースの管理インターフェース
- 🔐 柔軟な権限管理: ツールごとの権限設定とテンプレート
📦 クイックスタート
起動
git clone https://github.com/your/sisterd_lite.git
cd sisterd_lite
chmod +x start-mcp.sh
./start-mcp.sh
エンドポイント
動作確認
curl http://localhost:8089/health
curl -X POST http://localhost:8089 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_system_info","arguments":{}}}'
🛠️ ツールカテゴリ
📊 Monitoring(監視)
| ツール | 説明 |
|---|
get_system_info | システム全体の情報 |
get_cpu_info | CPU詳細情報 |
get_memory_info | メモリ使用量 |
get_disk_usage | ディスク使用量 |
get_temperature | 温度センサー |
list_processes | プロセス一覧 |
get_top_processes | リソース消費上位 |
🔐 Security(セキュリティ)
| ツール | 説明 |
|---|
get_selinux_status | SELinux状態 |
get_apparmor_status | AppArmor状態 |
list_firewall_rules | ファイアウォールルール |
scan_suid_files | SUID/SGIDファイル検索 |
get_failed_logins | 失敗ログイン試行 |
audit_permissions | パーミッション監査 |
🖥️ System(システム)
| ツール | 説明 |
|---|
manage_service | systemdサービス制御 |
list_units | systemdユニット一覧 |
get_kernel_modules | カーネルモジュール |
get_hardware_info | ハードウェア情報 |
get_usb_devices | USBデバイス一覧 |
�� Container(コンテナ)
| ツール | 説明 |
|---|
list_containers | コンテナ一覧 |
start_container | コンテナ起動 |
stop_container | コンテナ停止 |
run_container | 新規コンテナ実行 |
get_container_logs | ログ取得 |
🤖 Self(LLM自己編集)
LLMが自分自身の環境を操作するためのツール群
| ツール | 説明 |
|---|
read_workspace_file | ワークスペース内ファイル読み取り |
write_workspace_file | ファイル書き込み・作成 |
append_to_file | ファイル追記 |
list_workspace_directory | ディレクトリ一覧 |
search_workspace | ファイル/コンテンツ検索 |
execute_shell_command | シェルコマンド実行 |
install_python_package | Pythonパッケージインストール |
get_python_environment | Python環境情報 |
set_environment_variable | 環境変数設定 |
restart_self | サーバー自己再起動 |
get_self_status | サーバー状態取得 |
backup_workspace | ワークスペースバックアップ |
🧮 Calculator(計算)
| ツール | 説明 |
|---|
calculate | 数式評価 |
convert_units | 単位変換 |
matrix_operation | 行列演算 |
statistics | 統計計算 |
solve_equation | 方程式求解 |
⚙️ MCP Config(設定管理)
| ツール | 説明 |
|---|
get_mcp_config | 現在の設定取得 |
list_mcp_tools | ツール一覧 |
set_mcp_tool_permission | 個別権限設定 |
apply_mcp_template | テンプレート適用 |
get_mcp_templates | 利用可能テンプレート |
📋 テンプレート
用途に応じてツールセットを一括設定できます:
| テンプレート | ツール数 | 用途 |
|---|
minimal | ~18 | 安全な監視のみ |
monitoring | ~18 | システム監視 |
development | ~47 | 開発用(コンテナ、自己編集含む) |
security | ~31 | セキュリティ監査 |
full | ~200 | 全ツール有効 |
curl -X POST http://localhost:8089 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"apply_mcp_template","arguments":{"template":"development"}}}'
🔌 クライアント設定
VS Code
.vscode/mcp.json:
{
"servers": {
"systerd": {
"type": "http",
"url": "http://localhost:8089"
}
}
}
Claude Desktop
~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"systerd": {
"command": "python3",
"args": ["/path/to/mcp_server_unified.py"]
}
}
}
Ollama / HTTP クライアント
curl -X POST http://localhost:8089 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
curl -X POST http://localhost:8089 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_uptime","arguments":{}}}'
🏗️ アーキテクチャ
┌─────────────────────────────────────────────────────────────────┐
│ Clients │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ VS Code │ │ Claude │ │ Ollama │ │ Gradio UI│ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ └─────────────┴──────┬──────┴─────────────┘ │
│ │ │
│ ┌──────▼──────┐ │
│ │ MCP HTTP │ Port 8089 │
│ │ Endpoint │ │
│ └──────┬──────┘ │
│ │ │
└────────────────────────────┼─────────────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────────────┐
│ systerd-lite │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ MCPHandler │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │Monitoring│ │ Security │ │ Container│ │ Self │ │ │
│ │ │ Tools │ │ Tools │ │ Tools │ │ Tools │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────────────┐ │
│ │ Permission Manager │ │
│ │ DISABLED │ READ_ONLY │ AI_ASK │ AI_AUTO │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
└────────────────────────────┼─────────────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────────────┐
│ Linux System │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ systemd │ │ psutil │ │ Docker │ │ File I/O │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└──────────────────────────────────────────────────────────────────┘
📁 ファイル構成
sisterd_lite/
├── start-mcp.sh # 推奨起動スクリプト
├── start-lite.sh # 代替起動スクリプト
├── systerd-lite.py # メインアプリケーション
├── mcp_server_unified.py # stdio/HTTP/SSE統合サーバー
├── README.md # このファイル
├── .vscode/
│ └── mcp.json # VS Code MCP設定
├── .state/
│ └── permissions.json # ツール権限設定(自動生成)
└── systerd_lite/ # Pythonモジュール
├── mcp.py # MCPハンドラー(200+ツール)
├── permissions.py # 権限管理
├── sensors.py # システムセンサー
├── tuner.py # システムチューニング
├── container.py # コンテナ管理
├── scheduler.py # タスクスケジューラ
└── ui/ # Gradio UIモジュール
🔧 起動オプション
./start-mcp.sh
./systerd-lite.py --port 9000 --gradio 9001
./systerd-lite.py --no-ui
./systerd-lite.py --debug
🔐 セキュリティ
権限レベル
| レベル | 説明 |
|---|
DISABLED | ツール無効 |
READ_ONLY | 読み取りのみ |
AI_ASK | 実行前に確認 |
AI_AUTO | 自動実行許可 |
推奨事項
- 本番環境では
minimal または monitoring テンプレートを使用
self カテゴリのツールは信頼できる環境でのみ有効化
- HTTP APIは必要に応じてファイアウォールで保護
systerd-lite (English)
AI-Native OS Core for Linux Systems
An MCP server that allows LLMs to autonomously monitor, control, and optimize Linux systems as their own body.
🎯 Overview
systerd-lite is an MCP server that enables LLMs (Large Language Models) to operate Linux systems as their own body.
Key Features
- 🔧 200+ System Control Tools: Process management, network, storage, security, and more
- 🤖 LLM Self-Editing: LLM can read, write, and modify its own code and environment
- 📡 Universal MCP Support: Supports HTTP/SSE/stdio transports
- 🎛️ Gradio UI: Browser-based management interface
- 🔐 Flexible Permission Management: Per-tool permission settings and templates
📦 Quick Start
Launch
git clone https://github.com/your/sisterd_lite.git
cd sisterd_lite
chmod +x start-mcp.sh
./start-mcp.sh
Endpoints
Verification
curl http://localhost:8089/health
curl -X POST http://localhost:8089 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_system_info","arguments":{}}}'
📊 Monitoring
| Tool | Description |
|---|
get_system_info | System overview |
get_cpu_info | Detailed CPU info |
get_memory_info | Memory usage |
get_disk_usage | Disk usage |
get_temperature | Temperature sensors |
list_processes | Process list |
get_top_processes | Top resource usage |
🔐 Security
| Tool | Description |
|---|
get_selinux_status | SELinux status |
get_apparmor_status | AppArmor status |
list_firewall_rules | Firewall rules |
scan_suid_files | SUID/SGID file scan |
get_failed_logins | Failed login attempts |
audit_permissions | Permission audit |
🖥️ System
| Tool | Description |
|---|
manage_service | systemd service control |
list_units | systemd unit list |
get_kernel_modules | Kernel modules |
get_hardware_info | Hardware info |
get_usb_devices | USB device list |
🐳 Container
| Tool | Description |
|---|
list_containers | Container list |
start_container | Start container |
stop_container | Stop container |
run_container | Run new container |
get_container_logs | Get logs |
🤖 Self (LLM Self-Editing)
Tools for LLM to operate its own environment
| Tool | Description |
|---|
read_workspace_file | Read workspace file |
write_workspace_file | Write/create file |
append_to_file | Append to file |
list_workspace_directory | List directory |
search_workspace | Search files/content |
execute_shell_command | Run shell command |
install_python_package | Install Python package |
get_python_environment | Python environment info |
set_environment_variable | Set environment variable |
restart_self | Restart server |
get_self_status | Get server status |
backup_workspace | Backup workspace |
🧮 Calculator
| Tool | Description |
|---|
calculate | Evaluate expression |
convert_units | Unit conversion |
matrix_operation | Matrix operations |
statistics | Statistics |
solve_equation | Equation solving |
⚙️ MCP Config
| Tool | Description |
|---|
get_mcp_config | Get current config |
list_mcp_tools | List tools |
set_mcp_tool_permission | Set individual permission |
apply_mcp_template | Apply template |
get_mcp_templates | Available templates |
📋 Templates
Set toolsets for different use cases:
| Template | Tool Count | Use Case |
|---|
minimal | ~18 | Safe monitoring only |
monitoring | ~18 | System monitoring |
development | ~47 | Development (includes container, self-edit) |
security | ~31 | Security audit |
full | ~200 | All tools enabled |
curl -X POST http://localhost:8089 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"apply_mcp_template","arguments":{"template":"development"}}}'
🔌 Client Configuration
VS Code
.vscode/mcp.json:
{
"servers": {
"systerd": {
"type": "http",
"url": "http://localhost:8089"
}
}
}
Claude Desktop
~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"systerd": {
"command": "python3",
"args": ["/path/to/mcp_server_unified.py"]
}
}
}
Ollama / HTTP Client
curl -X POST http://localhost:8089 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
curl -X POST http://localhost:8089 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_uptime","arguments":{}}}'
🏗️ Architecture
┌─────────────────────────────────────────────────────────────────┐
│ Clients │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ VS Code │ │ Claude │ │ Ollama │ │ Gradio UI│ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ └─────────────┴──────┬──────┴─────────────┘ │
│ │ │
│ ┌──────▼──────┐ │
│ │ MCP HTTP │ Port 8089 │
│ │ Endpoint │ │
│ └──────┬──────┘ │
│ │ │
└────────────────────────────┼─────────────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────────────┐
│ systerd-lite │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ MCPHandler │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │Monitoring│ │ Security │ │ Container│ │ Self │ │ │
│ │ │ Tools │ │ Tools │ │ Tools │ │ Tools │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────────────┐ │
│ │ Permission Manager │ │
│ │ DISABLED │ READ_ONLY │ AI_ASK │ AI_AUTO │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
└────────────────────────────┼─────────────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────────────┐
│ Linux System │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ systemd │ │ psutil │ │ Docker │ │ File I/O │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└──────────────────────────────────────────────────────────────────┘
📁 File Structure
sisterd_lite/
├── start-mcp.sh # Recommended startup script
├── start-lite.sh # Alternative startup script
├── systerd-lite.py # Main application
├── mcp_server_unified.py # Unified stdio/HTTP/SSE server
├── README.md # This file
├── .vscode/
│ └── mcp.json # VS Code MCP config
├── .state/
│ └── permissions.json # Tool permission config (auto-generated)
└── systerd_lite/ # Python modules
├── mcp.py # MCP handler (200+ tools)
├── permissions.py # Permission management
├── sensors.py # System sensors
├── tuner.py # System tuning
├── container.py # Container management
├── scheduler.py # Task scheduler
└── ui/ # Gradio UI module
🔧 Startup Options
./start-mcp.sh
./systerd-lite.py --port 9000 --gradio 9001
./systerd-lite.py --no-ui
./systerd-lite.py --debug
🔐 Security
Permission Levels
| Level | Description |
|---|
DISABLED | Tool disabled |
READ_ONLY | Read-only |
AI_ASK | Confirm before execution |
AI_AUTO | Auto-execute allowed |
Recommendations
- Use
minimal or monitoring template in production
- Enable
self category tools only in trusted environments
- Protect HTTP API with firewall as needed