mcp_lcu_server
The MCP Linux Common Utility Server is a Python server that provides access to operations and information for various Linux system components using the Model Context Protocol. It features comprehensive support for CPU, memory, and network operations, alongside robust system monitoring and logging capabilities, tailored for secure Linux environments.
MCP Linux Common Utility Server
The Model Context Protocol (MCP) Linux Common Utility (LCU) Server is a Python-based server that provides access to various Linux system operations and information through the Model Context Protocol.
Features
- CPU Operations: CPU information, usage, load average, etc.
- Memory Operations: Memory and swap information, usage statistics.
- Process/Thread Operations: Process listing, information, and management.
- Storage Operations: Disk, volume, and partition information.
- Filesystem Operations: File creation, deletion, updating, and information.
- Hardware Operations: Hardware detection and information.
- Network Operations: Interface information, connectivity testing, and data transfer.
- Monitoring Operations: System status monitoring and health checks.
- Log Operations: Access to system logs, log analysis, and statistics across multiple sources.
Installation
Prerequisites
- Python 3.10 or higher
- Linux operating system
Installation Steps
-
Clone the repository:
git clone https://github.com/yourusername/mcp_lcu_server.git cd mcp_lcu_server
-
Install the package:
uv venv source .venv/bin/activate python -m build
Configuration
The server can be configured using a YAML configuration file. By default, it looks for the configuration file in the following locations:
./config.yaml
./config/config.yaml
/etc/mcp-lcu-server/config.yaml
~/.config/mcp-lcu-server/config.yaml
You can also specify a custom configuration file path using the --config
command-line option.
Configuration File Example
server:
name: mcp-lcu-server
transport: both # stdio, sse, or both
port: 8000
host: 127.0.0.1
monitoring:
enabled: true
interval: 30 # seconds
metrics:
- cpu
- memory
- disk
- network
filesystem:
allowed_paths:
- /
max_file_size: 10485760 # 10MB
network:
allow_downloads: true
allow_uploads: true
max_download_size: 104857600 # 100MB
max_upload_size: 10485760 # 10MB
allowed_domains:
- "*" # Allow all domains
process:
allow_kill: false
allowed_users: []
logs:
# Custom log paths (optional)
paths:
# syslog: /var/log/syslog
# auth: /var/log/auth.log
max_entries: 1000 # Maximum entries to return
Usage
Starting the Server
You can start the server using the command-line interface:
mcp-lcu-server [OPTIONS]
Available options:
--config
,-c
: Path to the configuration file--transport
,-t
: Transport type (stdio, sse, or both)--port
,-p
: Port for SSE transport--host
,-h
: Host for SSE transport--debug
,-d
: Enable debug logging
Transport Types
The server supports the following transport types:
stdio
: Standard input/output transportsse
: Server-Sent Events transport
Examples
Start the server with stdio transport:
mcp-lcu-server --transport stdio
Start the server with SSE transport on port 8000:
mcp-lcu-server --transport sse --port 8000
Start the server with both transports:
mcp-lcu-server --transport both
API Documentation
Tools
The server provides various tools for interacting with the Linux system:
CPU Tools
get_cpu_info
: Get detailed CPU informationget_cpu_usage
: Get CPU usage percentageget_load_average
: Get system load averageanalyze_cpu_performance
: Analyze CPU performance
Memory Tools
get_memory_info
: Get detailed memory informationget_memory_usage
: Get memory usageget_swap_info
: Get swap informationanalyze_memory_performance
: Analyze memory performance
Process Tools
list_processes
: List all processesget_process_info
: Get detailed information about a processsearch_processes
: Search for processesanalyze_top_processes
: Analyze top processes by CPU and memory usage
Storage Tools
list_disks
: List physical diskslist_partitions
: List disk partitionsget_disk_usage
: Get disk usageanalyze_storage_usage
: Analyze storage usage
Filesystem Tools
list_directory
: List contents of a directoryread_file
: Read file contentswrite_file
: Write content to a filedelete_file
: Delete a file or directorycopy_file
: Copy a file or directorymove_file
: Move a file or directorysearch_files
: Search for files matching a patternsearch_file_contents
: Search for files containing a pattern
Hardware Tools
get_system_info
: Get general system informationget_cpu_info
: Get CPU informationget_memory_info
: Get memory informationget_storage_info
: Get storage informationget_pci_devices
: Get PCI device informationget_usb_devices
: Get USB device informationanalyze_hardware
: Analyze hardware configuration
Network Tools
get_network_interfaces
: Get network interfaces informationget_network_connections
: Get network connectionsget_network_stats
: Get network statisticsping_host
: Ping a hosttraceroute_host
: Trace route to a hosthttp_get_request
: Perform HTTP GET requestdownload_file_from_url
: Download a file from a URLupload_file_to_url
: Upload a file to a URLanalyze_network
: Analyze network configuration and connectivity
Monitoring Tools
get_system_status
: Get system statuscheck_system_health
: Check system healthmonitor_resources
: Monitor resource usageget_system_uptime
: Get system uptimeget_system_load
: Get system loadanalyze_system_performance
: Analyze system performance
Log Tools
log_list_available_logs
: List all available log sources on the systemlog_get_journal_logs
: Get logs from the systemd journallog_get_system_logs
: Get logs from system log fileslog_get_dmesg
: Get kernel logs from dmesglog_get_application_logs
: Get logs for a specific applicationlog_get_audit_logs
: Get audit logslog_get_boot_logs
: Get boot logslog_get_service_status_logs
: Get logs related to a specific systemd servicelog_search_logs
: Search across multiple log sourceslog_analyze_logs
: Analyze logs to identify patterns and issueslog_get_statistics
: Get statistics about log volume and characteristics
Resources
The server also provides various resources that can be accessed via MCP:
System Resources
linux://system/info
: System informationlinux://system/cpu
: CPU informationlinux://system/memory
: Memory informationlinux://system/uptime
: System uptime
Monitoring Resources
linux://monitoring/status
: System statuslinux://monitoring/health
: System healthlinux://monitoring/resources
: Resource usage
Filesystem Resources
linux://fs/dir/{path}
: Directory listinglinux://fs/info/{path}
: File informationlinux://fs/file/{path}
: File contentslinux://fs/usage/{path}
: Directory usage analysis
Network Resources
linux://network/interfaces
: Network interfaceslinux://network/connections
: Network connectionslinux://network/stats
: Network statisticslinux://network/ping/{host}
: Ping a hostlinux://network/traceroute/{host}
: Trace route to a hostlinux://network/analysis
: Network analysis
Log Resources
linux://logs/available
: List of available log sourceslinux://logs/journal/{parameters}
: Logs from systemd journallinux://logs/system/{log_type}/{parameters}
: Logs from system log fileslinux://logs/kernel/{count}
: Logs from kernel ring buffer (dmesg)linux://logs/application/{app_name}/{parameters}
: Logs for specific applicationslinux://logs/audit/{parameters}
: Logs from the Linux audit systemlinux://logs/boot/{count}
: Logs related to system bootlinux://logs/service/{service}/{count}
: Logs for specific systemd serviceslinux://logs/search/{query}/{parameters}
: Search across multiple log sourceslinux://logs/analysis/{parameters}
: Analysis of log patterns and issueslinux://logs/statistics/{parameters}
: Statistics about log volume and characteristics
Security Considerations
The server provides access to various system operations, which can be potentially dangerous if misused. Make sure to:
- Configure the allowed paths for filesystem operations
- Configure the allowed domains for network operations
- Restrict the ability to kill processes
- Run the server with appropriate permissions
Command Execution Security
The server includes a powerful command execution tool that allows running shell commands on the host system. This feature can pose significant security risks if not properly configured or if used in untrusted environments.
Warning: If you don't want to use the command execution functionality, you have two options:
- Disable it by setting
command.enabled: false
in your configuration file:command: enabled: false
- Remove the MCP tools related to command execution by modifying your server implementation.
When command execution is enabled, consider these additional security measures:
- Use
allowed_commands
to restrict which commands can be executed - Use
blocked_commands
to explicitly block dangerous commands - Set appropriate timeouts and output size limits
- Disable sudo access with
allow_sudo: false
unless absolutely necessary
License
This project is licensed under the MIT License - see the LICENSE file for details.