Repository navigation
Releases: RD2W/opengrok-mcp-server
Release list
Release v1.2.2
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.24to 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
rmcp3.1.3 → 3.5.0. The jump through 3.2.0/3.4.0 required adapting to the
ServerInfo→ServerConfigrename (plusknown_up_to); 3.4.1 → 3.5.0 needed no source
changes.- Other direct bumps —
rustls0.23.43 → 0.23.45,reqwest0.13.5,thiserror2.0.21,
clap4.6.7,toml1.1.6,lru0.18.5. - Transitive refresh —
hyper-util0.1.21,tokio-rustls0.26.6,
rustls-platform-verifier0.7.1,quinn-proto/quinn-udp,cc1.5.1,smallvec1.16.2,
zerocopy0.8.59 and the wasm-onlyjs-sys/wasm-bindgen*/web-sysset. matchitstays at 0.8.4 — it is pinned byaxum 0.8.x; the constraint is now documented
in the workspace manifest and lifts automatically once axum 0.9 ships.
Security
rustls-pemfileremoved (RUSTSEC-2025-0134 — unmaintained, repository archived in
August 2025). PEM parsing now usesCertificateDer::pem_slice_iter()from
rustls-pki-types, whichrustls 0.23already re-exports, so no new dependency was
added; the orphanedbase64 0.22.1went 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
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(default8080) andHEALTHCHECK_PATH(default/healthz) as build args / env vars. The image healthcheck probes127.0.0.1:${HEALTHCHECK_PORT}${HEALTHCHECK_PATH}inside the container, so overridingbind_addrno longer leaves the containerunhealthy.
Tests
- Public health endpoints contract covered — integration tests for
/healthz,/readyz, and/metricsover 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_TOKENenv var name in docs (wasMCP_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
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 throughOPENGROK_*,MCP_SERVER_*,CACHE_*, andRATE_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.1instead of0.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::Debugoutput. list_project_filesfixed — 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 —
suggestandlist_project_filescorrectly parse{results, ...}responses.
Changed
- Module structure —
mcpanddomainmodules 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.examplerewritten in English. - README and docs synced with current defaults and env var coverage.
CI
- Dependabot now targets
devbranch (wasmain).
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
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 usingNeverSessionManagerin rmcp 3.1.x, otherwise all HTTP requests fail
Docker
- UPX binary compression —
upx --bestin 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-upxcomposite 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
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 —
NeverSessionManagerreplacesLocalSessionManager,
no session tracking, noMcp-Session-Id, no GET/DELETE overhead - Protocol negotiation — server announces both 2026-07-28 (preferred) and
2025-11-25 (legacy fallback) viasupported_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
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
/healthzliveness,/readyzreadiness (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