Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Feature Request: session-scoped tool inventory API (list MCP-discovered tools loaded into a session)

Abierto
#1,143 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Tranquilo
Stack tecnológico
csharp, go, python, typescript

Línea de trabajo

Empieza leyendo la implementación de createSessionRpc y los wrappers existentes session.rpc.{mcp,skills,plugins,extensions}.list(). Revisa CONTRIBUTING para conocer los requisitos de paridad entre Python, Go y .NET, y revisa api.schema.json aunque el controlador RPC del servidor esté fuera de este repositorio. El trabajo estará terminado cuando los bindings de SDK compatibles expongan un resultado coherente de tools.list con ámbito de sesión, sujeto a que el RPC interno esté disponible.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

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_loaded event fires once on session startup but carries the same server-status-only payload — no tool list.
  • session.mcp_server_status_changed carries { serverName, status } only.
  • session.tools_updated event 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/list probe.
  • 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

Lenguaje dominante
Java
Estrellas
10.5k
Forks
1.5k
Merge medio
1 d 9 h
PR fusionados (30 d)
130

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de github/copilot-sdk

Todos los issues de github/copilot-sdk

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.