Benchmark and improve tool-search ranking with indexed BM25
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 45/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- go
- Ambito
- backend-api-design, search
Direzione di ricerca
Inizia individuando l’implementazione esistente di tool-search del server e analizzando il benchmark del prototipo e i relativi test unitari per l’indicizzazione dei nomi degli strumenti, delle descrizioni, dei nomi dei parametri e delle descrizioni dei parametri. Conferma l’ambito preferito con i maintainer, quindi misura la strategia di ranking selezionata rispetto al benchmark con 49 query e 115 strumenti e riporta la qualità del recupero e la latenza senza regressioni.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the feature or problem you’d like to solve
The GitHub MCP Server already exposes tool discovery/search functionality, but
there is no repeatable benchmark for measuring how reliably natural-language
queries retrieve the intended MCP tool.
As the tool inventory grows, a benchmark would make ranking changes measurable
and help prevent retrieval regressions.
This is separate from host-side deferred tool loading discussed in #1680. The
proposal only concerns ranking inside the server's existing tool-search
implementation.
Proposed solution
Add a hand-labelled benchmark covering natural-language intents across the
server's major toolsets, then compare the current heuristic with an indexed
BM25 implementation.
A prototype benchmark contains 49 queries over 115 unique tools and produced:
| Strategy | Recall@1 | Recall@3 | MRR@10 | Query latency |
|---|---|---|---|---|
| Current heuristic | 71.4% | 81.6% | 0.792 | ~2.25 ms |
| Indexed BM25 | 71.4% | 87.8% | 0.802 | ~34 µs |
| Hybrid RRF | 73.5% | 87.8% | 0.823 | ~2.38 ms |
Indexed BM25 improved Recall@3 by 6.1 percentage points and was approximately
66x faster per query. The hybrid produced the strongest ranking quality.
Before submitting a PR, I would appreciate maintainer guidance on the preferred
scope:
- Benchmark harness only
- Benchmark plus indexed BM25
- Benchmark plus a hybrid ranking experiment
Example prompts or workflows
- "Find open issues assigned to me across repositories"
- "Read the files, reviews, and diff for a pull request"
- "Download logs for a failed workflow job"
- "Find exposed secrets detected in a repository"
- "Add an issue to a GitHub project"
Additional context
The benchmark uses the complete current tool inventory and validates that every
labelled relevant tool exists. The prototype includes unit tests for indexing
tool names, descriptions, parameter names, and parameter descriptions.
- Lingua principale
- Go
- Stelle
- 33.1k
- Fork
- 5k
- Merge medio
- 2g 15h
- PR unite (30g)
- 27
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di github/github-mcp-server
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
github/github-mcp-server#3235 ·
-
enhancement
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
github/github-mcp-server#3042 · 2 commenti ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
github/github-mcp-server#3032 · 1 reazione ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
github/github-mcp-server#2803 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
github/github-mcp-server#2740 ·
Tutte le issue di github/github-mcp-server
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
TheManticoreProject/Manticore#1383 ·
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
modelcontextprotocol/registry#1654 ·