{% extends "base.html" %} {% block title %}Install MCP servers — mcprack{% endblock %} {% block content %}

📦 Install new MCP servers

Install a new MCP server straight from PyPI, npm, or a Docker image — no shell access to the host needed. Python installs get their own isolated venv, npm installs their own local (non-global) install directory, and Docker servers run ephemerally (docker run --rm -i) per session — nothing runs permanently in the background.

{% if demo_mode %}
Read-only on this public demo instance — installing new servers is disabled.
{% endif %}

Environment: python3/pip {{ "✓ available" if capabilities.pip else "✗ not found" }} · npm {{ "✓ available" if capabilities.npm else "✗ not found" }} · docker {{ "✓ available" if capabilities.docker else "✗ not usable by the mcprack service account" }}

{% if not capabilities.docker %}

Docker requires the mcprack service account to be in the host's docker group — equivalent to root access, so this is a deliberate manual step, never done automatically: sudo usermod -aG docker mcprack && systemctl restart mcprack.

{% endif %}
🐍 Install from PyPI (pip)

The exact console-script name pip installs into the venv's bin/ — often differs from the package name. Checked exactly; nothing is guessed.

{{ _('Environment variables') }}
📦 Install from npm

The exact name npm links into node_modules/.bin/ — checked exactly, nothing is guessed.

{{ _('Environment variables') }}
🐳 Install from Docker image

Run ephemerally per session as docker run --rm -i <image> — no persistent container. Configured env vars below are forwarded into the container automatically via -e NAME, recomputed every time it starts.

{{ _('Environment variables') }}

Installer-managed servers

{% for server in servers %} {% else %} {% endfor %}
Name Method Package / image Status Version Actions
{{ server.name }} {{ server.install_method }} {{ server.package_spec }} {% if server.install_status == "success" %} ✓ installed {% elif server.install_status == "failed" %} ✗ failed {% else %} ⏳ {{ server.install_status or "queued" }} {% endif %} {{ server.installed_version or '—' }} Edit

No servers installed via mcprack yet.

{% endblock %}