MCP tools/list fetched as a single page — tools beyond the first page are silently dropped
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- typescript
- Área
- api
Línea de trabajo
Comienza en packages/opencode/src/mcp/index.ts e inspecciona tanto la ruta estándar de client.listTools() como la ruta de solicitud de listToolsLenient(), prestando atención al manejo de nextCursor. Añade una prueba de tools/list de varias páginas que verifique que las herramientas de cada página se recopilan y se conservan en el conjunto de herramientas registradas y en la caché.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
The MCP client retrieves a server's tool list with a single tools/list request and never follows the nextCursor pagination marker. Any server that paginates its tool catalog will have every tool past the first page silently omitted — no error, no warning.
Details
Two code paths are affected, both in packages/opencode/src/mcp/index.ts:
- Standard path —
client.listTools(). In@modelcontextprotocol/sdk@1.26.0this issues a single request and does not loop over pagination:async listTools(params, options) { const result = await this.request({ method: 'tools/list', params }, ListToolsResultSchema, options); ... } - Lenient fallback —
listToolsLenient()callsclient.request({ method: "tools/list", params: {} }, ...), a single request that ignoresnextCursoreven thoughLenientListToolsResultSchemamodels that field.
Because neither path advances the cursor, tools beyond the first page are dropped from the registered tool set and from the tool-list cache.
Impact
Minor→Medium. Only affects servers whose tool catalog is large enough to paginate; most servers return all tools in one page. When it does occur, the failure is silent — affected tools simply never appear.
Suggested fix
- Loop on
nextCursor, concatenatingtools, in both the standard and lenient paths before returning/caching. - Add a test with a multi-page
tools/listresponse to verify all pages are collected.
- Lenguaje dominante
- TypeScript
- Estrellas
- 813
- Forks
- 134
- Merge medio
- 2 d 3 h
- PR fusionados (30 d)
- 65
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de AltimateAI/altimate-code
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
AltimateAI/altimate-code#1359 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
AltimateAI/altimate-code#1323 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
AltimateAI/altimate-code#1288 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
AltimateAI/altimate-code#1285 ·
-
privacy: Altimate Base consent dialog no longer discloses persistent per-installation identifier Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
AltimateAI/altimate-code#1284 ·
Todos los issues de AltimateAI/altimate-code
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
vercel-labs/just-bash#464 ·
-
looksLikeSlug() is ASCII-only, so non-Latin entity slugs (e.g. Korean) skip exact match and collapse Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
TanStack/tanstack.com#1293 ·