Feature Request: session-scoped tool inventory API (list MCP-discovered tools loaded into a session)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- csharp, go, python, typescript
- Ambito
- api, backend-api-design, developer-experience
Direzione di ricerca
Inizia leggendo l’implementazione di createSessionRpc e i wrapper esistenti session.rpc.{mcp,skills,plugins,extensions}.list(). Controlla CONTRIBUTING per i requisiti di parità tra Python, Go e .NET e consulta api.schema.json anche se il gestore RPC lato server si trova al di fuori di questo repository. Il lavoro è completato quando i binding SDK supportati espongono un risultato coerente di tools.list con ambito di sessione, subordinatamente alla disponibilità dell’RPC interno.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
No public API enumerates the tools loaded into a session — built-ins merged with MCP-discovered tools from SessionConfig.mcpServers. Closest existing surfaces don't cover it:
client.rpc.tools.list({ model? })is server-scoped — built-ins only, no session-loaded MCP tools.session.rpc.mcp.list()returns server connection status (name,status,error?,source?), not tools or counts per server.session.mcp_servers_loadedevent fires once on session startup but carries the same server-status-only payload — no tool list.session.mcp_server_status_changedcarries{ serverName, status }only.session.tools_updatedevent payload is just{ model: string }.
A session can report mcp.status: "connected" and still expose zero tools (wrong CLI flags, version mismatch, schema error) — there's no SDK-side way to detect this.
Why it's needed
- Operational visibility. Confirm before the first turn that an MCP server actually contributed the expected tools, not just that its process started.
- Diagnostic UIs. Surface per-server tool counts to operators of BYOK / multi-MCP deployments.
- Test assertions. Verify a given MCP wiring exposes the expected tool set without spawning a parallel
tools/listprobe. - Parity with prior MCP clients. Other MCP integrations (e.g.
@ai-sdk/mcp) expose discovered tools as an enumerable map; consumers migrating to copilot-sdk lose this.
Contribution scope
api.schema.json ships from the closed @github/copilot npm package (the public github/copilot-cli repo is just the installer). The server-side RPC handler must live in the internal CLI — external contributors can only touch SDK bindings/wrappers in this repo, not the underlying RPC implementation.
Proposed solution
Add a session-scoped tools.list RPC, mirroring the existing client.rpc.tools.list() but reflecting per-session config:
// in createSessionRpc:
tools: {
list: async (): Promise<SessionToolsListResult> =>
connection.sendRequest("session.tools.list", { sessionId }),
handlePendingToolCall: /* unchanged */,
}
export interface SessionToolsListResult {
tools: Tool[]; // namespacedName populated for MCP tools (e.g. "playwright/browser_navigate")
}
Returns built-ins (post-excludedTools/availableTools filtering) + MCP-contributed tools. Consistent with existing session.rpc.{mcp,skills,plugins,extensions}.list() shape. Parity in Python/Go/.NET per CONTRIBUTING.
A leaner alternative: enrich McpServer with toolCount?: number and/or tools?: string[]. Less consistent with the existing pattern but lighter.
Related
- #944 — same underlying gap, surfaced as a question.
- #735 — adjacent (manipulating session tool set without teardown).
Environment
@github/copilot-sdk@0.3.0
- Lingua principale
- Java
- Stelle
- 10.5k
- Fork
- 1.5k
- Merge medio
- 1g 9h
- PR unite (30g)
- 130
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/copilot-sdk
-
agentic-workflows
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
github/copilot-sdk#2760 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
github/copilot-sdk#2759 ·
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
github/copilot-sdk#2758 ·
-
agentic-workflows
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
github/copilot-sdk#2709 · 1 commento ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
github/copilot-sdk#2673 ·
Tutte le issue di github/copilot-sdk
Issue simili
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Apertaarea/plugin
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
kestra-io/plugin-kestra#190 ·
-
litertlm-android AAR ships no consumer ProGuard rules → "mid == null" SIGABRT in minified apps Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
google-ai-edge/LiteRT-LM#3739 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
integra-team-red/meet-map#249 ·
-
[Studio][Bug] Cancelled create-user dialog keeps the password and admin switch for the next attempt Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
apache/rocketmq-dashboard#5064 ·