Benchmark and improve tool-search ranking with indexed BM25

Aperta
#2,996 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

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

enhancement request ai review
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:

  1. Benchmark harness only
  2. Benchmark plus indexed BM25
  3. 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di github/github-mcp-server

Tutte le issue di github/github-mcp-server

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.