diff --git a/STATUS.md b/STATUS.md index 6afe0de..fac68b3 100644 --- a/STATUS.md +++ b/STATUS.md @@ -30,6 +30,7 @@ Last validated: 2026-01-22 - cloudron-mcp: Built (v0.1.0) - stdio-based, requires CLOUDRON_URL - docker-mcp: Built (v0.1.0) - stdio-based, Python-based, requires Docker socket - drawio-mcp: Built (v1.4.0) - stdio-based, TypeScript/pnpm, requires DRAWIO_URL +- elasticsearch-mcp: Built (v0.2.1) - stdio-based, Rust-based, requires ES_URL - bash-language-server: Built (v5.6.0) - configured in crush.json via wrapper script - docker-language-server: Built (v0.0.0) - configured in crush.json via wrapper script - marksman: Built (2025-12-13) - configured in crush.json via wrapper script @@ -55,6 +56,7 @@ Last validated: 2026-01-22 | cloudron-mcp | Built | Container built from source (374MB). Fixed Dockerfile CMD to use dist/server.js. MCP stdio-based, requires CLOUDRON_URL env var. Version 0.1.0. | | docker-mcp | Built | Container built from Python source (188MB). Uses uv package manager. MCP stdio-based, requires Docker socket mount (/var/run/docker.sock). Version 0.1.0. | | drawio-mcp | Built | Container built from TypeScript source (302MB). Uses pnpm package manager. MCP stdio-based, requires DRAWIO_URL env var. Version 1.4.0. | +| elasticsearch-mcp | Built | Container built from Rust source (22MB). Fixed Dockerfile to pass "stdio" subcommand. MCP stdio-based, requires ES_URL env var. NOTE: Server is deprecated. Version 0.2.1. | | bash-language-server | Built | Container built using prebuilt npm package (190MB). LSP configured in crush.json via wrapper script. Version 5.6.0. | | docker-language-server | Built | Container built from Go source (49.2MB). LSP configured in crush.json via wrapper script. Version 0.0.0. | | marksman | Built | Container built from prebuilt binary (144MB). LSP configured in crush.json via wrapper script. Version 2025-12-13. | diff --git a/docker-compose.yml b/docker-compose.yml index 6cf7394..7ee8d6e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -385,11 +385,11 @@ services: image: kneldevstack-aimiddleware-elasticsearch-mcp build: context: ./vendor/mcp-server-elasticsearch - dockerfile: Dockerfile + dockerfile: ../../dockerfiles/elasticsearch-mcp/Dockerfile container_name: kneldevstack-aimiddleware-elasticsearch-mcp restart: unless-stopped environment: - - ELASTICSEARCH_URL=${ELASTICSEARCH_URL:-http://localhost:9200} + - ES_URL=${ES_URL:-http://localhost:9200} - ELASTICSEARCH_USERNAME=${ELASTICSEARCH_USERNAME} - ELASTICSEARCH_PASSWORD=${ELASTICSEARCH_PASSWORD} ports: diff --git a/dockerfiles/elasticsearch-mcp/Dockerfile b/dockerfiles/elasticsearch-mcp/Dockerfile new file mode 100644 index 0000000..3a4cd77 --- /dev/null +++ b/dockerfiles/elasticsearch-mcp/Dockerfile @@ -0,0 +1,28 @@ +# Copyright Elasticsearch B.V. and contributors +# SPDX-License-Identifier: Apache-2.0 + +FROM rust:1.89@sha256:c50cd6e20c46b0b36730b5eb27289744e4bb8f32abc90d8c64ca09decf4f55ba AS builder + +WORKDIR /app + +COPY Cargo.toml Cargo.lock ./ + +# Cache dependencies +RUN mkdir -p ./src/bin && \ + echo "pub fn main() {}" > ./src/bin/elasticsearch-core-mcp-server.rs && \ + cargo build --release + +COPY src ./src/ + +RUN cargo build --release + +#-------------------------------------------------------------------------------------------------- + +FROM cgr.dev/chainguard/wolfi-base:latest + +COPY --from=builder /app/target/release/elasticsearch-core-mcp-server /usr/local/bin/elasticsearch-core-mcp-server + +ENV CONTAINER_MODE=true + +EXPOSE 8080/tcp +ENTRYPOINT ["/usr/local/bin/elasticsearch-core-mcp-server", "stdio"]