For a few months now I have been working on Pippo, a native MCP (Model Context Protocol) server written in C++ for Haiku. The idea is easy to state and a bit harder to pull off: take the things that make Haiku different from any other system, namely the BeOS scripting protocol, BeFS extended attributes and filesystem queries, and make them drivable by an LLM client through a standard API, without inventing anything proprietary.
Pippo runs as an ordinary BApplication and listens on localhost at port 2607, speaking HTTP plus SSE. Any MCP-compatible client connects and finds the system's native tools waiting for it: it can read and write the properties of any running application via BeOS scripting, read and write extended attributes on files, run queries (live ones too, with real-time updates over SSE), manage the system clipboard and, at the higher privilege levels, inject mouse and keyboard events through a dedicated input_server add-on.
The example that to me captures the point of the project is this one: I ask the LLM to tag a source file with a BeFS attribute, say project:component equal to "core", and right after I ask it to find me every file marked that way. It writes the attribute, fires off a BQuery and hands them back. It is not an external database, it is not a parallel index, it is the Haiku filesystem used for exactly what it was designed to do, except now there is a model driving it.
There is also a small built-in BeAPI documentation dataset, nearly two thousand question and answer pairs across roughly three hundred topics, so the client can look up code examples without leaving the session. In the Deskbar you will find a replicant that shows the server status, active sessions and a few statistics, and the settings reload on the fly via Node Monitor without restarting anything.
On the security side Pippo binds only to 127.0.0.1, has DNS rebinding protection with Host and Origin header validation, and three privilege levels (SAFE for read only, EXTENDED for writing, PRIVILEGED for input injection and application control), so you decide how much you let it do.
It needs Haiku R1/beta5 or later and the standard development tools (gcc, jam or make). You build it with make and install it with the included script, which also registers it as a launch service. MIT license.
The code is here: https://codeberg.org/atomozero/Pippo
Feedback, criticism and pull requests are all welcome. What I am most curious about is which tools strike you as useful and which seem dangerous or pointless instead, and whether the "expose the system as it is" approach holds up for people who actually use Haiku.