dbus-mcp
Model Context Protocol server that bridges AI assistants to Linux D-Bus, enabling system control through desktop notifications, clipboard, screenshots, and service introspection with configurable security levels.
GitHub Stars
1
User Rating
Not Rated
Forks
0
Issues
0
Views
2
Favorites
0
D-Bus MCP Server
A Model Context Protocol (MCP) server that exposes D-Bus functionality to AI assistants, enabling deep integration with Linux systems - from vacuum cleaners to supercomputers.
Vision
This project enables AI assistants to interact with Linux systems through the standardized D-Bus interface. While Linux runs on everything from vacuum cleaners to supercomputers, this MCP server focuses on two major system roles where D-Bus integration provides the most value:
1. Workstation Role (Interactive Desktop Systems)
For Linux desktop/laptop users, AI assistants can enhance productivity by:
- Managing clipboard content and history
- Sending desktop notifications
- Taking and analyzing screenshots
- Controlling media playback
- Monitoring system resources
- Integrating with desktop applications
2. Dedicated System Role (Servers, Appliances, Embedded)
For systems with specific purposes (web servers, routers, NAS, IoT devices), AI operates as a "maintenance robot" that can:
- Connect to servers via standardized D-Bus interfaces
- Discover available services and capabilities
- Monitor system health and performance
- Analyze logs and diagnose issues
- Perform authorized remediation actions
- Generate reports across server fleets
Key Features
- Secure by Design: Multiple privilege levels, PolicyKit integration, audit logging
- Desktop Environment Agnostic: Uses freedesktop.org standards where possible
- Discoverable: Services self-document through D-Bus introspection
- Type-Safe: D-Bus provides strong typing for all operations
- Rate Limited: Prevents abuse of system resources
Architecture
The MCP server acts as a bridge between AI assistants and the D-Bus system:
graph LR
subgraph "AI Layer"
A[fa:fa-robot AI Assistant<br/>Claude, GPT, etc.]
end
subgraph "Protocol Layer"
B[fa:fa-exchange-alt MCP Protocol<br/>JSON-RPC over stdio/SSE]
end
subgraph "Bridge Layer"
C[fa:fa-server D-Bus MCP Server<br/>Security & Translation]
end
subgraph "System Layer"
D1[fa:fa-desktop Session Bus<br/>Desktop Services]
D2[fa:fa-cog System Bus<br/>System Services]
end
A <-->|"Tools & Resources"| B
B <-->|"Request/Response"| C
C <-->|"Method Calls"| D1
C <-->|"Monitoring"| D2
style A fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#000
style B fill:#f3e5f5,stroke:#4a148c,stroke-width:2px,color:#000
style C fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
style D1 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
style D2 fill:#ffebee,stroke:#b71c1c,stroke-width:2px,color:#000
๐ Security Model - Safety First
The D-Bus MCP server implements configurable safety levels to balance functionality with security:
๐ข HIGH Safety (Default) - Safest Choice
Essential operations with minimal risk: clipboard, notifications, media control, system monitoring
๐ก MEDIUM Safety - Productivity Mode
Adds text editing, file management, and browser operations for AI-assisted workflows
๐ด LOW Safety (Future) - Advanced Users
Maximum functionality for expert users who understand the risks
โซ NEVER ALLOWED - Hard Security Boundaries
Operations like shutdown, disk formatting, and package management are always blocked
# Choose your safety level
python -m dbus_mcp --safety-level high # Default - safest
python -m dbus_mcp --safety-level medium # Productivity features
Quick Start
๐ Complete Quick Start Guide
๐ Recommended: Production Installation with systemd
For production use, we recommend running D-Bus MCP as a systemd service with Unix socket support:
# Clone and install with systemd service
git clone https://github.com/aaronsb/dbus-mcp.git
cd dbus-mcp
./install.sh --prod-only
# Configure safety level
sudo nano /etc/dbus-mcp/config # Set SAFETY_LEVEL="medium"
# Start the service
systemctl --user start dbus-mcp-standalone.service
systemctl --user enable dbus-mcp-standalone.service
# Configure your MCP client with:
# socat UNIX-CONNECT:$XDG_RUNTIME_DIR/dbus-mcp.sock STDIO
# KDE Users: Enable screenshot permission
sudo cp systemd/dbus-mcp-screenshot.desktop /usr/share/applications/
๐ SystemD Mode Guide - Complete setup and configuration
๐ ๏ธ Alternative: Development Mode
For development or testing, you can run directly:
# Quick development setup
./quickstart.sh
# Test the installation
python test_installation.py
# Run directly
python -m dbus_mcp --safety-level medium
The Quick Start Guide includes:
- System requirements and prerequisites
- Multiple installation methods (systemd recommended for production)
- Configuration for Claude Desktop, Claude Code, and VS Code
- Troubleshooting tips
Core Tools
The server starts with essential tools for D-Bus interaction:
Basic Tools (Always Available)
help
- Show available capabilities and toolsnotify
- Send desktop notificationsstatus
- Get system status (battery, network, etc.)discover
- Explore available tool categorieslist_services
- List all D-Bus servicesintrospect
- Explore service interfaces and methodscall_method
- Call D-Bus methods (with security controls)
Desktop Tools (When Display Available)
clipboard_read
/clipboard_write
- Clipboard access (KDE/GNOME)capture_active_window
- Screenshot the active window ๐ธcapture_screen
- Screenshot entire screen ๐ธlist_screenshot_files
- List captured screenshots
๐ธ Screenshot Capability
The server can now capture screenshots through D-Bus, storing them as temporary files with reference IDs. This enables AI assistants to:
- Capture windows or screens for visual context
- Document UI states
- Create visual bug reports
- Guide users with annotated screenshots
KDE Users: To enable screenshots, install the desktop entry file:
sudo cp systemd/dbus-mcp-screenshot.desktop /usr/share/applications/
See the Screenshot Authorization Guide for details.
Screenshots are stored in ~/.cache/dbus-mcp/screenshots/
with proper user permissions, ensuring privacy and persistence. See Screenshot Authorization for KDE setup.
Documentation
๐ Full Documentation
Key Documents:
- Concept Overview - Understand the vision
- Architecture Overview - How it works
- Security Model - Security-first design
- Examples - See it in action
For Developers:
- CLAUDE.md - Development guidelines
- Project Structure - Code organization
- System Profiles - Adapt to any Linux system
For Operators:
- Connection Architecture - Deployment options
- Privilege Model - Security boundaries
- System Roles - Workstation vs Server
Status
๐ง Alpha - Basic functionality implemented, ready for testing
What's Working:
- โ Core MCP server with stdio transport
- โ SystemD service integration with Unix socket support
- โ System profile auto-detection (KDE/Arch tested)
- โ Basic tools: notify, clipboard, status, help
- โ Screenshot capability with file management
- โ Security policies and rate limiting
- โ Progressive tool disclosure
๐ Roadmap
See our comprehensive Development Roadmap for planned features including:
- ๐ต Media control and window management
- ๐ฅ๏ธ Server fleet management tools
- ๐ง GNOME, Sway, and Ubuntu profiles
- ๐ Native socket support
- ๐ค AI-specific enhancements
- And much more!
License
MIT License - see LICENSE for details
Contributing
We welcome contributions! Areas where help is especially appreciated:
- ๐ง System Profiles: Add support for your distro/desktop environment
- ๐ง Tools: Implement new D-Bus tools for common operations
- ๐ Documentation: Improve guides and examples
- ๐งช Testing: Test on different Linux systems
See CLAUDE.md for development guidelines.
Systems/solutions kind of person - jack of many trades, master of very few.
44
Followers
83
Repositories
13
Gists
28
Total Contributions