Self-hosting
Install the Snippe MCP server, run it over HTTP, and put it behind a proxy
The server isn't on PyPI yet, so you run it from a clone. It holds no secrets of its own — every caller sends their own key per request — so there's no .env to fill in.
Install
Install Python 3.14 and uv
The server needs Python 3.14 or later. If you don't have it, uv will fetch it for you:
uv python install 3.14Clone and sync
git clone https://github.com/Neurotech-HQ/snippe-mcp.git
cd snippe-mcp
uv syncuv sync creates the virtualenv and installs dependencies. Add --group dev if you plan to run the tests.
Start it
HOST=127.0.0.1 PORT=8010 uv run snippe-mcp --transport httpThis serves /console/mcp, /checkout/mcp, and /health from one process.
Confirm it's up
curl http://127.0.0.1:8010/health
# {"status":"healthy","service":"snippe-mcp"}/health answers without touching the Snippe API, so a healthy response there points at credentials or connectivity rather than the server itself.
CORS is configured automatically for HTTP transports — no extra setup to put this behind a load balancer.
Configuration
| Variable | Default | Description |
|---|---|---|
SNIPPE_TRANSPORT | stdio | Set to http to run as a service instead of a subprocess. |
HOST | 0.0.0.0 | Bind address. HTTP transports only. |
PORT | 8000 | Listen port. HTTP transports only. |
The equivalent CLI flags — --transport, --host, --port — take precedence.
Behind a reverse proxy
Bind to 127.0.0.1 and terminate TLS at your existing proxy, so the per-request Snippe keys never travel in cleartext. The proxy must pass the Authorization header through — stripping it is the most common cause of a 401:
proxy_set_header Authorization $http_authorization;
proxy_pass_request_headers on;Don't bind 0.0.0.0 on a public host. The default accepts connections from
anywhere on the network, and the server relays whatever key it's handed.
To keep it running across reboots, the repo ships a systemd unit and deployment notes in deploy/.
Troubleshooting
uv run fails on the Python version. The server requires 3.14 or later. Run uv python install 3.14, then uv sync again.
A deployment looks dead. Hit /health first — if that answers, the process is fine and the problem is upstream.
Clients get 401s but the server looks healthy. Your proxy is probably dropping Authorization. See Connect a Client.