Skip to content

Releases: RD2W/opengrok-mcp-server

Release v1.2.2

Choose a tag to compare

@github-actions github-actions released this 30 Sep 13:03
1167973

OpenGrok MCP Server v1.2.2

Maintenance release — MSRV raised to Rust 1.98, dependency refresh through rmcp 3.5.0, and
the unmaintained rustls-pemfile removed: the dependency set is now advisory-free.


What's new since v1.2.1

Build

  • MSRV raised to Rust 1.98 (rust-version = "1.98"); the Docker builder image moves to
    rust:1.98.1-alpine3.24 to match the toolchain used locally and in CI. The Rust badge in
    the README and the requirement lines in the EN/RU installation pages were updated with it.

Dependencies

  • rmcp 3.1.3 → 3.5.0. The jump through 3.2.0/3.4.0 required adapting to the
    ServerInfo → ServerConfig rename (plus known_up_to); 3.4.1 → 3.5.0 needed no source
    changes.
  • Other direct bumps — rustls 0.23.43 → 0.23.45, reqwest 0.13.5, thiserror 2.0.21,
    clap 4.6.7, toml 1.1.6, lru 0.18.5.
  • Transitive refresh — hyper-util 0.1.21, tokio-rustls 0.26.6,
    rustls-platform-verifier 0.7.1, quinn-proto/quinn-udp, cc 1.5.1, smallvec 1.16.2,
    zerocopy 0.8.59 and the wasm-only js-sys/wasm-bindgen*/web-sys set.
  • matchit stays at 0.8.4 — it is pinned by axum 0.8.x; the constraint is now documented
    in the workspace manifest and lifts automatically once axum 0.9 ships.

Security

  • rustls-pemfile removed (RUSTSEC-2025-0134 — unmaintained, repository archived in
    August 2025). PEM parsing now uses CertificateDer::pem_slice_iter() from
    rustls-pki-types, which rustls 0.23 already re-exports, so no new dependency was
    added; the orphaned base64 0.22.1 went with it. A scan of the direct dependencies
    against OSV now reports no advisories.

Tests

  • PEM parsing parity test — a bundle holding a private key plus a certificate must still
    yield exactly one certificate, locking the behaviour across the migration. Total:
    185 tests (was 184).

Documentation

  • Status/version references updated (v1.2.1 → v1.2.2, test count 184 → 185) in the EN/RU
    overview, installation pages, and README.
  • Table formatting normalised across the EN/RU docs (layout only, no content change).

Docker

docker pull rd2w/opengrok-mcp:1.2.2
docker pull ghcr.io/rd2w/opengrok-mcp-server:1.2.2

Links

Release v1.2.1

Choose a tag to compare

@github-actions github-actions released this 19 Aug 13:05
c4bb9e3

OpenGrok MCP Server v1.2.1

Bugfix and maintenance release — container healthcheck fix, health endpoint test coverage, Makefile targets, and dependency updates.


What's new since v1.2.0

Fix

  • Container health restored — the Dockerfile now exposes HEALTHCHECK_PORT (default 8080) and HEALTHCHECK_PATH (default /healthz) as build args / env vars. The image healthcheck probes 127.0.0.1:${HEALTHCHECK_PORT}${HEALTHCHECK_PATH} inside the container, so overriding bind_addr no longer leaves the container unhealthy.

Tests

  • Public health endpoints contract covered — integration tests for /healthz, /readyz, and /metrics over the HTTP transport (stateless Streamable HTTP, MCP 2026-07-28).

Build

  • Makefile — make dev, make docker-build, make docker-push, make test, and other targets for local development and Docker workflows.

Dependencies

  • 34 packages updated to latest semver-compatible versions (rmcp 3.1.2 → 3.1.3, futures 0.3.33 → 0.3.34, quinn-proto, rustls-webpki, icu 2.2 → 2.3, uuid, etc.).

Documentation

  • Fixed MCP_AUTH_TOKEN env var name in docs (was MCP_TOKEN).
  • Status/version references updated (v1.1.1 → v1.2.1, test count 170 → 184) in EN/RU overview, installation, and README.

Docker

docker pull rd2w/opengrok-mcp:1.2.1
docker pull ghcr.io/rd2w/opengrok-mcp-server:1.2.1

Links

Release v1.2.0

Choose a tag to compare

@github-actions github-actions released this 10 Aug 14:30
91552d3

OpenGrok MCP Server v1.2.0

Feature release — env var overrides for all config fields, tool call metrics + LRU cache, security hardening, and multiple OpenGrok API fixes.


What's new since v1.1.1

Added

  • Environment variable overrides for every config field — [opengrok], [server], [cache], and [rate_limit] sections can be configured entirely through OPENGROK_*, MCP_SERVER_*, CACHE_*, and RATE_LIMIT_* env vars. No config file required for containerized deployments.
  • Tool call metrics — per-tool call count, error count, and duration tracking (replaces basic counters).
  • LRU cache — bounded memory usage via LRU eviction (was unbounded TTL DashMap).

Fixed

  • Loopback bind by default — server listens on 127.0.0.1 instead of 0.0.0.0, preventing accidental network exposure.
  • Token auth hardened — Bearer token extraction aligned with gerrit-mcp-server pattern; tokens no longer leak into AuthMode::Debug output.
  • list_project_files fixed — uses directory listing API, no longer explodes on large repositories with deep file trees.
  • Response size guard — responses exceeding 50 MiB are rejected with a clear error (was: unbounded memory consumption).
  • Timeout — increased for slow/heavily-loaded OpenGrok backends.
  • API wrapper objects — suggest and list_project_files correctly parse {results, ...} responses.

