emperor-folder 0.1.2

MCP server confined to one folder: list, read, search, stat, write, edit and move files, never outside the root
Documentation
# emperor-folder: MCP server confined to one folder, over stdio.
#
#   docker build -t emperor-folder .
#   docker run -i --rm -v "$PWD:/data" emperor-folder                 # read-only
#   docker run -i --rm -v "$PWD:/data" emperor-folder --root /data --writable
#   docker run -i --rm -v "$PWD:/data" -e FOLDER_WRITABLE=true emperor-folder   # the same

FROM rust:1.88-slim-bookworm AS build
WORKDIR /src
COPY Cargo.toml Cargo.lock ./
COPY src ./src
RUN cargo build --release --locked --bin emperor-folder

FROM debian:bookworm-slim
LABEL org.opencontainers.image.title="emperor-folder" \
      org.opencontainers.image.description="MCP server confined to one folder: list, read, search, stat, write, edit and move files, never outside the root" \
      org.opencontainers.image.source="https://github.com/yarenty/emperor-folder" \
      org.opencontainers.image.url="https://github.com/yarenty/emperor-folder" \
      org.opencontainers.image.licenses="MIT OR Apache-2.0"
RUN useradd --system --uid 10001 --no-create-home --shell /usr/sbin/nologin folder \
    && mkdir /data && chown folder:folder /data
COPY --from=build /src/target/release/emperor-folder /usr/local/bin/emperor-folder
USER folder
WORKDIR /data
ENTRYPOINT ["emperor-folder", "serve", "--stdio"]
CMD ["--root", "/data"]