Labsco
MCP SERVER

Hybrid semantic search across a set of GitHub repositories — dense embeddings fused with BM25, so "where do we publish order events?" and a bare symbol name both work.

Code Intelligence & Repository Indexing
Summary
Two vectors per symbol, because one query style is never enough.

Dense embeddings find "where do we publish order events"; BM25 over camelCase and snake_case subwords finds `PlaceOrderRequest`. Running both and fusing them is why neither question fails. Indexing skips files whose git blob SHA is unchanged, and deletes symbols for files that vanished — but that same change detection means a newly added index field needs a forced reindex, which re-embeds everything. One `GITHUB_TOKEN` reads every repository you index, which the README flags directly.

What it is

An MCP server that indexes code and git history from GitHub repositories you list. It parses symbols with Tree-sitter, stores two vectors per symbol — a dense semantic one and a BM25 sparse one keyed on code identifier tokens — and fuses the results with Reciprocal Rank Fusion so both query styles land.

What you get
  • Hybrid search by query, filterable by language, service and symbol type — `search_code`
  • A symbol looked up by name, exact or by case-insensitive token match — `find_symbol`; and code referencing it, with the definition excluded — `find_usages`
  • The full source of a file, or one symbol inside it, fetched straight from GitHub — `get_code_context`
  • Git history indexed and searched in natural language, with full commit detail including changed files and diffs — `index_history`, `search_commits`, `get_commit`
  • Indexing triggered for one service or all, incremental by default — `reindex`; plus `list_indexed_services` and `index_stats`
  • Two prompts that walk a client through a write-up — `service_overview` for one service, `system_design_overview` for the whole system, with Mermaid diagrams
  • Framework-aware parsing across Go, Java, Python, TypeScript/JavaScript, Rust, C#, C, C++, Ruby, PHP, Kotlin, Scala, Swift, Dart, Bash, SQL and more — Spring stereotypes and HTTP routes, FastAPI/Pydantic, ASP.NET, Rails, Laravel/Symfony, React/SwiftUI/Flutter widgets
Requirements

Python 3.12+, Docker and a GitHub token — a fine-grained PAT with Contents: read on the target repositories is enough, though the README recommends an org-wide GitHub App if repositories self-register. `uv sync`, copy `.env.example` to `.env` and set `GITHUB_TOKEN`. Repositories go in `config.yaml` with an optional `github_ref`, `root` and `exclude`, or are registered on the fly through `POST /reindex`. Start with `make docker-up-jina` for local keyless Jina embeddings, or set `EMBEDDINGS_PROVIDER` to `voyage`, `openai` or `ollama` and use `make docker-up`. Connect with `claude mcp add --transport http semcode http://localhost:8090/mcp`, or over stdio. Package `semcode` 1.1.0, MIT licensed.

Setup effort

One command plus a key — claude mcp add --transport http semcode http://localhost:8090/mcp, then supply credentials