Changed

  • Module structure — mcp and domain modules split into focused sub-modules for better navigation.
  • Dependencies — reqwest unpinned (0.13), lru upgraded (0.15 → 0.18). Removed unused dev-deps.

Documentation

  • Config examples and .env.example rewritten in English.
  • README and docs synced with current defaults and env var coverage.

CI

  • Dependabot now targets dev branch (was main).

Docker

docker pull rd2w/opengrok-mcp:1.2.0
docker pull ghcr.io/rd2w/opengrok-mcp-server:1.2.0

Links

Release v1.1.1

Choose a tag to compare

@github-actions github-actions released this 09 Aug 11:10

OpenGrok MCP Server v1.1.1

Bugfix and optimization release — rmcp 3.1.2 upgrade, UPX binary compression (34% smaller image), and dependency updates.


What's new since v1.1.0

Fix

  • rmcp 3.0.1 → 3.1.2 — MCP protocol conformance fixes: stateless request routing for 2026-07-28, MRTR round-trip support, per-request protocol metadata validation, cancel-safe receive
  • Legacy session mode disabled — StreamableHttpServerConfig::with_legacy_session_mode(false) required when using NeverSessionManager in rmcp 3.1.x, otherwise all HTTP requests fail

Docker

  • UPX binary compression — upx --best in Dockerfile and CI release pipeline (both x86_64 and aarch64)
  • Image size: 35 MB → 23 MB (34% reduction)

Dependencies

  • 28 packages updated to latest semver-compatible versions (base64, clap, thiserror, zerocopy, async-trait, aws-lc-rs, etc.)

CI

  • Added install-upx composite action for binary release builds
  • SPDX headers on CI and release workflow files

Docker

docker pull rd2w/opengrok-mcp:1.1.1
docker pull ghcr.io/rd2w/opengrok-mcp-server:1.1.1

Links

Release v1.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 10:05

OpenGrok MCP Server v1.1.0

Upgrade to MCP 2026-07-28 —
stateless Streamable HTTP, protocol negotiation, and multi round-trip requests (MRTR).


What's new since v1.0.0

MCP 2026-07-28 protocol

  • rmcp 2.2 → 3.0 — support for the latest MCP specification
  • Stateless HTTP — NeverSessionManager replaces LocalSessionManager,
    no session tracking, no Mcp-Session-Id, no GET/DELETE overhead
  • Protocol negotiation — server announces both 2026-07-28 (preferred) and
    2025-11-25 (legacy fallback) via supported_protocol_versions()
  • MRTR — multi round-trip request types handled automatically by
    #[tool_router] macro, no handler code changes required

Docker

  • Consolidated LABEL into single layer
  • Added ghcr.io publishing to release workflow

Documentation

  • Tool names in overview updated to match the actual 25 implemented tools
  • Architecture docs: updated for stateless HTTP and 2026-07-28 protocol
  • Test count: 102 → 158

Dependencies

  • 9 minor updates (schemars, rustls, toml, http, etc.)

Docker

docker pull rd2w/opengrok-mcp:1.1.0
docker pull ghcr.io/rd2w/opengrok-mcp-server:1.1.0

Links

Release v1.0.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 10:21

First stable release: OpenGrok MCP Server v1.0.0. 🚀

opengrok-mcp-server is an MCP server that wraps the full OpenGrok REST API as tools for LLM-powered coding assistants (Claude, Cursor, etc.). Built for AOSP-scale code search — 25 tools, dual transport, caching, rate limiting, and Prometheus metrics.


Features

25 MCP Tools

Search
search_code, search_definition, search_references, search_file_path, search_history, advanced_search, suggest

Files
get_file_content, get_file_definitions, get_file_genre, get_history, get_annotation

Navigation
list_directory, list_indexed_projects, list_all_projects, list_groups, get_group_projects, list_project_files, list_project_repos, get_project_property

Other
get_repo_property, get_suggest_config, get_index_time, get_opengrok_version, health_check

Authentication

  • Bearer token and HTTP Basic Auth for connecting to OpenGrok
  • Custom CA certificates for corporate deployments
  • Credentials from environment variables only — never stored in config

Transport

  • stdio — local subprocess, Claude Desktop, docker exec
  • Streamable HTTP — axum + rmcp for multi-client deployments
  • Both — simultaneous stdio + HTTP

TLS

  • rustls (pure Rust), system trust store, custom CA certs
  • Optional verification disable for trusted networks

Caching & Rate Limiting

  • In-memory TTL cache (DashMap-based)
  • Token-bucket rate limiting (governor, GCRA)

Health & Metrics

  • /healthz liveness, /readyz readiness (with OpenGrok probe)
  • /metrics — Prometheus (uptime_seconds, tool_calls_total, tool_errors_total)

Docker

  • Multi-arch (amd64, arm64), ~35 MB Alpine image
  • Docker Compose for local build and Docker Hub
  • Non-root user, OCI labels, healthcheck in image

Documentation

  • Bilingual EN/RU docs, README, config examples, contributing guide
  • API coverage matrix mapping all OpenGrok endpoints to MCP tools

Docker

docker pull rd2w/opengrok-mcp:latest

Links