Run with Docker
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
git clone https://github.com/LennardZuendorf/indexed.git
cd indexed
docker build -t indexed .Run the MCP Server
docker run -p 8000:8000 \
-v ~/.indexed:/root/.indexed \
indexed mcp run --transport http --host 0.0.0.0 --port 8000This:
- Exposes the MCP server on port 8000
- Mounts your local
~/.indexeddirectory 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:
services:
indexed:
build: .
ports:
- "8000:8000"
volumes:
- ~/.indexed:/root/.indexed
command: mcp run --transport http --host 0.0.0.0 --port 8000
restart: unless-stoppeddocker compose up -dIndex Documents in Docker
You can also run indexing commands inside the container:
# 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 configurationdata/collections/— your FAISS indexes and document metadata