Install and check
Install the server from a package for Debian, Ubuntu, Fedora, openSUSE Leap or Arch Linux, or from a clone of the repository, then run the tests that need no browser and the smoke test.
Before anything else
The server does not work without an encrypted directory. The browser it attaches
to keeps your signed-in sessions in its profile, and they must not sit on the
disk in clear. After the installation, the first command is
mcp-server-diwall-browser-setup (from a clone,
.venv/bin/python -m mcp_server_diwall_browser.setup), which you run yourself in
a terminal: it reads your machine and ends on the next command to type.
Two ways to go on. A trial, mcp-server-diwall-browser-setup create --temporary,
makes a volume in memory: closing it, stopping the machine or ending your
session destroys it, and with it the sessions of the sites you opened, the audit
journal and the captures. A durable volume,
mcp-server-diwall-browser-setup create, keeps them. In both, you type the
password yourself at the prompt of gocryptfs, and you sign in to your sites
yourself in the browser the assistant starts. After adding the server to your MCP
client, restart the client: a session already open does not see the new server.
The steps are in
the encrypted directory.
What you need
- Linux. The operator guide is written for Debian 13, where the project’s tests ran.
- Python 3.12 or later.
- Google Chrome, Chromium or Brave.
fuse3andgocryptfsfor the encrypted directory,kdialogorzenityfor the confirmation window,git, andss(packageiproute2).
On Debian 13 and Ubuntu 24.04, the system packages (command replayed in a clean container of each system):
sudo apt install python3-venv fuse3 gocryptfs kdialog iproute2 git
With the package, python3-venv, fuse3, gocryptfs and kdialog come with it: this line is mostly for the clone route.
Outside KDE, zenity can stand for kdialog.
The browser is installed separately. On Debian 13, it is the package
chromium (155.0.8059.79):
sudo apt install chromium
On Ubuntu 24.04 there is no chromium package (chromium-browser only
installs a Snap launcher): install Google Chrome from its .deb file.
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
Install
A 64-bit ARM machine takes the same .deb. On a Raspberry Pi 4 Model B under Raspberry Pi OS (Debian 13, aarch64) with Chromium 155, the installation, the first launch, the smoke test and the complete suite (2694 tests passed, 1 skipped) were run; the operator guide, section 1 and section 12, says what differs from a PC.
From a package
Download the package of your system and install it from the folder that holds
it. The sum of each file is in SHA256SUMS:
sha256sum -c --ignore-missing SHA256SUMS.
- Debian 13, Ubuntu 24.04 and 26.04:
mcp-server-diwall-browser_0.0.1-1_all.deb, thensudo apt install ./mcp-server-diwall-browser_0.0.1-1_all.deb - Fedora 44:
mcp-server-diwall-browser-0.0.1-1.fc44.noarch.rpm, thensudo dnf install ./mcp-server-diwall-browser-0.0.1-1.fc44.noarch.rpm - openSUSE Leap 16.0:
mcp-server-diwall-browser-0.0.1-1.leap160.noarch.rpm, thensudo zypper install --allow-unsigned-rpm ./mcp-server-diwall-browser-0.0.1-1.leap160.noarch.rpm - Arch Linux:
mcp-server-diwall-browser-0.0.1-1-any.pkg.tar.zst, thensudo pacman -U ./mcp-server-diwall-browser-0.0.1-1-any.pkg.tar.zst
The package pulls in Python, fuse3, gocryptfs and kdialog or zenity by
itself, and installs the dependencies of the server in a virtual environment of
its own, which needs a network connection. You install the browser. Installation,
the start of the server by an ordinary account and removal are validated in
containers on these systems. A container shows neither the confirmation window,
nor the mounting of the encrypted directory, nor a browser. Debian 12 and Ubuntu
22.04 are not supported: their Python is older than 3.12. The package adds the
commands mcp-server-diwall-browser, mcp-server-diwall-browser-credential-import
and mcp-server-diwall-browser-setup, and the manual page man mcp-server-diwall-browser.
It ends by printing the first command to type, mcp-server-diwall-browser-setup.
From a clone of the repository
A clone of the repository installs the server with its test tools. ~ is your
home directory.
git clone https://github.com/RonanDavalan/mcp-server-diwall-browser.git \
~/mcp-server-diwall-browser
cd ~/mcp-server-diwall-browser
python3 -m venv .venv
.venv/bin/python -m pip install -e ".[dev]"
python3 --version must print 3.12 or later; otherwise name the interpreter,
python3.12 or python3.13, in the third command. The versions the project
tested are pinned in requirements.lock.
Check
Two commands, from the clone. The package ships neither the tests nor scripts/smoke_test.py;
with the package, the check is mcp-server-diwall-browser-setup, with no argument, which reads
the machine and changes nothing. Neither command below touches your browser, your encrypted
directory or your operator profile.
.venv/bin/python -m pytest -q -m "not browser"
.venv/bin/python scripts/smoke_test.py
The first runs every test that needs no browser. On the code of version 0.0.1, with Python 3.12.11:
2100 passed, 1 skipped, 589 deselected, 1 warning in 105.36s (0:01:45)
The skipped test changes the owner of a file, which needs root. The second starts the server against a browser of its own, on a blank temporary profile, and observes the demo page of the repository. The same day, with Google Chrome:
browser executable: google-chrome (Chrome/155.0.8059.84)
server 0.0.1, configured: True
browser Chrome/155.0.8059.84, attached: True
encrypted directory closed_or_absent (encrypted_dir_undetermined), action expected: operator_opens_directory
tab origin http://127.0.0.1:38565
marks 4
image yes
tree lines 10
redacted_fields 1
password value in the result absent
elements 1 textbox "User name", 2 textbox "Password", 3 button "Sign in", 4 link "Help"
result: conforming
The port of tab origin changes at every run. The encrypted directory reads
closed_or_absent on purpose: the smoke test gives the server a directory that
is not mounted. The command returns 0 when the result is as expected, 1 when a
line differs (it ends with <- not as expected), and 3 when it finds no
browser on your PATH. --save-image ~/observe.png writes the image
the model received.
With a browser on your PATH, .venv/bin/python -m pytest -q also runs the
589 browser tests, each on a blank temporary profile.
Next: start the browser on its own profile, step 2. Every option of this step is in section 2 of the operator guide.