MCP Server

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.14

Clone and sync

git clone https://github.com/Neurotech-HQ/snippe-mcp.git
cd snippe-mcp
uv sync

uv 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 http

This 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

VariableDefaultDescription
SNIPPE_TRANSPORTstdioSet to http to run as a service instead of a subprocess.
HOST0.0.0.0Bind address. HTTP transports only.
PORT8000Listen 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.

On this page