Skip to content

feat(server): enterprise concurrent access — SSE/HTTP transport, rate limiting, metrics#89

Merged
lyonzin merged 3 commits into
masterfrom
feat/88-enterprise-transport
Jun 9, 2026
Merged

feat(server): enterprise concurrent access — SSE/HTTP transport, rate limiting, metrics#89
lyonzin merged 3 commits into
masterfrom
feat/88-enterprise-transport

Conversation

@lyonzin

@lyonzin lyonzin commented Jun 9, 2026

Copy link
Copy Markdown
Owner

Summary

Enterprise-grade concurrent access for knowledge-rag. 1 server serves N clients via SSE/HTTP transport.

New Features

  • SSE/HTTP transport: server.transport: "sse" or --transport sse CLI
  • Thread-safe shared state: QueryCache lock, BM25 build lock, orchestrator double-checked locking, ChromaDB WAL mode
  • Rate limiting: Optional sliding-window counter (disabled by default)
  • Prometheus metrics: Optional /metrics endpoint (disabled by default)
  • 12 tools instrumented: @rate_limited + @instrument decorators (zero-cost when disabled)

Config

server:
  transport: "sse"
  host: "127.0.0.1"
  port: 8179
  rate_limit:
    enabled: false
  metrics:
    enabled: false

Migration

  • Default transport remains stdio — zero breaking changes for existing users
  • SSE mode: pip install knowledge-rag[server] + set server.transport: "sse"
  • Version bump: 3.9.1 → 4.0.0

Files changed

  • mcp_server/config.py — 9 new server config fields
  • mcp_server/server.py — transport switching, thread safety, decorator application
  • mcp_server/ratelimit.py — NEW: sliding window rate limiter
  • mcp_server/metrics.py — NEW: Prometheus metrics collector
  • config.example.yaml — server section documentation
  • pyproject.toml — version 4.0.0, mcp>=1.6.0, [server] optional dep
  • README.md — v4.0.0 changelog

Closes #88

lyonzin added 2 commits June 9, 2026 13:35
… limiting, metrics (#88)

- Add server: config section (transport, host, port, auth, rate_limit, metrics)
- Support SSE and streamable-http transport via FastMCP (--transport CLI override)
- Thread-safe QueryCache, BM25 build lock, orchestrator double-checked locking
- ChromaDB WAL mode for concurrent reads in SSE/HTTP mode
- Optional rate limiting (sliding-window, decorator-based, disabled by default)
- Optional Prometheus metrics endpoint (disabled by default)
- All 12 MCP tools instrumented with @rate_limited + @Instrument decorators
- Auto-enable single-instance lock in SSE/HTTP mode
- New optional dependency: pip install knowledge-rag[server]
- Version bump: 3.9.1 -> 4.0.0

Closes #88
@socket-security

socket-security Bot commented Jun 9, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedpypi/​uvicorn@​0.49.098100100100100

View full report

@lyonzin lyonzin added the skip-perf-gate Bypass performance regression gate (use only for release PRs or measurement-noise regressions) label Jun 9, 2026
@lyonzin lyonzin merged commit 4168c71 into master Jun 9, 2026
36 checks passed
@lyonzin lyonzin deleted the feat/88-enterprise-transport branch June 9, 2026 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-perf-gate Bypass performance regression gate (use only for release PRs or measurement-noise regressions)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Enterprise concurrent access — SSE/HTTP transport, rate limiting, metrics, auth (v4.0.0)

1 participant