Ryan Malloy fa41ffbf80 Harden all tool/resource paths per Hamilton review
- Add asyncio.wait_for timeout (30s) to all D-Bus calls
- Add asyncio.Lock to BusManager.get_bus to prevent race conditions
- Convert recursive tree walk to bounded BFS with visited set, max depth (20), max nodes (500)
- Add input validation for D-Bus names and object paths at tool boundary
- Standardize error handling (RuntimeError, TimeoutError) across all tools
- Catch JSONDecodeError in deserialize_args and set_property
- Check arg count matches signature in deserialize_args
- Add explicit variant wrapping via {"signature": "ai", "value": [1,2,3]}
- Narrow resource exception handling from Exception to (RuntimeError, OSError)
- Guard disconnect_all per-bus to avoid partial cleanup on error
- Audit log system bus calls and all set_property calls to stderr
- Consolidate _get_mgr into get_mgr in _bus.py
- Sort MPRIS players for deterministic auto-discovery
- Fix progress reporting (pass None as total when unknown)
- Add 7 new tests for validation, arg count, and JSON error paths (32 total)
2026-03-05 20:31:06 -07:00

mcdbus

D-Bus MCP server — bridge Linux IPC into the Model Context Protocol.

Gives Claude native tool access to session and system D-Bus services through introspection-first discovery.

Install

uv run mcdbus

Add to Claude Code

claude mcp add mcdbus -- uv run --directory /path/to/mcdbus mcdbus
Description
D-Bus MCP server — bridge Linux IPC into the Model Context Protocol
Readme 387 KiB
Languages
MDX 57.6%
Python 39.9%
JavaScript 1.5%
Dockerfile 0.4%
CSS 0.4%