This is a narrow projection rather than a general server, and the narrowness is the point: nothing here can write, and the parts of presence that must not be tampered with are excluded by design. The limitation worth reading before you configure it is the working-directory one — the repo is resolved per request from the current directory, which is a known constraint the author documents rather than a bug you get to discover.
The MCP projection of presence, a Claude Code plugin that accumulates a per-repository project model and tracks what was committed and whether it stuck. This server makes that accumulated context readable by any MCP-aware client — Claude Desktop, Cursor, Continue, a custom agent — without going through Claude Code's hook plumbing. It is a resources-only server: it exposes no tools and writes nothing.
- Two read-only resources per repository you have worked in: `presence://<repo_id>/model`, the living project notes as Markdown, and `presence://<repo_id>/telemetry`, recent commit, revert and verification claims as JSON
- The project model itself — notes each session builds and reuses about a repo, so the architecture is not re-derived from scratch every time
- Outcome telemetry rather than just history: what was committed, and then whether it was reverted, amended or closed, so a future session can see that the last three changes in this area did not survive
- A vanilla MCP `2024-11-05` implementation over stdin and stdout, answering `initialize`, `resources/list` and `resources/read`; anything else returns a method-not-found error
- A deliberate exclusion list: the tamper-evident audit log, the pending events queue, settings and the manifest lock are all not exposed, so an MCP client cannot read or disturb them
No account, no key, no network — the transport is stdin and stdout, and the server reads only files under the presence state directory. It needs presence itself installed, which is a one-line installer, and Python 3.12 or newer. Start it with the plugin's CLI and the `mcp` subcommand, or install the `presence-mcp` launcher from PyPI so every client config can name one command. **The working directory matters**: the repository is resolved from the current directory at request time, so a desktop client that launches the server from a fixed directory only ever sees that one repo — run a separate instance per project, or set the working directory in the client's per-server config. Under the zerotrust preset, encrypted state is decrypted on read and the client receives plaintext over the local pipe, so choose which clients get access accordingly. Apache 2.0 licensed.
One command — pip install presence-mcp
