MCP ask_codebase rejects explicit languageModel: getLanguageModelKey includes displayName which the MCP schema doesn't expose
Les mainteneurs répondent en général sous 1 jour
@pranav718 y travaille déjà.
Depuis le 31/8/2026.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 76/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Calme
- Stack technique
- typescript
- Domaine
- api
Piste de recherche
Commencez dans packages/web/src/features/mcp/askCodebase.ts et examinez comment le languageModel demandé est mis en correspondance avec les modèles configurés ; comparez ce chemin avec getLanguageModelKey dans packages/web/src/features/chat/utils.ts. Le travail est terminé lorsque ask_codebase accepte la forme {provider, model} du schéma pour les modèles configurés, tout en préservant le comportement par défaut existant et toute autre utilisation de getLanguageModelKey.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
When calling the MCP tool ask_codebase with an explicit languageModel parameter, the request is rejected with 400 Language model '<provider>/<model>' is not configured. — even when list_language_models clearly shows that exact model configured.
Version
- Sourcebot
v4.16.11(Helm chart0.1.76) - MCP client
@sourcebot/[email protected](vianpx -y @sourcebot/mcp@latest)
Reproduction
Config in sourcebot.json / helm values sourcebot.config:
models:
- provider: anthropic
model: claude-sonnet-4-6
displayName: Claude Sonnet 4.6
token:
env: ANTHROPIC_API_KEY
- provider: anthropic
model: claude-opus-4-7
displayName: Claude Opus 4.7 (slow, highest quality)
token:
env: ANTHROPIC_API_KEY
- Call
list_language_modelsvia MCP — returns both models as expected:
[
{"provider":"anthropic","model":"claude-sonnet-4-6","displayName":"Claude Sonnet 4.6"},
{"provider":"anthropic","model":"claude-opus-4-7","displayName":"Claude Opus 4.7 (slow, highest quality)"}
]
- Call
ask_codebasewith an explicit language model of the exact shape the tool's JSON schema requires ({provider, model}):
{
"query": "...",
"languageModel": {"provider": "anthropic", "model": "claude-opus-4-7"}
}
Result:
{"statusCode":400,"errorCode":"INVALID_REQUEST_BODY","message":"Language model 'anthropic/claude-opus-4-7' is not configured."}
Same happens for claude-sonnet-4-6 — every explicit model is rejected, regardless of which one.
ask_codebase without languageModel works fine — the implicit default (first model in config) is used correctly. So the failure is specifically in the explicit-selection path.
Root cause
getLanguageModelKey in packages/web/src/features/chat/utils.ts builds the match key from provider + model + displayName:
export const getLanguageModelKey = (model: LanguageModelInfo) => {
return `${model.provider}-${model.model}-${model.displayName}`;
}
askCodebase uses this function to match the requested model against configured models in packages/web/src/features/mcp/askCodebase.ts:
const matchingModel = configuredModels.find(
(m) => getLanguageModelKey(m) === getLanguageModelKey(requestedLanguageModel)
);
The MCP JSON schema for ask_codebase.languageModel only requires {provider, model} — displayName is not part of the schema and clients cannot provide it:
languageModel: {
provider: (required),
model: (required)
}
So at match time:
- Configured entry key:
anthropic-claude-opus-4-7-Claude Opus 4.7 (slow, highest quality) - Requested entry key:
anthropic-claude-opus-4-7-undefined
Keys never match → 400 for any explicit selection.
Suggested fix
Either:
- Match on provider+model only in
askCodebase.ts(simplest —displayNameis a cosmetic label, not an identity key):const matchingModel = configuredModels.find( (m) => m.provider === requestedLanguageModel.provider && m.model === requestedLanguageModel.model ); - Or drop
displayNamefromgetLanguageModelKeyso the match is consistent with the externally-visible identity.
Option 1 is the minimal change that keeps getLanguageModelKey untouched if it is used elsewhere where displayName matters.
Impact
- MCP clients cannot route a specific question to a non-default model — the dropdown selection in the Web UI works because the UI presumably submits the full
LanguageModelInfo(includingdisplayName), but the MCP tool schema intentionally does not exposedisplayName, so there is no workaround. - Defaulting to the first model in config still works, so this is not a total outage, but it removes a documented MCP capability.
Happy to open a PR if helpful.
- Langage dominant
- TypeScript
- Étoiles
- 3.9k
- Forks
- 374
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 48
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de sourcebot-dev/sourcebot
-
[bug] Search result hydration performs duplicate repository lookups within the same chunkPeut-être pris @dipeshbabu l’a pris il y a 16 jours. Ouvertebug triage needed
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
sourcebot-dev/sourcebot#1681 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Linux ctags build instructions in CONTRIBUTING.md are missing build dependenciesPeut-être pris @The-AarushiSingh l’a pris il y a 22 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
sourcebot-dev/sourcebot#1633 ·
Les mainteneurs répondent en général sous 1 jour
-
[FR] Support file-based and Azure Key Vault token sources alongside env and googleCloudSecretPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 64/100
sourcebot-dev/sourcebot#1704 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[bug] Local repositories with a space or non-ASCII character in the path cannot be indexedPeut-être pris @breken-ai l’a pris il y a 13 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
sourcebot-dev/sourcebot#1689 ·
Les mainteneurs répondent en général sous 1 jour
-
[bug] Escaped quotes in a quoted keyword search are searched with the backslashesPeut-être pris @breken-ai l’a pris il y a 13 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
sourcebot-dev/sourcebot#1687 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de sourcebot-dev/sourcebot
Issues similaires
-
Dependencies view: `getParent` loops forever on untitled documents, extension host runs out of memoryPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 Moins d'une heure Accessibilité débutants 82/100
awslabs/visual-asset-management-system#413 ·
Les mainteneurs répondent en général sous 1 jour
-
bug confirmed perf
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
videojs/video.js#9400 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug pending triage scope/agent
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
good first issue hacktoberfest
Difficulté 2/5 Une demi-journée Accessibilité débutants 70/100
HelpCode-ai/anythingmcp#996 ·
Les mainteneurs répondent en général sous 1 jour