mcp server
loupe
A document- and site-review tool for humans working with AI agents.
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 22, 2026Loupe
Loupe is a document- and live-review tool for humans working with AI agents.
loupe.ac — the hosted instance · Documentation — install, connect an agent, operate it
An agent (or a person) submits a Markdown document; humans review it inline — selecting text, leaving comments, and either approving it or requesting changes. A Model Context Protocol (MCP) endpoint lets AI coding agents create documents and hand back a review URL, so a long-form plan or spec gets considered human feedback instead of scrolling past in a terminal. A companion live-review widget brings the same select-and-comment flow to live web pages.
Built with Symfony, Tailwind CSS and Symfony UX (Stimulus + Turbo).
Features
- Document review — submit Markdown, review it rendered, comment on selected passages, approve or request changes, and revise across versions.
- MCP endpoint — an agent signs in through OAuth and calls
document_create/document_revise, receiving a shareable review URL. - Live review — an embeddable widget for leaving review comments on any web page, streamed back to the reviewer over Mercure.
- Command-line bridge (preview, unreleased) — a Go binary
(
cli/) that watches your board and runs a non-interactive Claude Code worker for every card moved tonext. - Scoped OAuth access — separate MCP, agent and
site-reviewscopes. An agent signs in through your browser, and nobody copies a credential by hand.
Try it
One container holding the app, its worker and Postgres:
docker run --rm -p 127.0.0.1:8080:80 ghcr.io/loupe-ac/loupe:demo
Open http://localhost:8080 and log in with admin@example.com /
loupe-admin. Bind to 127.0.0.1 as above — that password is published on this
page.
The image is for evaluating Loupe, not running it: its APP_SECRET is a
committed constant, nothing terminates TLS, and mail is discarded. See
Demo for the volume and port options.
Develop on it
just up # start nginx, php-fpm, postgres
just composer install # runs inside the php-fpm container
just migrate-run # set up the database
just exec bin/console app:dev:seed # log in as dev@loupe.test / password
just up publishes no host port — it expects a reverse proxy on an external
Docker network named traefik, and fails rather than degrades without one.
examples/ holds a working proxy and a plain-HTTP alternative;
Reverse proxy explains the choice.
Documentation
The full documentation is published at
loupe.ac/docs. It is built
from docs/ in this repository, so the same pages are readable
here on GitHub:
- Getting started connects your coding agent and takes you through a first review
- Installing Loupe gives five ways to run it, and helps you choose one
- Using Loupe — documents, MCP, live review, admin
- Extending Loupe — proxy, Mercure, object storage, social login, billing
- Operating — first run, recovery, backups
- Environment variables and console commands
- Troubleshooting and Known gaps
Contributing
See CONTRIBUTING and Development. Please report security issues privately — see SECURITY.
License
Copyright (C) 2026 Geoffrey Bachelet.
Licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). If you run a modified version of Loupe as a network service, the AGPL requires you to make your source available to its users.
Every page carries a "Source code" link in the footer to satisfy that. It points
wherever APP_SOURCE_URL says, defaulting to this repository — correct for an
unmodified instance, and wrong for a modified one. If you change the code, set
APP_SOURCE_URL to the repository that holds your version.