AltimateAI / AltimateAI/altimate-code

MCP tools/list fetched as a single page — tools beyond the first page are silently dropped

Aberta
#986 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
TypeScript
Estrelas
811
Forks
134
Merge médio
3d 2h
PRs com merge (30d)
50

Descrição

## 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.0` this issues a single request and does not loop over pagination:
```js
async listTools(params, options) {
const result = await this.request({ method: 'tools/list', params }, ListToolsResultSchema, options);
...
}
```
- **Lenient fallback** — `listToolsLenient()` calls `client.request({ method: "tools/list", params: {} }, ...)`, a single request that ignores `nextCursor` even though `LenientListToolsResultSchema` models 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`, concatenating `tools`, in both the standard and lenient paths before returning/caching.
- Add a test with a multi-page `tools/list` response to verify all pages are collected.

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.