Indexed
Guides

Run with Docker

Run Indexed in Docker for persistent deployment and team-wide access.

Run with Docker

Docker is useful for running Indexed as a persistent MCP server — especially for team setups where multiple people need access to the same search index.

Prerequisites

  • Docker installed
  • Optionally, Docker Compose

Build the Image

Terminal
git clone https://github.com/LennardZuendorf/indexed.git
cd indexed
docker build -t indexed .

Run the MCP Server

Terminal
docker run -p 8000:8000 \
  -v ~/.indexed:/root/.indexed \
  indexed mcp run --transport http --host 0.0.0.0 --port 8000

This:

  • Exposes the MCP server on port 8000
  • Mounts your local ~/.indexed directory so the container can access your existing collections and config
  • Uses HTTP transport (required for Docker, since stdio doesn't work across container boundaries)

Docker Compose

For a more permanent setup, use Docker Compose:

docker-compose.yml
services:
  indexed:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - ~/.indexed:/root/.indexed
    command: mcp run --transport http --host 0.0.0.0 --port 8000
    restart: unless-stopped
Terminal
docker compose up -d

Index Documents in Docker

You can also run indexing commands inside the container:

Terminal
# Index local files (mount the source directory)
docker run -v ~/.indexed:/root/.indexed \
  -v ~/work/docs:/data/docs \
  indexed index create files -c my-docs -p /data/docs

# Index Jira (pass credentials via environment)
docker run -v ~/.indexed:/root/.indexed \
  -e JIRA_API_TOKEN=your_token \
  -e JIRA_EMAIL=your@email.com \
  indexed index create jira -c tickets \
  -u https://company.atlassian.net \
  -q "project = ENG AND created >= -90d"

Connect AI Clients to Docker

When Indexed runs via HTTP transport in Docker, configure your AI clients to connect to the HTTP endpoint instead of using stdio.

For Claude Desktop with a remote/Docker MCP server, you'll need an MCP client that supports HTTP transport, or use a proxy that bridges stdio to HTTP.

Stdio vs HTTP

For single-user local setups, stdio transport (the default) is simpler and recommended. Use Docker + HTTP when you need persistent deployment or shared team access.

Data Persistence

The -v ~/.indexed:/root/.indexed volume mount ensures your collections persist across container restarts. Without it, your index data will be lost when the container stops.

All data is stored in this single directory:

  • config.toml — your configuration
  • data/collections/ — your FAISS indexes and document metadata

What's Next