Releases: MapleMapleCat/Grok_Search_Mcp
Release list
v0.2.2
Overview
v0.2.2 strengthens MCP request accounting and upstream stream integrity, makes the administration panel more reliable under pagination and partial runtime-configuration failures, and introduces automated Linux release archives alongside the versioned Docker image.
Reliability and security
- Ambiguous MCP routing fields are rejected. Duplicate or case-colliding JSON-RPC
method,params, and tool-name fields can no longer bypass RPM, concurrency, quota, or usage accounting. - Prematurely terminated upstream streams now fail explicitly. Chat Completions and Anthropic streams must reach their protocol terminal events; truncated answers are rejected and reserved successful-call quota is rolled back.
- Quota rollback preserves the original reservation period. Delayed failures after a monthly rollover can no longer decrement another period, and each reservation is released at most once across normal and panic cleanup paths.
- Panel rendering paths are hardened. Browser HTML sinks are centralized behind sanitization, API errors expose stable codes, and authentication handlers are split into clearer registration and session boundaries.
Administration panel
- Dashboard health reflects the real upstream state. The panel distinguishes healthy, degraded, unhealthy, and unknown states instead of presenting an unsupported availability claim.
- Overview loading is independent from health probes. Upstream checks are cached and coalesced, local dashboard data can load without waiting for them, and settings updates invalidate stale health results.
- Saved-but-not-applied settings remain visible. Durable and live settings revisions are tracked separately across storage, APIs, health checks, and the UI so partial runtime application failures are not mistaken for successful activation.
- Tier assignments are preserved across cursor pages. The user editor loads all tier pages and blocks stale references, preventing unrelated edits from silently changing assignments.
- Invite redemption history is bounded with stable pagination. Storage, API responses, modal state, and controls now use keyset pagination for large histories.
Release and documentation
- Publishing a GitHub Release now runs the full Go test suite, builds Linux
amd64andarm64archives, uploads SHA-256 checksums, and publishes the matching multi-architecture Docker image. - Runtime, proxy, persisted-settings, panel-route, credential-recovery, Docker, and release-workflow documentation has been aligned with current behavior.
- The default build version and documented Docker image tag are updated to
v0.2.2.
Upgrade notes
- v0.2.2 is intended as an upgrade from v0.2.1.
- Database migrations, including persisted settings revision tracking, are applied automatically at startup; no manual migration is required.
- No new mandatory environment variables are introduced.
- As with previous project releases, v0.2.2 is published as a prerelease.
Included commits
e95ac9cdocs(readme): refresh setup and runtime guidance3733699fix(grok): reject prematurely terminated streamscf6d211refactor(panel): harden rendering and split auth handlers33854f2feat(release): automate GitHub release assetsc5b9801fix(usage): reject ambiguous MCP routing fields771e8ccfix(panel): report real overview health status6761770docs(readme): align runtime and deployment contractse2188a4fix(quota): preserve reservation period on rollback94960acchore(gitignore): exclude local agent metadataca4ea77fix(panel): preserve tier assignments across cursor pagese95425ffix(panel): decouple dashboard loading from health probes5a2d2a4fix(settings): preserve saved-not-applied runtime statefc1080ffix(invites): bound redemption history with pagination564197fchore(release): prepare v0.2.2
Full changelog: v0.2.1...v0.2.2
v0.2.1
Overview
v0.2.1 expands registration security and auditability while reducing memory pressure and SQLite write contention under load. It also adds opt-in operational metrics for administrators and aligns the Go module path with the canonical GitHub repository.
Security and registration
- Proof of work is now required for registration. The server issues signed, single-use registration challenges that are bound to the submitted registration data. The browser solves the SHA-256 challenge in a Web Worker before password hashing and account creation begin.
- Challenge issuance is rate-limited. This reduces the cost of automated registration abuse before expensive bcrypt work reaches the server.
- Registration mode is enforced atomically. The authoritative registration policy is read and validated inside the same SQLite transaction as user creation, preventing a concurrent mode change from bypassing disabled or invite-only registration.
- Invite registration no longer leaks username availability. Invite-code existence is checked before username lookup and bcrypt work, while final invite validation and consumption remain authoritative inside the registration transaction.
- Forwarded client IP handling is hardened. Forwarded headers are parsed with bounded work and client addresses are canonicalized, limiting memory amplification from malicious
X-Forwarded-Forinput.
Performance and reliability
- SQLite usage writes are batched asynchronously. Usage persistence now reduces write-path contention without increasing the number of concurrent SQLite writers.
- Search capacity is released before quota rollback. Failed operations no longer hold scarce search capacity while compensating quota state.
- Rate limiter state is sharded and reclaimed incrementally. This lowers lock contention and reduces retained memory after temporary high-cardinality traffic spikes.
- SSE parsing performs fewer allocations. Event processing is byte-oriented, and the per-event limit is separated from the total response budget so complete raw responses are preserved without unnecessary temporary strings.
- Upstream error bodies are bounded. Non-2xx responses can no longer trigger excessive allocation or garbage-collection pressure through oversized response bodies.
Administration and auditability
- Invite-code redemption history is persisted atomically with registration. Audit records retain the redeemed invite code, the created user, and the redemption time.
- Administrators can inspect invite registration history in the panel. The release includes the supporting panel endpoints, pagination, and database migration.
- Invite pagination refreshes after create and delete operations. The panel no longer displays stale or inconsistent pages after invite-code changes.
- Unexpected registration storage failures return server errors. Internal failures are no longer misreported to clients as HTTP 400 validation errors.
- Operational metrics are opt-in. Database and asynchronous usage-writer metrics remain disabled by default and are exposed only after an administrator enables the persisted runtime setting.
Project and release changes
- The Go module path, internal imports, and documented linker flags now use the canonical repository path:
github.com/MapleMapleCat/Grok_Search_Mcp. - The default build version and documented Docker image tag have been updated to v0.2.1.
Upgrade and compatibility notes
- v0.2.1 is intended as an upgrade from v0.2.0.
- The application automatically applies the new invite-code redemption-history migration on startup; no manual database migration is required.
- Browser-based registration handles proof-of-work challenges automatically. Custom clients that call the registration API directly must request, solve, and submit a registration challenge before creating an account.
- Operational metrics remain disabled after upgrade until explicitly enabled by an administrator.
- Go consumers using the previous module path must update imports to
github.com/MapleMapleCat/Grok_Search_Mcp. - The Docker image is published as
maplemaplecat/grok-search-mcp:v0.2.1.
Included commits
2e1dddcfeat(store): improve SQLite write-path throughput and expose contention metrics.bab25c1refactor(grok): reduce SSE parsing allocations while preserving raw responses.7bfd571fix(grok): limit upstream error response bodies.9a193e0fix(ratelimit): harden forwarded IP parsing and reduce limiter contention.cd72d68feat(panel): gate operational metrics behind an administrator setting.50673a0refactor(project): align the Go module path with the GitHub repository.9286570fix(auth): prevent username disclosure during invite registration.e2d62bdfix(auth): enforce registration mode atomically.b0044b3feat(auth): require signed, single-use proof of work for registration.4fc8bc1feat(invites): add invite redemption audit visibility and panel consistency fixes.1e3abc0chore(release): prepare version and image references for v0.2.1.
Assets
grok-search-mcp_0.2.1_linux_amd64.tar.gz: statically linked Linux amd64 binary, README, and license.grok-search-mcp_0.2.1_linux_arm64.tar.gz: statically linked Linux arm64 binary, README, and license.checksums.txt: SHA-256 checksums for both archives.
Verify downloaded assets with:
sha256sum -c checksums.txtFull changelog
v0.2.0
Database incompatibility / 数据库不兼容
Warning
v0.2.0 is not database-compatible with v0.1.0. Do not start v0.2.0 with an existing v0.1.0 SQLite database.
v0.2.0 与 v0.1.0 的数据库不兼容。请勿让 v0.2.0 直接使用现有的 v0.1.0 SQLite 数据库。
Before upgrading, stop v0.1.0 and back up its database file or Docker volume. Start v0.2.0 with a new database path or volume, then recreate or manually migrate the required users, tiers, API keys, invite codes, and runtime settings. In-place upgrades and downgrades using the same database are not supported.
升级前请先停止 v0.1.0,并备份数据库文件或 Docker 数据卷。请为 v0.2.0 使用新的数据库路径或数据卷,再按需重新创建或手动迁移用户、等级、API Key、邀请码及运行时设置。不支持在同一个数据库上直接升级或降级。
Project naming
- Unified the project, executable, MCP implementation, panel, Docker Compose service, and documentation under the
grok-search-mcpname. - Renamed release archives and their contained executable from
grok-mcptogrok-search-mcp. - Published the multi-platform Docker image as
maplemaplecat/grok-search-mcp:v0.2.0. - Renamed the default database file to
grok-search-mcp.dband the Compose volume togrok-search-mcp-data. - Added
GROK_SEARCH_MCP_*environment variables while retaining the formerGROK_MCP_*names as compatibility aliases.
Highlights
- Added bounded keyset pagination throughout the user and administration panels, configurable usage page sizes, lazy debug-body loading, and cancellation of obsolete requests so large histories no longer cause unbounded database or DOM work.
- Added live global and per-user search concurrency controls, persisted runtime settings, and limiter reuse to reduce contention while allowing administrators to tune active search capacity without restarting the service.
- Improved long-running search reliability with incremental SSE parsing, bounded stream resources, phase-specific connection and TLS timeouts, larger reusable connection pools, and safe transport replacement.
- Reworked SQLite persistence with separate read/write pools, indexed ownership and usage queries, asynchronous usage accounting, retention rollups, maintenance operations, bounded debug capture storage, and clearer responsibility-based modules.
- Improved authentication scalability with complete cached snapshots and a sharded, bounded LRU resolver cache.
- Improved panel performance and maintainability through batched tier loading, domain-specific handlers and event controllers, semantic stylesheet modules, and shared pagination/runtime-settings helpers.
- Tightened data integrity for invite-code creator references and removed obsolete full-list and legacy compatibility paths.
- Added release-triggered multi-platform Docker publishing and pinned patched Go toolchain and runtime images.
Deployment notes
- Search concurrency and other supported runtime settings can be updated from the administration panel without restarting.
- The listen address, database path, JWT secret, and source-IP RPM settings remain startup-only configuration.
- Internet-facing deployments should continue to place the plain-HTTP service behind a trusted HTTPS reverse proxy or load balancer.
- Docker image:
maplemaplecat/grok-search-mcp:v0.2.0.
Assets
grok-search-mcp_0.2.0_linux_amd64.tar.gz: statically linked Linux amd64 binary, README, and license.grok-search-mcp_0.2.0_linux_arm64.tar.gz: statically linked Linux arm64 binary, README, and license.checksums.txt: SHA-256 checksums for both archives.
Verify downloaded assets from the same directory with:
sha256sum -c checksums.txtFull changelog
v0.1.0
Highlights
- Exposes Grok real-time web search, X/Twitter search, and model discovery through a Streamable HTTP MCP endpoint.
- Supports CPA upstream integrations through OpenAI Responses, OpenAI Chat Completions, and Anthropic Messages protocols.
- Includes per-user MCP API keys, tier-based rate limits and monthly quotas, usage tracking, invite-based registration, and an embedded administration panel.
- Persists service data and runtime settings in SQLite and includes a non-root Docker Compose deployment.
Deployment requirements
- Streamable HTTP only; stdio transport is not supported.
- The service listens on plain HTTP and does not terminate TLS. Internet-facing deployments should use a trusted HTTPS reverse proxy or load balancer.
- This is a prerelease. Validate configuration and backup SQLite data before production deployment.
Assets
grok-mcp_0.1.0_linux_amd64.tar.gz: statically linked Linux amd64 binary, README, and license.grok-mcp_0.1.0_linux_arm64.tar.gz: statically linked Linux arm64 binary, README, and license.checksums.txt: SHA-256 checksums for both archives.
Verify downloaded assets with:
sha256sum -c checksums.txt